Коротко (TL;DR)
Скилл (skill) в Claude Code — это папка с файлом SKILL.md, в котором лежит процедура: как выполнять конкретный тип задачи. Claude подхватывает её сам, когда задача подходит под описание. Это не плагин и не магия, а инженерная дисциплина: у скилла есть предсказуемая анатомия, лимиты и повторяемые паттерны организации.
- Коротко (TL;DR)
- Зачем вообще писать свои скиллы
- Анатомия SKILL.md: из чего реально состоит скилл
- Синтаксис frontmatter, который решает
- 5 паттернов организации скилла
- Как создать скилл: Skill Creator и вручную
- Self-improving skills: видение и реальность
- Что выбрать: скилл, субагент, slash-команда или CLAUDE.md
- Антипаттерны, которые убивают скилл
- Работают ли скиллы вообще: данные, а не вера
- Риски и безопасность: скилл — это исполняемый код
- FAQ
Что вы получите из этого гайда:
- Анатомию
SKILL.md— из чего он состоит и почему тело держат под 500 строк. - 5 именованных паттернов организации скилла, которые реально работают: высокоуровневый гид с вынесенными деталями, доменная нарезка, условные ветки, workflow с чек-листом и скрипты вместо генерации кода.
- Два способа собрать свой скилл — через официальный плагин Skill Creator с измеримым eval-циклом и вручную, пошагово.
- Дерево решений «скилл против субагента против slash-команды против
CLAUDE.md» — чтобы не тащить в скилл то, чему там не место. - Честный разбор self-improving skills: что из этого заявленное видение Anthropic, а что — уже работающие самоделки сообщества.
Уровень материала — продвинутый: предполагается, что вы уже ставили готовые скиллы и теперь хотите писать свои. Если ещё нет — сначала стоит разобраться с установкой, а сюда вернуться за устройством и паттернами. Все версии команд и лимиты приведены по состоянию на июль 2026 года; экосистема Claude Code меняется быстро, и часть цифр (номера версий, названия флагов) устареет первой — сверяйтесь с официальными доками на дату чтения.
Зачем вообще писать свои скиллы
Скилл решает одну проблему: модель по умолчанию не знает вашу процедуру. Она умеет писать код, но не знает, что в вашем проекте деплой идёт через конкретный скрипт, отчёты собираются в определённом формате, а числа сверяются по вашему реестру. Скилл кодифицирует это знание один раз — и Claude достаёт его по требованию, а не каждый раз заново из подсказок в чате.
Здесь важно различать два типа пользы, потому что их часто путают.
- Capability uplift (прирост способности). Скилл даёт модели то, чего у неё не было: доменную процедуру, редкий формат, специфический API. Это главная причина писать скиллы — и именно она поддаётся измерению.
- Encoded preference (зафиксированное предпочтение). Скилл просто повторяет то, что модель и так умеет, но вашим способом («пиши коммиты вот так»). Польза есть, но она про удобство, а не про новые возможности.
Что это даёт в цифрах. Независимый бенчмарк SkillsBench (arXiv 2602.12670, февраль 2026) прогнал 87 задач в 8 доменах на 18 конфигурациях «модель + харнесс». Курируемые, хорошо структурированные скиллы подняли средний pass rate с 33,9% до 50,5% — на +16,6 процентного пункта. Но разброс большой: по разным конфигурациям прирост колебался от +4,1 до +25,7 п.п., а на 13 задачах из 87 дельта оказалась отрицательной — скилл мешал. Вывод простой: скилл окупается там, где он несёт настоящую доменную процедуру, и вредит, когда навязывает лишнюю ветку рассуждений.
Держите этот вывод в голове до конца гайда. Он объясняет, почему структура и тестирование скилла важнее, чем сам факт его существования.
Анатомия SKILL.md: из чего реально состоит скилл
Скилл — это директория, а не один файл. Минимум внутри — SKILL.md с YAML-шапкой (frontmatter) и телом в Markdown. Рядом могут лежать вынесенные файлы-справочники и исполняемые скрипты. Claude Code читает скиллы из четырёх мест с чётким приоритетом: enterprise (управляемые настройки) перекрывает personal (~/.claude/skills/), personal перекрывает project (.claude/skills/), а plugin-скиллы (<plugin>/skills/) идут отдельно. При совпадении имён побеждает более высокий уровень.
Ключевой механизм, который надо понять до написания первой строки, — прогрессивное раскрытие (progressive disclosure). Контекст загружается в три уровня, и это прямо влияет на то, как вы раскладываете материал:
- Метаданные (
name+description) — всегда в контексте, примерно сотня слов на скилл. По ним модель решает, брать скилл или нет. - Тело
SKILL.md— грузится целиком, когда скилл сработал. Отсюда лимит: держите его короче 500 строк. - Связанные файлы и скрипты — подтягиваются только по мере надобности. Скрипт при этом выполняется без загрузки своего текста в контекст: в диалог попадает лишь его вывод.
Смысл этой трёхуровневости — экономия контекста. Метаданные всех скиллов висят в памяти постоянно, поэтому они должны быть крошечными. Всё тяжёлое (примеры, таблицы, редкие ветки) уезжает на уровни 2 и 3 и грузится, только когда действительно нужно. Хорошо написанный скилл — это не «большой файл со всем сразу», а тонкий вход с указателями вглубь.
Именно здесь проходит граница между «поставить готовый скилл» и «написать свой». Пользователю готового скилла достаточно знать, что он делает. Автору — нужно осознанно управлять тем, что попадёт в контекст на каждом из трёх уровней. Дальше — про то, как этим управлять.
Синтаксис frontmatter, который решает
Frontmatter — это YAML-шапка SKILL.md. Большинство полей опциональны, но несколько определяют, сработает скилл или нет и как именно он выполнится. Разберём те, что важны на практике.Поле Что делает Лимит / значения Обязательно nameИмя скилла (и его команда) ≤64 символов, только строчные буквы, цифры и дефисы; без слов anthropic/claudeВ Platform API — да; в Claude Code опционально (берётся из имени папки) descriptionПо нему модель решает, брать ли скилл В Platform API — ≤1024 символов, непустое, без XML-тегов Да disable-model-invocationtrue запрещает авто-вызов — скилл только по ручной /nameboolean Нет context: forkЗапускает скилл в изолированном форкнутом субагенте без доступа к истории диалога флаг Нет allowed-toolsПредодобряет инструменты (скилл зовёт их без запроса разрешения); НЕ ограничивает — это делает disallowed-toolsсписок Нет
Пара нюансов, на которых спотыкаются.
Лимит description — это про Platform API, а не про листинг Claude Code. В загружаемых пакетах Platform/API поле description ограничено 1024 символами. Внутри самого Claude Code механика другая: связка description + when_to_use обрезается на 1536 символах в листинге, а общий бюджет на перечень всех скиллов — 1% контекстного окна модели (настраивается). Это разные продукты и разные лимиты — не смешивайте их в одну цифру.
name в Claude Code можно не писать. Команда скилла определяется расположением файла: скилл в .claude/skills/deploy/SKILL.md даёт /deploy независимо от содержимого frontmatter. Более того, кастомные команды слиты со скиллами: файл .claude/commands/deploy.md и скилл .claude/skills/deploy/SKILL.md создают одну и ту же /deploy и работают одинаково. Старый путь commands/ жив как legacy, но канонический теперь — skills/.
description пишут в третьем лице и намеренно «настойчиво». Официальная инструкция самого Skill Creator прямо предупреждает: у модели есть тенденция недотриггеривать скиллы — не использовать их там, где они были бы полезны. Лекарство — явно перечислять в описании контексты срабатывания, даже если пользователь не называет скилл прямо. Формулировка вроде «Use when the user asks about X, mentions Y, or needs Z» надёжнее, чем сухое «Handles X».
5 паттернов организации скилла
Дальше — ядро гайда: пять воспроизводимых способов разложить скилл. Это не взаимоисключающие варианты — в одном скилле их обычно комбинируют. Все примеры опираются на официальные best practices и на исходники skill-creator.
Паттерн 1. Высокоуровневый гид + вынесенные references
Базовый паттерн прогрессивного раскрытия. В SKILL.md остаётся только карта процесса и решения «когда что», а тяжёлые детали (полные спецификации, длинные таблицы, справочники API) переезжают в отдельные файлы рядом. Тело держат под 500 строк; при приближении к лимиту официальный совет — не ужимать текст, а добавить ещё один уровень иерархии, то есть вынести кусок в новый файл-справочник.
Когда применять: скилл покрывает большую тему, но в каждой конкретной задаче нужен лишь её срез. Модель сначала читает тонкий гид, а вглубь идёт только по нужной ссылке.
Паттерн 2. Доменная организация
Когда скилл обслуживает несколько независимых поддоменов (например, три разных формата отчётов или три подсистемы), их разносят по отдельным reference-файлам, а в SKILL.md оставляют диспетчер: «работаешь с A — открой a.md, с B — b.md». Так контекст не раздувается суммой всех доменов сразу — грузится только релевантный.
Ключевое ограничение здесь — глубина ссылок. Держите вынесенные файлы на один уровень от SKILL.md. Если файл ссылается на файл, который ссылается на третий, Claude может прочитать промежуточные лишь частично (вплоть до head -100), и часть инструкций потеряется.
Паттерн 3. Условные детали (ветки по задаче)
Разновидность, где SKILL.md содержит дерево условий: «если задача такая — сделай так; если нет данных — вот запасной путь; для редкого случая X — смотри edge-cases.md». Частые ветки описаны прямо в теле, редкие вынесены. Это тот же принцип экономии контекста, но применённый к логике, а не к справочным данным: обычный путь читается всегда, экзотика подгружается по требованию.
Паттерн 4. Workflow с чек-листом и петлёй обратной связи
Для многошаговых процессов скилл задаёт явную последовательность с проверкой на выходе: собрать → выполнить → свериться с чек-листом → при провале вернуться и починить. Петля обратной связи (feedback loop) — то, что отличает надёжный workflow-скилл от простой инструкции: он не просто перечисляет шаги, а требует подтверждения результата перед завершением.
Этот паттерн особенно уместен там, где ошибку легко не заметить: генерация по строгому формату, миграции, публикация. Чек-лист в конце скилла работает как гейт — модель обязана пройтись по нему, а не отрапортовать «готово» на глаз.
Паттерн 5. Скрипты вместо генерации кода
Самый недооценённый паттерн. Если операция детерминированная (распарсить PDF, посчитать метрику, переформатировать данные) — не просите Claude писать код заново каждый раз. Положите готовый скрипт в scripts/ и в теле скилла скажите модели его запустить.
Выигрыш двойной. Во-первых, экономия контекста: скрипт исполняется через bash, его исходник не грузится в диалог — токены тратит только вывод. Во-вторых, детерминированность: код даёт один и тот же результат каждый раз, а генерация кода на лету — нет. Официальный пример Anthropic — извлечение данных из PDF: скилл запускает скрипт, не загружая ни его текст, ни сам PDF в контекст.
Как создать скилл: Skill Creator и вручную
Есть два пути. Официальный — через плагин, который автоматизирует не только черновик, но и проверку, что скилл вообще помогает. Ручной — когда нужно полное понимание или скилл совсем маленький.
Путь 1. Skill Creator (официальный плагин)
Skill Creator — это официальный мета-скилл Anthropic: скилл, который создаёт скиллы. Ставится из официального маркетплейса:
/plugin install skill-creator@claude-plugins-official
Он ведёт вас по циклу draft → test → eval → iterate и — это главное — автоматизирует сравнение с baseline. Схематично шаги такие:
- Интервью. Плагин расспрашивает, что за задачу решает скилл и в каких контекстах должен срабатывать.
- Черновик. Генерирует
SKILL.mdс frontmatter и телом, разложенный по паттернам выше. - Тест-кейсы. Составляет набор запросов, на которых скилл должен помогать.
- Eval-loop. Прогоняет эти запросы с включённым скиллом и без него — и сравнивает результат. Это ответ на вопрос, который большинство авторов вообще не задают: «а мой скилл реально что-то улучшает?»
- Оптимизация description. Если скилл недотриггеривается, плагин докручивает описание, чтобы модель брала его в нужных случаях.
Именно этот измеримый цикл, а не «просто напишите SKILL.md руками», — то, что превращает написание скилла из гадания в инженерию. Для сравнения: экосистема Claude — это уже семейство продуктов и поверхностей, от ассистента в Slack до Claude Code; скиллы переносят вашу процедуру между ними, но только если процедура действительно проверена.
Путь 2. Вручную, по шагам
Если хотите собрать скилл сами, минимальный маршрут такой:
- Создайте папку —
.claude/skills/<имя>/в проекте (общий для команды) или~/.claude/skills/<имя>/(личный). - Напишите frontmatter — как минимум внятное
descriptionв третьем лице с перечнем триггеров. Имя команды придёт из имени папки. - Тело — тонкий гид. Изложите процедуру шагами. Всё тяжёлое сразу выносите в reference-файлы рядом (паттерн 1), держитесь под 500 строк.
- Детерминированное — в скрипты (паттерн 5), редкое — в условные ветки (паттерн 3).
- Протестируйте на свежем экземпляре. Контринтуитивный, но официальный совет: скилл, написанный в одной сессии Claude, проверяйте в другой, чистой сессии. Автор-инстанс уже «знает» контекст и триггернёт скилл даже по кривому описанию — свежий инстанс покажет, сработает ли он у реального пользователя.
Ручной путь дешевле по установке, но лишает вас eval-петли. Как показал SkillsBench, «на глаз» скилл может казаться полезным и при этом не давать прироста. Поэтому даже при ручной сборке имеет смысл прогнать хотя бы пару задач с скиллом и без.
Self-improving skills: видение и реальность
Тема «самоулучшающихся скиллов» звучит громко, поэтому разложим её на заявленное Anthropic и реально отгруженное сообществом.
Что говорит Anthropic. В статье-анонсе Agent Skills (октябрь 2025) сформулировано так: «мы надеемся дать агентам возможность самим создавать, редактировать и оценивать скиллы». Ключевое слово — надеемся. Это форвард-лукинг видение, цель на будущее, а не текущая функция. На июль 2026 года встроенной автономной фичи, в которой Claude Code сам без человека генерирует и внедряет себе скиллы, в официальной документации нет. Skill Creator — инструмент с человеком в цикле: он ассистирует, но не действует автономно.
Что реально существует. «Self-improving skills», о которых пишут в блогах, — это самодельные пайплайны сообщества поверх обычных механизмов. Показательный разбор (dev.to, автор Lily, 10 июля 2026) описывает рабочую систему из трёх частей:
- Генерация в сессии — скилл, который по нескольким триггерам предлагает оформить новую процедуру.
- Ночной сбор — headless-прогон (
claude -p) по логам за день, который вытаскивает повторяющиеся паттерны. - Еженедельный Curator — и вот это самое важное: он не удаляет скиллы. Неиспользуемые 30 дней помечаются как
stale, 90 дней — уезжают в.archive/. За несколько месяцев так накопилось 64 авто-скилла в изолированном пространстве~/.claude/skills/auto/.
Что этот паттерн независимо воспроизведён в нескольких GitHub-репозиториях, говорит о том, что подход рабочий. Но подавать его как «фичу Claude Code» нельзя — это инженерное решение конкретных людей, собранное из обычных кирпичей: skill-creator, headless-режим и планировщик.
И главная отрезвляющая деталь. Тот же SkillsBench показал: скиллы, которые модель сгенерировала себе сама, в среднем работают хуже, чем вообще без скиллов (на всех трёх проверенных связках модель+харнесс дельта была отрицательной). Модель надёжно пользуется готовым процедурным знанием, но надёжно писать его себе — пока не умеет. Отсюда правило для любого self-improving пайплайна: автогенерация без внешней оценки — это накопление шума. Нужен eval, а не ощущение прогресса.
Что выбрать: скилл, субагент, slash-команда или CLAUDE.md
Прежде чем писать скилл, стоит проверить, что задача вообще про скилл. Развилка решается по двум осям: кто вызывает механизм и нужна ли изоляция контекста.Механизм Кто вызывает Свой контекст? Когда брать Skill (авто) Claude сам, когда задача подходит под descriptionНет — грузится в основной контекст Процедура/знание, которое модель должна подхватывать по ситуации Skill с context: forkClaude, но исполняется в форке Да — изолированный субагент без истории диалога Скилл делает много «шумной» работы, которая иначе забьёт основной тред Субагент Claude маршрутизирует к нему как к делегату Да — своё контекстное окно и свои инструменты Тяжёлая автономная подзадача (ресёрч, ревью), которую надо унести из основного контекста Slash-команда (скилл с disable-model-invocation: true)Только пользователь, явно через /nameНет Действие, которое запускается по вашей команде, а не по решению модели CLAUDE.md Всегда в контексте, не «вызывается» — Постоянные правила проекта, которые нужны в каждом ответе
Как читать эту таблицу на практике:
- Нужно постоянное правило («всегда пиши на русском», «не трогай прод») — это
CLAUDE.md, а не скилл. Скилл грузится по ситуации, аCLAUDE.md— всегда. - Нужна процедура по требованию — скилл. Если он должен срабатывать сам — обычный; если только по вашей команде — добавьте
disable-model-invocation: true. - Задача тяжёлая и автономная, её не надо тащить в основной диалог — субагент или скилл с
context: fork. Разница: субагента Claude выбирает как отдельного исполнителя, аcontext: fork— это способ изолировать сам скилл.
Ошибка выбора дорого стоит: постоянное правило, засунутое в скилл, не сработает, когда нужно; а тяжёлый ресёрч без изоляции забьёт контекст и уронит качество остального диалога. Хороший пример границы автономности — личные ИИ-агенты вроде OpenClaw: там видно, насколько быстро неизолированная автономная работа съедает и бюджет, и внимание.
Антипаттерны, которые убивают скилл
Систематизированного списка ошибок по-русски почти нет, поэтому соберём главные. Все — из официальных best practices.Антипаттерн Почему вредит Как правильно Расплывчатое имя ( helper, utils, tools, documents)Модель не понимает, когда брать скилл — недотриггер Конкретное имя-герундий: processing-pdfs, analyzing-spreadsheetsСухое description в первом лицеНе перечисляет контексты → скилл не срабатывает Третье лицо, «настойчиво», с перечнем триггеров Раздутое тело >500 строк Забивает контекст при каждом срабатывании Вынести детали в reference-файлы, добавить уровень иерархии Глубокая вложенность ссылок Claude читает вложенные файлы лишь частично Держать references на один уровень от SKILL.mdДоменные данные прямо в SKILL.mdТяжёлый справочник грузится всегда, а не по нужде Диспетчер в теле + reference-файлы по доменам (паттерн 2) «Написал и выложил» без проверки Скилл может не давать прироста (SkillsBench) Прогнать eval с скиллом и без; тест на свежем инстансе
Зарезервированные слова тоже сюда: имена вроде anthropic-helper или claude-tools запрещены правилами поля name.
Работают ли скиллы вообще: данные, а не вера
Раз уж мы опираемся на измеримость, стоит посмотреть на скиллы скептически — по независимым бенчмаркам.
Первый вывод мы уже привели: курируемые скиллы дают +16,6 п.п. pass rate, а сгенерированные моделью — ниже уровня «вообще без скиллов» (SkillsBench, февраль 2026). То есть ценность не в самом факте скилла, а в качестве процедуры внутри.
Второй вывод жёстче. Работа «How Well Do Agentic Skills Work in the Wild» (arXiv 2604.04323, апрель 2026) проверила, что будет, когда скилл нужно найти среди большой коллекции — 34 тысячи реальных скиллов, — а не подставить вручную идеальный под задачу. Результат: по мере приближения условий к реалистичным выигрыш деградирует почти до уровня без скиллов вообще. Спасает не количество, а стратегия: связка «поиск + доработка» (retrieval + refinement) частично восстанавливает результат — например, на Terminal-Bench 2.0 подняла pass rate Claude Opus 4.6 с 57,7% до 65,5%.
Практический смысл для вас как автора: «накопить побольше скиллов» — не стратегия. Десять точных, проверенных, хорошо описанных скиллов полезнее сотни сгенерированных «на всякий случай», потому что вторые модель либо не найдёт, либо возьмёт не те. Это ровно та развилка, где self-improving пайплайн без Curator и eval превращается из помощника в свалку.
Риски и безопасность: скилл — это исполняемый код
Скилл из чужого репозитория содержит инструкции, а часто и скрипты, которые Claude выполнит в вашем окружении. Это вектор атаки, и Anthropic говорит об этом прямо (предупреждение от 16 октября 2025): вредоносный скилл может внести уязвимости или направить Claude на кражу данных и нежелательные действия. Официальная рекомендация — ставить скиллы только из доверенных источников и просматривать код и скрипты перед включением непроверенного. Не хардкодьте в скилл секреты (API-ключи, пароли) — они утекут вместе со скиллом.
Что это не абстракция, видно по свежему фону вокруг доверия к агентам. В начале июля 2026 года прошла новость о том, что Alibaba ограничивает использование Claude Code на рабочих местах из-за предполагаемых рисков (3 июля 2026), а на Hacker News собрал крупное обсуждение тред о недекларируемом поведении агента. Тема доверия к тому, что агент делает под капотом, — горячая, и на скиллы из непроверенных источников она распространяется напрямую. Правило простое: относитесь к установке скилла как к запуску чужого скрипта с вашими правами, потому что это ровно оно и есть.
FAQ
Чем скилл отличается от CLAUDE.md?
CLAUDE.md всегда в контексте — это постоянные правила проекта, которые нужны в каждом ответе. Скилл грузится по ситуации, когда задача подходит под его description. Постоянное правило в скилле не сработает в нужный момент, а разовую процедуру нет смысла держать в CLAUDE.md постоянно.
Обязательно ли поле name в SKILL.md?
В Claude Code — нет: имя команды берётся из имени папки скилла. В загружаемых пакетах Platform/API name обязателен и подчиняется правилам: до 64 символов, только строчные буквы, цифры и дефисы, без слов anthropic и claude.
Почему мой скилл не срабатывает?
Чаще всего дело в description — модель склонна недотриггеривать скиллы. Перепишите описание в третьем лице, явно перечислив контексты срабатывания, и сделайте его намеренно «настойчивым». Официальный Skill Creator умеет оптимизировать описание автоматически через eval-петлю.
Существует ли встроенная функция self-improving skills? На июль 2026 года — нет. Anthropic формулирует это как видение на будущее («надеемся дать агентам возможность самим создавать и оценивать скиллы»). То, что называют self-improving skills сегодня, — самодельные пайплайны сообщества поверх обычного Skill Creator, headless-режима и планировщика.
Сколько скиллов стоит держать? Немного, но точных. Независимые бенчмарки показывают, что при поиске из большой коллекции польза скиллов падает почти до нуля, а сгенерированные моделью скиллы в среднем не помогают. Лучше десять проверенных с понятными описаниями, чем сотня «на всякий случай».
Когда вместо скилла нужен субагент?
Когда подзадача тяжёлая и автономная (объёмный ресёрч, ревью) и её не надо тащить в основной контекст. Субагент имеет своё контекстное окно и инструменты. Если хочется изолировать именно скилл, есть промежуточный вариант — context: fork, который исполняет скилл в форкнутом субагенте.
Курс «Claude Code с нуля до продакшена» · модуль «Конфиг, память, навыки». Полная программа и два маршрута обучения — на странице курса.
Предыдущий урок: Skills: что это и как поставить · Следующий урок: Plugins: skills + агенты + MCP пакетом



