Claude Certified Architect · Модуль 3 · Урок 3.2
Кастомные slash-команды и навыки (skills)
Суть
Slash-команды — Markdown-шаблоны; область проектная (.claude/commands/) или личная (~/.claude/commands/). Навыки (skills) мощнее: их YAML-фронтматтер управляет изоляцией, доступом к инструментам и запросом аргументов.
Ключи фронтматтера
context: fork изолирует исполнение навыка в субагенте — многословный вывод не копится в основном диалоге, возвращается лишь сводка (это про накопление контекста, не про права на инструменты). allowed-tools ограничивает доступные инструменты (Read, Write, Edit, Bash). argument-hint подсказывает недостающий аргумент при вызове.
---
name: architecture-review
description: Анализирует архитектуру и возвращает сжатую сводку
context: fork
allowed-tools:
- Read
- Grep
argument-hint: "path/to/module"
---Anti-patterns
| Ловушка | Почему не работает | Верный паттерн |
|---|---|---|
Навык без context: fork для многословного исследования | Весь вывод копится в основном диалоге, исчерпывает контекст | context: fork — разведка в изоляции, возвращается лишь сводка |
Личную экспериментальную команду класть в .claude/commands/ | Всё в .claude/commands/ шарится с командой через VCS | Личное — в ~/.claude/commands/; командное — в .claude/commands/ |
Пропустить allowed-tools у навыка-«писателя» | Навык может вызвать любой инструмент, включая разрушительный Bash | Указать allowed-tools: [Write, Edit] — только безопасные операции |
Exam traps
| Ловушка | Почему не работает | Верный паттерн |
|---|---|---|
| Путать область навыков с областью команд | Они разные по умолчанию | Помнить область для каждого артефакта |
Считать, что context: fork ограничивает инструменты | Он ограничивает накопление контекста, не права | Для прав — allowed-tools |
Забыть argument-hint у навыка с параметрами | Пользователь не знает, что передать | Указать argument-hint |
Практическое задание (T2)
- Создать проектную команду
.claude/commands/pr-review.mdи проверить доступ команды через git. - Создать навык с
context: forkдля анализа базы; убедиться, что многословный вывод НЕ попадает в основную историю. - Создать навык с
allowed-tools: [Write, Edit]; попытаться вызвать Bash и подтвердить блокировку. - Создать навык с
argument-hint: "path/to/target"; вызвать без аргументов и увидеть подсказку. - Создать личный вариант командного навыка в
~/.claude/skills/под другим именем; подтвердить, что коллеги его не видят.
Проверка знаний
Продуктивность разработчика с Claude
Навык codebase-audit читает все исходники, генерирует детальный промежуточный анализ по каждому и финальную сводку. После запуска весь пофайловый анализ осел в основном диалоге, ответы стали медленнее. Какое одно изменение фронтматтера это починит?
Верный ответ: B
B верно. context: fork изолирует многословный вывод навыка: весь промежуточный анализ остаётся в субагенте, в основной диалог возвращается лишь сводка. A ограничивает инструменты, не многословность. C меняет область шаринга, не контекст исполнения. D — argument-hint запрашивает аргумент, а не управляет объёмом вывода.
Продуктивность разработчика с Claude
Нужен навык generate-migration, который пишет SQL-файлы миграций, но никогда не исполняет их через Bash. Как настроить фронтматтер?
Верный ответ: B
B верно. allowed-tools — ключ ограничения инструментов; [Write, Edit] не даст вызвать Bash независимо от текста навыка. A вероятностно — инструкцию можно обойти. C — context: fork изолирует контекст, не права; Bash бы исполнился. D — область влияет на шаринг, не на права.
Продуктивность разработчика с Claude
Навык /deploy читает инфраконфиг, строит план развёртывания и исполняет его через Bash. Джуниор случайно задеплоил в прод. Нужен структурный предохранитель против исполнения без явного ревью плана. Самый надёжный подход?
Верный ответ: B
B верно. Разделение создаёт структурные ворота: /deploy-plan физически не может исполнить (нет Bash), а /deploy-execute требует явного второго вызова после ревью. A — промпт-подтверждение и так подразумевалось. C — context: fork изолирует диалог, но Bash всё равно исполнится. D не мешает передать неверное окружение.