Skills

1 сентября 2026 · ~11 мин чтения

ai claude расширяемость паттерн автоматизация

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)

Где встречается в обычной жизни

Где встречается в IT и бизнесе

Классы задач, где это нужно: регулярные повторяющиеся действия (еженедельный отчёт, ревью, деплой), экспертиза в узкой области (регламент безопасности, ORM конкретной БД), соблюдение стандартов (стиль кода компании, требования к тестам), интеграции с внутренними системами (API конкретной CRM, формат внутренней документации).

Кто пользуется

Точных цифр по установкам Agent Skills у Anthropic я не знаю — фича новая, статистики Anthropic публично не даёт.

Альтернативы и конкуренты

Когда НЕ стоит использовать

Связанные понятия

Литература и источники

Где встретилось у меня

Вчера в контексте настройки Claude Code скиллы всплывали при обсуждении, как автоматизировать повторяющиеся задачи (аудит, регулярные отчёты, ревью). Обсуждали, что часть моих ежедневных промтов лучше переупаковать в скиллы, чтобы не таскать их вручную в каждый запрос.

Краткое резюме