ХЕЛЛОУИН СЕЙЛ-10%
До 31 октября-10%
ХЕЛЛОУИН СЕЙЛ-10%
До 31 октября-10%
ХЕЛЛОУИН СЕЙЛ-10%
До 31 октября-10%
ХЕЛЛОУИН СЕЙЛ-10%
До 31 октября-10%
ХЕЛЛОУИН СЕЙЛ-10%
До 31 октября-10%
ХЕЛЛОУИН СЕЙЛ-10%
До 31 октября-10%

Как работают скилы в Claude Code

Как устроен файл SKILL.md, когда Claude сам подгружает скил, как вызвать его вручную и раздать команде через git или плагин. С примерами для коммитов и релиза.
Guide DAO
Инструкция сверена с документацией Claude Code в октябре 2026 года. Скилы быстро развиваются, поэтому отдельные поля и детали поведения со временем могут поменяться.
Скил в Claude Code хранится как папка с файлом SKILL.md. В файле записана инструкция для агента: как писать сообщения коммитов, как выпускать релиз, как устроен API вашего сервиса. Claude подгружает скил сам, когда задача подходит под его описание, а вы можете вызвать его командой /имя-скила.
Заводить скил стоит, когда вы в третий раз вставляете в чат одну и ту же инструкцию или чек-лист либо когда раздел CLAUDE.md превратился из правила в процедуру на десяток шагов.

Чем скил отличается от CLAUDE.md, субагентов и команд

CLAUDE.md загружается в каждый сеанс целиком, поэтому в нём держат то, что агент должен помнить всегда: команды сборки, соглашения по коду, запреты. О нём мы писали в статье об установке и настройке Claude Code. От скила в контексте постоянно лежит только короткое описание, а основной текст, даже длинный, загружается, когда понадобится.
Субагент работает в отдельном контекстном окне и возвращает в разговор только итог, а текст скила добавляется в текущий разговор. Эти механизмы сочетаются: поле context: fork запускает скил в субагенте, а субагенту можно заранее подгрузить скилы полем skills.
Хук срабатывает на событие без участия модели, а скил Claude читает и сам решает, как его применить, поэтому результат может отличаться от раза к разу. MCP подключает внешние сервисы, а скил объясняет, как ими пользоваться в вашей команде.
Со slash-командами скилы слились. Встроенные /clear и /compact выполняют фиксированную логику, а /code-review, /batch и /debug устроены как скилы. Старый файл .claude/commands/deploy.md работает как раньше и даёт ту же команду /deploy, что и .claude/skills/deploy/SKILL.md, но у скила есть папка для дополнительных файлов и настройки вызова.

Как Claude решает загрузить скил

Скил загружается по частям, в Anthropic это называют постепенным раскрытием (progressive disclosure). В начале сеанса Claude получает список скилов с именами и описаниями из поля description. Когда запрос похож на одно из описаний, Claude вызывает тул Skill, и текст SKILL.md целиком попадает в разговор. Дополнительные файлы из папки скила он открывает по ссылкам из SKILL.md, когда они понадобились, а скрипты запускает, не читая: в контекст попадает только их вывод.
Поэтому сработает ли скил, решает описание. Напишите в нём сначала, что скил делает, а затем, когда его применять, теми словами, которыми вы ставите задачу. Вместе с полем when_to_use описание обрезается до 1536 символов. Если скилов много, список ужимается примерно до 1% контекстного окна, и первыми теряют описания скилы, которые вы вызываете реже всего.
Вызванный скил остаётся в разговоре, и файл Claude Code больше не перечитывает. Пишите правила на всю задачу: «запускай тесты после каждой правки», а не «запусти тесты». После компактинга от каждого вызванного скила возвращаются первые 5000 токенов, от всех вместе не больше 25 000, так что самое нужное держите в начале файла.

Где хранить скилы

Личные скилы из ~/.claude/skills/<имя>/SKILL.md работают во всех ваших проектах на этом компьютере. Проектные из .claude/skills/<имя>/SKILL.md коммитят в репозиторий, и они появляются у всех, кто с ним работает. Скилы плагинов вызываются с префиксом, например /my-plugin:review, а организация раздаёт свои через управляемые настройки (managed settings).
При совпадении имён скил организации побеждает личный, а личный побеждает проектный. В монорепозитории скилы собираются из папки запуска и всех родительских до корня репозитория, а из вложенных папок подключаются, когда Claude впервые откроет файл в такой папке.
Облачные сеансы ~/.claude/skills/ с вашего компьютера не видят, для них скил загружают в аккаунт claude.ai и включают там. В шапке такого скила допустимы только поля открытого стандарта Agent Skills: name, description, license, compatibility, metadata и allowed-tools, с остальными загрузка завершится ошибкой.

Первый скил для сообщений коммитов

Сделаем проектный скил, который пишет сообщение коммита в стиле вашего репозитория. В корне проекта создайте для него папку:
mkdir -p .claude/skills/commit-message
Положите в неё файл SKILL.md. Файл начинается с шапки на YAML (frontmatter) между строками ---, ниже идёт обычный Markdown с инструкцией:
---
name: commit-message
description: Пишет сообщение коммита к подготовленным изменениям в стиле этого репозитория. Используй, когда пользователь просит закоммитить правки или придумать сообщение коммита.
---

## Подготовленные изменения

!`git diff --staged`

## Все изменения в рабочей копии

!`git status --short`

## Последние коммиты

!`git log --oneline -15`

## Что сделать

Напиши сообщение коммита к подготовленным изменениям. Если их нет, покажи изменённые файлы и спроси, какие добавить в коммит.

Первая строка: тип и суть правки, не длиннее 72 символов, без точки в конце. Типы: feat, fix, refactor, test, docs, chore. Язык и стиль бери из последних коммитов.

После пустой строки в двух-трёх предложениях объясни, зачем нужна правка. Не пересказывай diff построчно.

Покажи сообщение. Если пользователь просил закоммитить, выполни git commit с этим сообщением.
Обязательных полей нет: без name командой станет имя папки, без description Claude возьмёт первую непустую строку текста. Шапку Claude Code читает, только если --- стоит в первой строке файла, а незнакомое или написанное с опечаткой поле молча пропускает.
Строки вида !`git diff --staged` подставляют живые данные: Claude Code выполняет команду до того, как Claude увидит скил, и вставляет её вывод на место строки. Такие команды проходят обычную проверку прав, но команды чтения вроде git diff и git log выполняются без запроса в любом режиме.
Запустите claude, добавьте файлы через git add и напишите «придумай сообщение коммита»: Claude сопоставит запрос с описанием и подгрузит скил. Напрямую его вызывает /commit-message, а список ваших скилов показывает /skills. Правки в SKILL.md Claude Code подхватывает без перезапуска. Исключение одно: если папки .claude/skills/ не было при старте сеанса, после её создания и каждой правки выполняйте /reload-skills.

Кто вызывает скил

По умолчанию скил может вызвать и Claude, и вы. Строка disable-model-invocation: true оставляет вызов только вам: описание скила даже не попадает в контекст, и Claude не запустит деплой только потому, что код выглядит готовым. Ставьте её на скилы с побочными эффектами вроде деплоя, релиза или сообщений в Slack. Строка user-invocable: false работает наоборот: скил пропадает из меню /, и вызывает его только Claude. Так оформляют фоновые знания, которые бесполезны как команда.
Вот скил-справочник с правилами API. Поле paths сужает автоматическую загрузку: Claude подгрузит правила, только когда работает с файлами из src/api/.
---
name: api-conventions
description: Правила REST API этого проекта. Используй, когда пишешь или меняешь эндпоинты.
user-invocable: false
paths:
  - "src/api/**/*.ts"
---

Пути пиши в kebab-case, поля JSON в camelCase.
Ошибки возвращай в формате { "error": { "code": "...", "message": "..." } }.
Списки всегда отдавай с пагинацией.
Вручную скил вызывают командой в начале сообщения. Текст после имени Claude Code подставит вместо $ARGUMENTS, а отдельные слова доступны как $0, $1 и так далее. Имя посреди фразы скил не запускает, а только разрешает Claude вызвать его в этом ответе.
Поле allowed-tools разрешает перечисленные тулы без запроса, но только в ходе, где скил вызван: со следующим вашим сообщением разрешение сбрасывается.

Скил релиза со скриптом и чек-листом

Рядом с SKILL.md кладут справочники и скрипты, а в нём самом пишут, что где лежит. Документация советует держать SKILL.md короче 500 строк. Вот скил релиза для проекта на Node.js:
.claude/skills/release/
├── SKILL.md
├── checklist.md
└── scripts/
    └── preflight.sh
Файл SKILL.md:
---
name: release
description: Выпускает новую версию проекта по чек-листу команды
disable-model-invocation: true
argument-hint: "[версия]"
arguments: [version]
allowed-tools: Bash(${CLAUDE_SKILL_DIR}/scripts/preflight.sh *)
---

Выпусти версию $version. Если версия не указана, спроси её и остановись.

## Состояние репозитория

!`git status --short`

!`git log --oneline -20`

## Шаги

1. Запусти `${CLAUDE_SKILL_DIR}/scripts/preflight.sh $version`. Если скрипт нашёл проблемы, покажи их и остановись.
2. Пройди по чек-листу из [checklist.md](checklist.md) и про каждый пункт напиши, выполнен ли он.
3. Обнови версию в package.json и добавь в CHANGELOG.md раздел $version по коммитам с прошлого релиза.
4. Закоммить изменения с сообщением «release: v$version» и поставь тег v$version.
5. Покажи итог и дождись подтверждения. Только после него выполни git push вместе с тегом.
Скрипт scripts/preflight.sh проверяет то, для чего модель не нужна:
#!/usr/bin/env bash
# Проверки перед релизом: печатает проблемы и выходит с кодом 1
version="$1"
failed=0

if [ -z "$version" ]; then
  echo "Не указана версия"
  exit 1
fi
if [ "$(git branch --show-current)" != "main" ]; then
  echo "Релиз выпускают из ветки main"
  failed=1
fi
if [ -n "$(git status --porcelain)" ]; then
  echo "В рабочей копии есть незакоммиченные изменения"
  failed=1
fi
if git rev-parse -q --verify "refs/tags/v$version" >/dev/null; then
  echo "Тег v$version уже существует"
  failed=1
fi
exit $failed
Сделайте его исполняемым командой chmod +x .claude/skills/release/scripts/preflight.sh. В checklist.md запишите обычный список проверок команды: тесты, сборка, раздел в CHANGELOG.md, миграции. Claude откроет этот файл только на втором шаге.
Релиз запускают командой /release 1.4.0, и 1.4.0 встаёт на место $version. Сам Claude его не вызовет: ставить тег и отправлять код решаете вы. Переменная ${CLAUDE_SKILL_DIR} раскрывается в путь к папке скила, где бы она ни лежала, в проекте или в плагине. Она стоит и в тексте, и в allowed-tools, поэтому правило совпадает ровно с командой из первого шага и скрипт запускается без запроса. А git push мы туда намеренно не добавили: отправка пройдёт обычную проверку прав.

Как поделиться скилом с командой

Проще всего через git: скилы из .claude/skills/ коммитятся вместе с кодом и проходят ревью. Смотрите на ревью прежде всего на allowed-tools: доверие к папке (workspace trust) это поле не проверяет, и чужой скил может выдать себе широкие права даже при запуске через claude -p.
Если одни и те же скилы нужны в нескольких репозиториях, соберите плагин. Это папка с манифестом .claude-plugin/plugin.json и подпапкой skills/, куда скилы переезжают без изменений. Манифест для плагина team-tools:
{
  "name": "team-tools",
  "description": "Скилы нашей команды для коммитов и релизов",
  "version": "1.0.0",
  "author": {
    "name": "Acme"
  }
}
Папка skills/ лежит в корне плагина, рядом с .claude-plugin/: внутри .claude-plugin/ скилы не загрузятся. Проверьте плагин командой claude plugin validate ./team-tools и запустите с ним сеанс через claude --plugin-dir ./team-tools. Релиз теперь вызывается как /team-tools:release, поэтому оригиналы из .claude/skills/ после проверки удалите, иначе останутся обе команды.
Чтобы раздать плагин коллегам, нужен маркетплейс: репозиторий с файлом .claude-plugin/marketplace.json, где перечислены плагины и откуда их брать. Сам плагин положите рядом, в plugins/team-tools/:
{
  "name": "acme-tools",
  "description": "Плагины нашей команды",
  "owner": {
    "name": "Acme"
  },
  "plugins": [
    {
      "name": "team-tools",
      "source": "./plugins/team-tools",
      "description": "Скилы для коммитов и релизов"
    }
  ]
}
Выложите репозиторий на GitHub, и каждый в команде подключит его двумя командами (после @ стоит имя маркетплейса, а не репозитория):
claude plugin marketplace add acme/claude-plugins
claude plugin install team-tools@acme-tools

Частые ошибки

Скил не появился в /skills. Чаще всего файл лежит как .claude/skills/name.md, а нужна папка с файлом внутри: .claude/skills/name/SKILL.md.
Скил есть в списке, но Claude его не вызывает. Проверьте, нет ли в шапке disable-model-invocation: true, и перепишите описание словами, которыми вы ставите задачу. Так же ведёт себя скил со сломанным YAML: команда работает, а описания Claude не видит. Такие файлы находит claude plugin validate .claude/skills. Если же скил срабатывает не к месту, сузьте описание.
Скил обрывается, не начавшись. Если команда в строке с ! вернула ненулевой код, Claude Code отменяет весь вызов, и Claude скил не видит. К проверкам, которые штатно выходят с кодом 1, допишите || true. Вне режима auto вызов отменяется и тогда, когда команде нужно ваше разрешение, поэтому такие команды заранее разрешите в allowed-tools.
Claude перестал следовать скилу посреди сеанса. Скил не гарантирует правило, которое должно выполняться всегда. Для этого есть хуки, о них у нас отдельная статья. А после компактинга достаточно вызвать скил ещё раз, и его текст вернётся целиком.
Скил подменил встроенную команду. Проектный скил code-review заменит встроенный /code-review, так что берите свободные имена.
Контекст забит описаниями. Каждый скил, который Claude может вызвать сам, занимает место в каждом запросе, и скилы включённых плагинов тоже. /skill-doctor покажет, сколько стоит и как часто вызывается каждый скил. Лишние скилы выключите в меню /skills, а ненужные плагины в /plugin.

Что дальше

То, что скил сработал, значит лишь, что Claude его нашёл. Чтобы понять, помогает ли он, прогоните несколько настоящих запросов в новых сеансах со скилом и без него, на время выключив его в меню /skills. Это сравнение автоматизирует плагин skill-creator (/plugin install skill-creator@claude-plugins-official): он помогает составить тест-кейсы, сравнивает версии скила вслепую и предлагает правки описания.
На наш взгляд, скилы окупаются быстрее всего на процедурах, которые вы и так делаете по чек-листу: коммиты, ревью, релиз. Правилу в одну строку место в CLAUDE.md, а /doctor сам предложит перенести в скилы часть инструкций, которые сейчас грузятся в каждый сеанс. Скилы вместе с субагентами, хуками и MCP мы разбираем на курсе «Основы Claude Code».
Трек: Основы Claude Code
Научитесь без программирования поручать Claude Code настоящую работу: сайт, ролики для соцсетей, отчёт по цифрам вашего проекта. Повторяющиеся задачи он будет делать сам по расписанию.
Подробнее
Поделиться
Интересно погрузиться в крипту?
Поможем выбрать направление!