opensrc CLI
CLI и скилл от Vercel Labs: по имени пакета из npm, PyPI, crates.io или GitHub клонирует исходники нужной версии и отдает агенту путь к ним
- 3 027 ★ репозитория
- Последний коммит
- Apache-2.0
Расширенный доступ
Почему такой уровень
- Утилита ходит в сеть к реестрам и репозиториям и клонирует чужой код на ваш диск
- Скачанные исходники лежат в ~/.opensrc, и агент может читать и запускать из них файлы, поэтому не выполняйте чужой код без проверки
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add cli/opensrcОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Утилита ходит в сеть к реестрам и репозиториям и клонирует чужой код на ваш диск
- Скачанные исходники лежат в ~/.opensrc, и агент может читать и запускать из них файлы, поэтому не выполняйте чужой код без проверки
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
opensrc — утилита, которая достает исходный код зависимости, чтобы агент читал реализацию, а не только типы и документацию. Команда `opensrc path zod` находит пакет в реестре, делает неглубокий клон на теге нужной версии, кэширует его в каталоге ~/.opensrc и печатает абсолютный путь. Прогресс идет в stderr, путь в stdout, поэтому результат подставляется прямо в другие команды: `rg "parse" $(opensrc path zod)` или `cat $(opensrc path zod)/src/types.ts`. Поддерживаются npm (по умолчанию), PyPI, crates.io, а также репозитории GitHub, GitLab и Bitbucket. Версии npm-пакетов утилита берет из файлов блокировки проекта, для остальных реестров можно указать версию через @, а для репозитория ветку или коммит через # или @. Кроме `path` есть команды `fetch` для предзагрузки, `list`, `remove` и `clean` с фильтрами по реестрам. В репозитории лежит и скилл opensrc с триггерами «прочитай исходники» и «как это устроено внутри».
Для кого. Для разработчиков, чьи агенты спотыкаются на поведении библиотеки, которого не видно по типам и документации.
Подходит, если
- Нужно понять, как библиотека обрабатывает граничный случай, которого нет в документации
- Агент гадает о работе функции, а проверить ее можно по коду нужной версии зависимости
- Нужны тесты или примеры из чужого репозитория как образец для собственного кода
- Требуется найти реализацию в пакете Python или Rust, например `opensrc path pypi:requests`
- Нужна одна команда, чтобы получить исходники сразу нескольких пакетов, например `opensrc path zod react next`
Не подходит, если
- Вопрос решается документацией или типами: скилл советует не тянуть исходники для простого использования API
- Нужен поиск по коду внутри GitHub без загрузки: утилита клонирует репозиторий на диск
- Нет места на диске под кэш или доступа к реестрам и GitHub из сети
- Нужна проверка безопасности пакетов: утилита только скачивает исходники и ничего не анализирует
Пример запроса к агенту
Достань исходники zod через opensrc и найди, где в ZodError собирается список ошибокОграничения
Утилита поставляется как нативный бинарник на Rust, устанавливается глобально через npm. Проект помечен как эксперимент Vercel Labs, поэтому команды и поведение могут меняться. Исходники скачиваются из реестров и с GitHub, GitLab и Bitbucket, нужен доступ к ним из вашей сети. Кэш лежит в ~/.opensrc, путь меняет переменная OPENSRC_HOME, а размер кэша растет вместе с числом пакетов. Скилл разрешает агенту только команды `opensrc`.
Как отключить. Удалите утилиту командой `npm uninstall -g opensrc`, а кэш очистите командой `opensrc clean` до удаления или вручную удалите каталог ~/.opensrc. Скилл уберите из каталога скиллов агента.
Частые вопросы
Как поставить opensrc?
Выполните `npm install -g opensrc`. Глобальная установка дает нативный бинарник на Rust без накладных расходов Node.js при каждом запуске. Скилл лежит в папке skills/opensrc репозитория.
Откуда opensrc берет версию пакета?
Для npm он определяет установленную версию по package-lock.json, pnpm-lock.yaml или yarn.lock. Параметр `--cwd` указывает другой проект. Для PyPI и crates.io берется последняя версия, если вы не задали свою, например `pypi:flask@3.0.0`.
Какие реестры поддерживает opensrc?
npm без префикса или с npm:, PyPI с префиксами pypi:, pip: или python:, crates.io с crates:, cargo: или rust:. Также принимаются репозитории GitHub в виде owner/repo, GitLab и Bitbucket с префиксами.
Где хранятся скачанные исходники?
В каталоге ~/.opensrc, путь меняется переменной OPENSRC_HOME. Содержимое показывает `opensrc list`, удаляют его `opensrc remove` и `opensrc clean`, у последней есть фильтры --npm, --pypi, --crates, --packages и --repos.
Для чего нужен скилл opensrc?
Он учит агента вызывать `opensrc path` по запросам вроде «покажи исходники пакета» и «как это устроено внутри». Скилл ограничен командами opensrc и напоминает не тянуть код, когда хватает документации.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыMCP-сервер и CLI для исследования кода: поиск и разбор по вашему проекту и по всему GitHub с экономией токенов
CLI и плагин для ревью кода агентом: читает git diff и пишет замечания по строкам с учетом контекста
Дает агенту разбираться в вашем репозитории: индексирует код и отвечает на вопросы о нем в Claude Code, Cursor, Codex, Windsurf и других
Скилл ищет на GitHub уже проверенный путь решения инженерной задачи и адаптирует его к вашему коду минимальной правкой
CLI на Rust для TypeScript и JavaScript: мертвый код, дубликаты, циклы, сложность и границы архитектуры по одному графу, есть MCP-сервер и скиллы
Кодинг-агент на Rust для терминала и CI под модели DeepSeek: читает код, правит файлы и запускает команды
Сравнение с похожими
Записи с тем же главным запросом: чем они отличаются.
| Запись | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| opensrc (эта запись) | да | 3 027 | ||
| Context7 | да | API-ключ | 63 873 | отдает агенту актуальную документацию библиотек, а не исходный код |
| Context Hub | нет | 13 986 | CLI с проверенной документацией API по версиям и языкам |
Коротко о README
Корневое описание в одной фразе называет цель: дать агентам доступ к исходникам любого пакета. Быстрый старт показывает установку и три примера поиска в исходниках. Таблица делит репозиторий на CLI и сайт документации, а раздел разработки описывает монорепозиторий на Turborepo с CLI на Rust и сайтом на Next.js.
Бейдж для README
Исходный SKILL.md
--- name: opensrc description: Fetch dependency source code to give AI agents deeper implementation context. Use when the agent needs to understand how a library works internally, read source code for a package, fetch implementation details for a dependency, or explore how an npm/PyPI/crates.io package is built. Triggers include "fetch source for", "read the source of", "how does X work internally", "get the implementation of", "opensrc path", or any task requiring access to dependency source code beyond types and docs. allowed-tools: Bash(opensrc:*) --- # Source Code Fetching with opensrc Fetches dependency source code so agents can read implementations, not just types. Clones repositories at the correct version tag and caches them globally at `~/.opensrc/`. ## Core Pattern ```bash rg "parse" $(opensrc path zod) cat $(opensrc path zod)/src/types.ts find $(opensrc path zod) -name "*.test.ts" ``` `opensrc path <pkg>` prints the absolute path to cached source. If not cached, it fetches automatically. Progress goes to stderr, path to stdout, so `$(opensrc path ...)` works in subshells. ## Fetching Source Code ```bash opensrc path zod opensrc path pypi:requests opensrc path crates:serde opensrc path facebook/react # Multiple packages at once opensrc path zod react next opensrc path pypi:requests pypi:flask opensrc path crates:serde crates:tokio # Specific versions opensrc path zod@3.22.0 opensrc path pypi:flask@3.0.0 opensrc path owner/repo@v1.0.0 opensrc path owner/repo#main ``` ### Version Resolution For npm packages, opensrc auto-detects the installed version from lockfiles (`package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`). Use `--cwd` to resolve from a different project: ```bash