Skills
Skills
Skill (навык) — это упакованная папка с markdown-файлом, где написано «когда меня применять» и «что делать». AI-агент видит только заголовок и описание, а тело подгружает по требованию — если сам решил, что сейчас нужно, или если пользователь позвал явно.
История
Слово «skill» в контексте AI не изобретение Anthropic. Amazon Alexa запустила Alexa Skills Kit ещё в июне 2015 года — это был SDK, чтобы сторонние разработчики учили Alexa новым командам («Alexa, order me an Uber»). Скилл там — отдельное приложение с триггерной фразой. К 2020 году в каталоге было более 100 000 таких навыков.
Идея «плагин, который сам объявляет, когда его звать» ещё старше. Emacs с 1970-х работает так: пакеты объявляют autoload — Emacs не загружает код, пока не встретит нужную команду. VS Code extensions с 2015 года используют «activation events» — расширение спит, пока не сработает триггер (открытие файла определённого типа, нажатие клавиши). WordPress hooks с 2003 года дают ту же логику для CMS.
Anthropic Agent Skills появились в 2025 году (точный месяц не помню, но это лето-осень 2025). Идея упрощена до предела: никаких SDK, никаких API — просто папка .claude/skills/<name>/ с файлом SKILL.md. В frontmatter — имя и описание, в теле — инструкции на человеческом языке. Модель сама решает, когда открыть файл.
Быстро подхватили и другие:
- Cursor Rules — похожая идея у Cursor IDE, но правила всегда в контексте (нет progressive disclosure).
- Windsurf Rules — то же самое у Codeium/Windsurf.
- OpenAI Custom GPTs (ноябрь 2023) — родственная концепция, но онлайн, в веб-интерфейсе ChatGPT.
Если смотреть широко — это старый паттерн «self-describing plugin» (самоописывающийся плагин), который встречается везде, где есть расширяемая система. Anthropic только назвал его для AI-агентов узнаваемым словом.
Что это такое
Skill — это папка с одним обязательным файлом: SKILL.md. Минимальный пример:
---
name: еженедельный-отчёт
description: Собрать еженедельный отчёт по активности из логов и отправить в почту. Использовать по понедельникам утром.
---
# Инструкция
1. Прочитай логи за последние 7 дней из ~/logs/.
2. Посчитай количество коммитов, PR, инцидентов.
3. Собери markdown-таблицу.
4. Отправь на почту через mailx.
Ключевое разделение:
- Frontmatter — YAML-заголовок с полями name, description, опционально allowed-tools, model. Это то, что агент видит всегда.
- Тело файла — markdown-инструкция. Это то, что агент подгружает только при активации скилла.
Разница фундаментальная. Frontmatter — витрина, тело — кладовая. Витрина маленькая (100 символов на скилл), её могут висеть десятки — контекст модели не забивается. Кладовая большая (тысячи слов, вложенные файлы, примеры кода), но её открывают только когда витрина уже сработала.
Чем skill отличается от MCP-инструмента: MCP (Model Context Protocol) — это протокол вызова внешнего кода, инструмент делает что-то (открывает файл, дёргает API, пишет в БД). Skill — это инструкция, которую модель читает и следует. Инструмент — «руки», skill — «методичка». Часто они работают в паре: skill диктует последовательность, а внутри вызывает MCP-инструменты.
Чем skill отличается от system prompt: system prompt — единый монолитный текст, который загружается с каждым запросом. Skill — модульный, подгружается лениво. Если у тебя 20 скиллов по 500 слов каждый — в контекст попадает 20 строк description (2000 символов), а не 10 000 слов инструкций.
Чем skill отличается от Cursor Rules: Rules всегда в контексте (расход токенов на каждый запрос). Skills активируются лениво — платишь только за то, что реально нужно сейчас.
Чем skill отличается от subagent: subagent — это отдельная копия модели, которую запускают на подзадачу с собственным контекстом. Skill — не отдельная модель, а инструкция для той же модели, которая уже с тобой разговаривает.
Аналогии из жизни
1. Кулинарная книга на кухне. Книга лежит на полке. У каждого рецепта — заголовок и краткое описание («суп на 4 порции, 40 минут»). Когда решил «сегодня борщ» — открыл только страницу с борщом, прочитал, приготовил. Не читаешь всю книгу с начала каждый раз, когда встаёшь к плите.
Где ломается аналогия
Рецепт статичен — он не знает, что у тебя в холодильнике. Skill живёт в контексте разговора: если пользователь уже сказал «у меня нет свёклы», модель, следуя скиллу-борщу, может адаптировать. Ещё разница: кулинар сам решает открывать книгу, а в skill-модели агент выбирает открыть тело файла — а может и не выбрать, если description сформулирован размыто.
2. Расширения браузера. Установил Adblock — он висит фоном. Пока не открыл сайт с рекламой, он ничего не делает. Открыл — активировался, начал резать баннеры. Установил переводчик — та же логика: висит, пока не встретил иностранный текст.
Где ломается аналогия
Расширение браузера — реальный код с полными правами страницы (может читать любые формы, отправлять данные на сервер). Skill — только инструкция для модели, без прав доступа сам по себе; он предлагает, что делать, а действия выполняет модель через свои обычные инструменты. Ещё: расширение управляется white-list доменов, skill — семантикой description.
3. Табличка «Служебное помещение» на двери в ресторане. Она объясняет, кто и зачем сюда заходит. Сотрудник видит — «моё, захожу»; посетитель проходит мимо. Никакого замка нет, только приглашение по смыслу.
Где ломается аналогия
Табличка пассивна — сотрудник сам её читает. Skill же встраивается в решение модели: она сканирует все description-таблички каждый запрос, и если увидит подходящий — открывает. Это ближе не к пассивной табличке, а к активному фильтру, который дежурит на входе.
Как это работает
Пошагово, что происходит при использовании skills.
Шаг 1. Сканирование при старте. Claude Code при запуске сессии обходит несколько директорий:
- ~/.claude/skills/ — глобальные скиллы пользователя.
- .claude/skills/ в текущем каталоге — проектные скиллы.
- Скиллы из установленных плагинов (~/.claude/plugins/<plugin>/skills/).
В каждой подпапке ищется файл SKILL.md. Читается только frontmatter — YAML-блок между ---. Тело файла не читается, чтобы не тратить токены.
Шаг 2. Формирование каталога. Из всех найденных скиллов собирается список вида:
- еженедельный-отчёт: Собрать еженедельный отчёт по активности...
- code-review: Ревью текущего diff на уровне effort low/medium/high...
- init: Инициализировать CLAUDE.md с описанием кодовой базы...
Этот список подставляется в системный промт как отдельная секция «Available skills». Модель теперь знает, какие скиллы существуют, что они делают, но не знает деталей.
Шаг 3. Активация — два пути. Скилл может быть вызван двумя способами.
Явный вызов пользователя. Пользователь пишет /еженедельный-отчёт. Claude Code парсит слеш-команду, находит соответствующий скилл, читает его тело, подкладывает как сообщение и приказывает модели следовать инструкции.
Автоматический вызов моделью. Пользователь пишет обычным языком: «собери-ка отчёт за неделю». Модель видит запрос и список описаний, замечает совпадение с description скилла и сама решает вызвать инструмент Skill(skill="еженедельный-отчёт"). Дальше — та же цепочка: подгружается тело, модель следует.
Шаг 4. Исполнение. В теле скилла — обычный markdown с инструкциями на естественном языке. Модель читает, планирует шаги, вызывает свои обычные инструменты (Read, Bash, Grep) для их выполнения. Скилл не выполняется сам, он направляет.
Шаг 5. Ограничение прав (опционально). В frontmatter можно указать allowed-tools: [Read, Grep] — тогда во время исполнения скилла модель получит доступ только к разрешённым инструментам. Полезно для скиллов, которые должны быть read-only. Также можно указать model: claude-haiku-4-5-20251001 — тогда для этого скилла будет использована модель подешевле.
Принцип «progressive disclosure» (постепенное раскрытие). Это ключевая экономия. Без него пришлось бы или (а) держать все инструкции всегда в контексте (дорого), или (б) заставить пользователя каждый раз вспоминать и вставлять нужную инструкцию (неудобно). Skills решает: витрины всегда видны (дёшево), кладовая открывается по требованию (не тратится, пока не нужна).
Псевдокод обработки:
on_session_start():
skills = []
for dir in [~/.claude/skills, ./.claude/skills, plugins_dirs]:
for skill_folder in dir:
frontmatter = read_frontmatter(skill_folder/"SKILL.md")
skills.append(frontmatter)
system_prompt += render_available_skills(skills)
on_skill_invocation(skill_name):
body = read_full_file(skills[skill_name].path)
send_to_model(body, tools=skills[skill_name].allowed_tools)
Где встречается в обычной жизни
- iPhone Shortcuts — «быстрая команда» вида «когда я говорю «поехали», построй маршрут домой в Картах». Триггер + инструкция + вызывает системные приложения.
- Голосовые команды Алисы / Siri — «Алиса, вызови такси» → Алиса ищет навык с триггером «вызови такси» → передаёт управление.
- Разделы в бумажной инструкции к бытовой технике — читаешь только раздел «замена фильтра», не всю книгу.
- FAQ на сайте банка — ищешь по названию вопроса, читаешь только релевантный ответ.
- Дежурные регламенты у скорой — фельдшер по симптому находит нужный протокол в справочнике, не изучает всю медицину заново.
Где встречается в IT и бизнесе
- Плагины IDE (VS Code extensions, JetBrains plugins) — расширяют редактор без пересборки.
- Расширения браузера (Chrome, Firefox) — код, который активируется на определённых доменах.
- WordPress plugins — тысячи плагинов, каждый ждёт своего события (hook).
- Salesforce AppExchange — маркетплейс приложений, устанавливаются в CRM.
- Slack apps — сторонние команды
/giphy,/poll, каждая — отдельный «скилл». - AI-агенты в enterprise — Custom GPTs у OpenAI, Copilot Extensions у Microsoft, Assistants API у Anthropic — все реализуют похожий паттерн модульных навыков.
Классы задач, где это нужно: регулярные повторяющиеся действия (еженедельный отчёт, ревью, деплой), экспертиза в узкой области (регламент безопасности, ORM конкретной БД), соблюдение стандартов (стиль кода компании, требования к тестам), интеграции с внутренними системами (API конкретной CRM, формат внутренней документации).
Кто пользуется
- Anthropic — Claude Code, Claude Desktop, Claude API (через Skills endpoint в Claude Agent SDK). У Anthropic есть Skill Marketplace в разработке.
- Cursor — 500 000+ разработчиков используют Cursor Rules, ближайший аналог.
- Amazon Alexa — исторически, старейший каталог: более 100 000 навыков в 2020 году, сейчас часть перевели на LLM-агентов.
- Google Home / Google Actions — «actions» для Google Assistant, тот же паттерн.
- Сообщество Claude Code — репозитории
awesome-claude-code,claude-skillsна GitHub с десятками готовых скиллов от энтузиастов.
Точных цифр по установкам Agent Skills у Anthropic я не знаю — фича новая, статистики Anthropic публично не даёт.
Альтернативы и конкуренты
- MCP (Model Context Protocol) — плюс: реальный код, не только инструкция; минус: сложнее написать, нужен runtime.
- Custom GPTs (OpenAI) — плюс: маркетплейс, монетизация; минус: закрытая экосистема ChatGPT, работает только онлайн.
- Cursor Rules / Windsurf Rules — плюс: проще написать; минус: всегда в контексте, дороже по токенам.
- System prompt / megaprompt — плюс: работает везде, никаких зависимостей; минус: нет модульности, всё сразу.
- RAG (Retrieval-Augmented Generation) — плюс: подходит для больших баз знаний; минус: требует векторной БД и эмбеддингов, сложнее setup.
Когда НЕ стоит использовать
- Разовая задача. Если задача встретится один раз — не заводи скилл, просто напиши в промт. Скилл имеет смысл при повторяемости от 5 раз.
- Сложная логика с ветвлениями и внешними API. Скилл — это инструкция, а не код. Если нужно вызывать 10 внешних сервисов и обрабатывать сбои — пиши MCP-инструмент или обычный CLI-скрипт и вызывай его через Bash.
- Секреты и полномочия. Скилл — обычный markdown, читаемый глазами. Не клади туда пароли, токены, приватные ключи. Даже в приватных репо — рискованно.
- Триггер, который сложно описать. Если description получается «когда пользователь говорит про X, но не в контексте Y, если только не Z» — модель будет ошибаться при выборе. Такие случаи лучше делать явными слэш-командами.
Связанные понятия
- MCP (Model Context Protocol) — открытый протокол для передачи инструментов и данных в AI-агентов. Разработан Anthropic в 2024 году.
- Subagent — вспомогательная копия модели, запускаемая с изолированным контекстом. Возвращает результат основному агенту.
- Hook — обработчик события. В Claude Code: реакция на PreToolUse, PostToolUse, Stop и другие события жизненного цикла.
- Progressive disclosure — принцип UX: показывать пользователю только необходимое, детали — по запросу. Термин Джеффа Раскина, 1980-е.
- Plugin architecture — общий паттерн: ядро системы + подключаемые модули с известным контрактом.
- System prompt — базовая инструкция модели, задающая роль и стиль. Загружается с каждым запросом.
Литература и источники
- Официальная документация Claude Code:
docs.claude.com/en/docs/claude-code(раздел Skills). - Anthropic Engineering Blog — статьи «Introducing Agent Skills» и «Building with Claude Agent SDK» в 2025 году.
- Simon Willison — блог
simonwillison.net, регулярные заметки по AI-агентам и Skills. - GitHub: репозитории
anthropics/claude-code,awesome-claude-code,hesreallyhim/awesome-claude-code-agents. - Sequoia Capital — статья «The AI Agents Stack» (2024, en) о слоях экосистемы агентов.
- Amazon Alexa Skills Kit — историческая база:
developer.amazon.com/en-US/alexa/alexa-skills-kit— прародитель идеи «skill = отдельный модуль расширения».
Где встретилось у меня
Вчера в контексте настройки Claude Code скиллы всплывали при обсуждении, как автоматизировать повторяющиеся задачи (аудит, регулярные отчёты, ревью). Обсуждали, что часть моих ежедневных промтов лучше переупаковать в скиллы, чтобы не таскать их вручную в каждый запрос.
Краткое резюме
- Skill в Claude Code — папка с
SKILL.md, где frontmatter «когда применять» видит модель всегда, а тело «что делать» подгружается по требованию (progressive disclosure). - Идея не новая: Alexa Skills с 2015, VS Code extensions с 2015, WordPress hooks с 2003. Anthropic упростил интерфейс до одного markdown-файла.
- Активация двумя путями: явно через
/skill-nameили автоматически, когда модель сама узнала описание. - Экономит токены по сравнению с system prompt и Cursor Rules — платишь только за реально нужные скиллы.
- Не заменяет MCP (реальный код), не годится для разовых задач и для хранения секретов.