Ты уже знаешь, что — это папка с файлом SKILL.md: описание во и инструкции в теле, плюс $ARGUMENTS для того, что ты набрал после имени. Теперь пять шаблонов, которые делают навык сильнее — и экономнее.
Пять шаблонов
| Шаблон | Как пишется | Что делает |
|---|---|---|
| Живые данные | !`git diff HEAD` в теле | Claude Code выполняет команду до того, как Claude прочитает навык, и подставляет вывод |
| Соседние файлы | файлы рядом с SKILL.md, ссылки на них | длинная справка, которую Claude читает, только когда нужно |
| Свой контекст | context: fork во фронтматтере | навык становится заданием для в фоне |
| Именованные аргументы | arguments: [focus], в теле $focus | каждое слово после имени заполняет своё поле |
| Разрешённые инструменты | allowed-tools: Read, Grep | эти инструменты работают без вопроса во время хода навыка |
Навык для ревью изменений
Сложим всё вместе. Файл .claude/skills/changes-review/SKILL.md:
---
name: changes-review
description: Проверяет незакоммиченные изменения по чек-листу команды. Используй, когда просят ревью перед коммитом.
context: fork
arguments: [focus]
allowed-tools: Bash(git diff *)
---
## Изменения
!`git diff HEAD`
## Задача
Проверь изменения выше по [checklist.md](checklist.md), сильнее всего смотри на $focus.
Назови каждую проблему с файлом и строкой, а в конце одной строкой — готово ли к коммиту.
И рядом, в той же папке, checklist.md:
- У каждой изменённой функции есть тест.
- Ошибки сообщаются, а не проглатываются.
- В коде и конфигах нет секретов.
Что происходит, когда ты набираешь /changes-review tests:
- Claude Code выполняет
git diff HEADи вставляет дифф в текст навыка. - Слово
testsпопадает на место$focus. - Из навыка получается задание для субагента. Он работает в фоне, не видит твоего разговора, сам открывает
checklist.mdи присылает отчёт, когда закончит.
Попробуй /changes-review secrets — тот же навык будет смотреть в первую очередь на секреты.
Тонкости
Упавшая команда прерывает навык. Если подставляемая команда завершилась с ошибкой или её не пропускают твои правила разрешений, навык не запустится вовсе: увидишь Shell command failed или Shell command permission check failed. Проверь команду руками и посмотри на строку allowed-tools. Вне режима Auto команда, которую правила не разрешают, останавливает навык — поэтому allowed-tools: Bash(git diff *) здесь не лишний.
allowed-tools ничего не запрещает. Он лишь разрешает перечисленное без вопроса на время хода, который выполняет навык. Другие инструменты остаются доступны — просто с обычными вопросами.
Держи SKILL.md коротким. После запуска весь его текст остаётся в разговоре. Документация советует не больше 500 строк, а подробности — в соседние файлы: их Claude откроет, только если понадобится.
Мини-проверка
Навык с !`npm run lint` не запускается и пишет Shell command failed. Что в первую очередь?
Осторожно
Подставляемая команда выполняется до того, как Claude вообще увидит навык, и Claude не может её пересмотреть или отменить. Подставляй только команды, которые читают, а не меняют: git diff, git log, git status. И помни, что вывод попадает в контекст: огромный дифф съест его так же, как огромный файл.
Практика в терминале