library-skills
- title
- library-skills
- type
- toolbox
- summary
- CLI, которая находит навыки агентов внутри зависимостей и связывает их с проектом через symlink'и
- tags
- python, typescript, skills, ai-agents, cli
- language
- Python (and TypeScript)
- license
- MIT
- created
- 2026-05-03
- updated
- 2026-05-03
- lang
- ru
- translation_of
- library-skills
- source_updated
- 2026-05-03
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
CLI от Себастьяна Рамиреса (tiangolo, автор FastAPI), устанавливающая в текущий проект навыки агентов, встроенные в библиотеки. Авторы библиотек поставляют директорию .agents/skills/<name>/SKILL.md прямо внутри своего пакета; library-skills сканирует зависимости, находит встроенные навыки и создаёт на них symlink'и в директории .agents/ вашего проекта. Благодаря этому обновления библиотек автоматически подтягивают актуальные навыки.
Позиционирование: это распределённая модель распространения навыков, где они привязаны к конкретной версии библиотеки. Сравните с моделью централизованного реестра - npx skills add <repo> (используется в impeccable и agent-skill-linter) - и с моделью единого каталога под конкретный инструмент (CLI-Hub у CLI-Anything). Все три сосуществуют; library-skills решает проблему рассинхронизации версий, с которой остальные две не справляются.
Какую проблему это решает
LLM обучаются на устаревшем коде, включая устаревшие паттерны использования библиотек. Когда в библиотеке появляется новая возможность или меняется архитектурный подход, агент об этом не знает - он продолжает писать код для FastAPI 2026 года по лекалам 2024 года. Автор библиотеки не может дообучить чужую модель, но может положить SKILL.md внутрь своего пакета. Если агент читает инструкцию "как работать с FastAPI" прямо из установленного пакета, навык гарантированно совпадает с используемой версией библиотеки.
Логика документации tiangolo: агенты не должны гадать о циклах устаревания API или придумывать несуществующие методы; авторам библиотек стоит поставлять руководство пользователя для агентов вместе с руководством для людей.
Как это работает
$ uvx library-skills # Python
$ npx library-skills # Node.js
CLI выполняет следующие шаги:
- Читает
pyproject.tomlи/илиpackage.json, чтобы определить прямые зависимости. - Сканирует окружение установки (
.venvдля Python,node_modulesдля Node.js, учитывает перенаправления.venvпо PEP 832). - Ищет путь
.agents/skills/<name>/SKILL.mdвнутри каждого установленного пакета. - Выводит список найденных навыков и предлагает выбрать нужные для установки.
- Создаёт символические ссылки в директории
.agents/проекта, указывающие на файлы SKILL.md внутри пакетов.
Выбор symlink'ов вместо копирования принципиален - именно это гарантирует постоянную актуальность навыков. Флаг --copy задокументирован как запасной вариант для систем без полноценной поддержки symlink'ов (в основном для Windows).
И Python-, и TypeScript-версии CLI умеют сканировать оба окружения: не требуется ставить Node, чтобы использовать навыки из Node-пакетов, и наоборот.
Со стороны автора библиотеки
Библиотека подключается к механизму простым добавлением SKILL.md в публикуемый пакет:
fastapi/.agents/skills/fastapi/SKILL.md
@tanstack/react-router/.agents/skills/tanstack-router/SKILL.md
После установки пакет оказывается по пути:
.venv/lib/python3.14/site-packages/fastapi/.agents/skills/fastapi/SKILL.md
node_modules/@tanstack/react-router/.agents/skills/tanstack-router/SKILL.md
Принято добавлять имя библиотеки в качестве префикса к имени навыка, чтобы избегать коллизий. Используется стандартный формат Agent Skills с agentskills.io - так что библиотека может одновременно публиковать навыки отдельно через npx skills add, а инструменты вроде agent-skill-linter валидируют тот же самый формат SKILL.md. Это сделано намеренно: library-skills - не конкурирующий формат, а дополнительный канал распространения поверх существующего.
Совместимость со средами исполнения
Директория .agents/ - это общее соглашение, принятое (согласно документации) в Codex, Cursor, GitHub Copilot, Pi, Antigravity, OpenCode. Claude Code директорию .agents/ игнорирует и смотрит только в .claude/skills/. Для этого предусмотрен флаг --claude:
$ uvx library-skills --claude
$ npx library-skills --claude
С ним symlink'и создаются внутри .claude/skills/. Обособленное положение Claude Code остаётся источником мелкого трения в экосистеме; скорее всего, со временем это исправят.
Вывод в формате JSON
Команды scan --json и list --json предназначены для автоматизации внутри циклов агента: агент может сам запросить у инструментов доступные и установленные навыки, встроив проверку и установку в свой рабочий процесс. Вывод включает корень проекта, обнаруженное окружение Python, найденный node_modules, список навыков, предупреждения и (для list) статус установки.
Почему это важно
Главный интерес здесь вызывает репутация tiangolo, а не сам код. FastAPI в своё время ввёл в обиход подходы "аннотации типов как валидация" и "автоматическая генерация OpenAPI из сигнатур функций" - эти паттерны повлияли на всю экосистему Python (Pydantic, Litestar и др.). Typer и SQLModel сделали то же самое для удобства CLI и ORM. Предложение tiangolo "авторы библиотек должны поставлять навыки агентов вместе с пакетами" применяет ту же схему к инструментам ИИ. А версионирование через symlink'и - как раз то компактное и точное решение, благодаря которому подобные соглашения обычно приживаются.
Главная точка соприкосновения с остальной экосистемой навыков: в mcp-vs-skills утверждается, что навыки - это знания (переносимые, отвязанные от среды выполнения), а MCP-серверы - это возможности (сервисы с авторизацией и состоянием). Навыки, поставляемые с библиотеками, представляют собой предельный случай знаний: знание распространяется синхронно с артефактом, который оно описывает. Приживётся ли эта практика у других авторов - открытый вопрос; внедрение со стороны самого FastAPI станет главным индикатором.
Статус
- Репозиторий: с 2026-04-26 по настоящее время, 363★ примерно за 1 неделю, MIT
- Две параллельные реализации (
pip install library-skills/npm install library-skills) - Сайт документации: library-skills.io
- CI, тесты, релизы на PyPI и npm - готово к промышленному использованию с первого дня
- Занесено в основной раздел toolbox (без watchlist): bus factor tiangolo "на уровне FastAPI", а сам проект задуман как общее соглашение, а не личный эксперимент
Ограничения
- Только Python и Node: поддержки Go, Rust, Java, .NET нет. Встроенные навыки для модулей Go потребовали бы отдельной CLI; соглашение пока не универсально на этапе поиска.
- Принятие сообществом остаётся под вопросом. Смысл соглашения раскрывается только тогда, когда авторы библиотек действительно добавляют навыки в пакеты. На момент создания заметки ни одна крупная библиотека публично этого не делает; ориентиром служит сам FastAPI.
- Из-за symlink'ов в
.agents/удаление библиотеки должно оставлять битые ссылки, если только CLI их не чистит; логика очистки в пользовательской документации не описана. - Поиск опирается на дерево зависимостей и по умолчанию ограничен прямыми зависимостями - навыки из транзитивных библиотек не подтянутся без явного указания.
Связанные страницы
- mcp-vs-skills - концепция разделения знаний и возможностей; навыки внутри библиотек - знание в чистом виде
- agent-skill-linter - проверяет готовность к публикации файлов в том же формате SKILL.md, удачно дополняет инструмент
- impeccable - использует схему с центральным реестром
npx skills add, которую library-skills дополняет - cli-anything - генерирует навыки для стороннего ПО с GUI (модель централизованного каталога); контрастирует с подходом library-skills, где навыки готовит автор библиотеки
- flue - агентная среда, использующая стандарт
.agents/skills/(туда же пишет library-skills) - features-to-steal-from-npmx - смежные идеи по устройству реестров
Репозиторий
github.com/tiangolo/library-skills · 363★ · MIT · Python + TypeScript · создан 2026-04-26