# Шаблоны навыков

Курс: Claude Code: уровень профи — https://zero2claude.ru/learn/claude-code-pro
Канонический URL: https://zero2claude.ru/learn/claude-code-pro/5-2-shablony-navykov

Навык умеет больше, чем инструкция и $ARGUMENTS. Он может подставить в себя вывод команды, держать справку в соседних файлах, работать в отдельном субагенте, принимать именованные аргументы и заранее разрешать нужные инструменты.

Ты уже знаешь, что навык — это папка с файлом `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`:

```markdown
---
name: changes-review
description: Проверяет незакоммиченные изменения по чек-листу команды. Используй, когда просят ревью перед коммитом.
context: fork
arguments: [focus]
allowed-tools: Bash(git diff *)
---

## Изменения

!`git diff HEAD`

## Задача

Проверь изменения выше по [checklist.md](checklist.md), сильнее всего смотри на $focus.
Назови каждую проблему с файлом и строкой, а в конце одной строкой — готово ли к коммиту.
```

И рядом, в той же папке, `checklist.md`:

```markdown
- У каждой изменённой функции есть тест.
- Ошибки сообщаются, а не проглатываются.
- В коде и конфигах нет секретов.
```

Что происходит, когда ты набираешь `/changes-review tests`:

1. Claude Code выполняет `git diff HEAD` и вставляет дифф в текст навыка.
2. Слово `tests` попадает на место `$focus`.
3. Из навыка получается задание для субагента. Он работает в фоне, **не видит твоего разговора**, сам открывает `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 откроет, только если понадобится.

**Осторожно.** 
Подставляемая команда выполняется до того, как Claude вообще увидит навык, и Claude не может её пересмотреть или отменить. Подставляй только команды, которые читают, а не меняют: git diff, git log, git status. И помни, что вывод попадает в контекст: огромный дифф съест его так же, как огромный файл.

**Практика в терминале.** , остальные через >>. Фронтматтер между двумя строками ---, в теле — подстановка диффа. Рядом положи checklist.md и проверь всё командой cat." />
