AmigaОбучение ИИ
Модуль 1 · Навыки · урок 4 из 6

Навыки против других механизмов Claude Code

11 мин чтения▶ есть видеоверсия

Когда вы хотите, чтобы Claude Code «всегда делал вот так», у вас есть несколько путей, и выбор между ними — не вопрос вкуса. Правило в CLAUDE.md стоит токенов в каждой сессии. Навык ничего не стоит, пока не сработал, но может не сработать. Хук сработает всегда, но не умеет думать. В этом уроке — сравнение механизмов по существу и правила выбора.

Пять механизмов в одной таблице

CLAUDE.md и .claude/rules/ Навык (Skill) Субагент Хук (Hook) MCP-сервер
Что это Инструкции в контексте Инструкции по требованию Отдельный экземпляр Claude Команда или проверка на событии Внешние инструменты и данные
Когда загружается В начале каждой сессии (правила с paths — при работе с подходящими файлами) Описание — всегда; тело — когда сработал При делегировании Выполняется при событии Список инструментов — при старте
Кто запускает Никто, всегда есть Claude по описанию или вы через / Claude по описанию или вы через @ Claude Code при событии, без участия модели Claude вызывает инструмент
Гарантия Нет: Claude «старается следовать» Нет Нет Да: срабатывает независимо от модели Да для вызова, нет для решения вызвать
Стоимость контекста Постоянная, каждую сессию Почти нулевая до вызова Отдельный контекст, основной не тратится Нулевая для модели Описания инструментов при старте
Подходит для Факты о проекте, соглашения, команды сборки Многошаговые процедуры, шаблоны, чек-листы Объёмные и изолированные задачи Обязательные действия: линтер, запрет команд Доступ к трекеру, базе, внешним API

Дальше — по парам, потому что путают именно пары.

Оба — текст с инструкциями, оба пишет человек. Разница в том, когда текст попадает в контекст.

CLAUDE.md загружается в каждой сессии целиком. Это правильно для того, что нужно всегда: как собирать проект, где лежат обработчики API, какой стиль отступов, что никогда не делать. Документация советует держать файл в пределах двухсот строк — дальше падает и внимание модели, и ваш бюджет контекста.

Навык загружается, когда нужен. Если инструкция — многошаговая процедура или применяется только к одному типу задач, ей место в навыке. Простая проверка: если абзац из CLAUDE.md начинается словами «когда делаешь X» — это навык. «Тесты запускаются командой npm test» — это CLAUDE.md. «Когда пишешь релиз-ноты, возьми коммиты с прошлого тега, сгруппируй…» — навык.

Между ними есть промежуточный вариант — правила в .claude/rules/ с полем paths: они загружаются, только когда Claude работает с файлами по шаблону. Это для «правил стиля для файлов API», которые не многошаговая процедура, но и не нужны в каждой сессии.

Навык — это что делать. Субагент — кто делает. Навык выполняется в текущем разговоре, с полной историей: Claude помнит, что вы обсуждали, и применяет инструкцию к этому. Субагент стартует с чистым контекстом и возвращает отчёт.

Выбирайте субагента, когда задача порождает много вывода, требует ограничений на инструменты или должна делаться «независимым» экземпляром — например, ревью. Выбирайте навык, когда нужна процедура, встроенная в текущую работу: оформить релиз-ноты, проверить компонент, который вы только что написали.

Они хорошо сочетаются. Навык с context: fork выполняется в субагенте — это навык, которому выдали изоляцию. А субагент с полем skills получает тело навыков в свой контекст при старте — это субагент, которому выдали инструкции. Ревьюер mr-reviewer из курса о субагентах может предзагружать навык api-conventions, чтобы проверять по стандартам команды.

Это самое важное различие. Навык, как и CLAUDE.md, — это контекст: Claude читает инструкцию и следует ей настолько, насколько модель вообще следует инструкциям. Обычно хорошо, но без гарантии.

Хук — это код, который выполняет Claude Code, а не модель. Он срабатывает на событии: перед вызовом инструмента, после редактирования файла, при завершении ответа, при запуске субагента. Хук может заблокировать действие, запустить линтер, добавить в контекст сообщение. Модель не решает, запускать его или нет.

Правило: если что-то должно случиться при каждом коммите или редактировании — хук. «Перед коммитом запускать тесты» в CLAUDE.md — пожелание. Хук на PreToolUse для git commit — гарантия. Если что-то нужно уметь делать правильно — навык. Хук не напишет релиз-ноты, он не думает.

И они тоже сочетаются: в шапке навыка есть поле hooks. Навык деплоя может регистрировать хук, который проверяет каждую Bash-команду до конца сессии. Хуки, объявленные в навыке, действуют с момента его вызова.

Здесь сравнивать уже нечего: custom commands из .claude/commands/ объединены с навыками. Файл .claude/commands/deploy.md и папка .claude/skills/deploy/SKILL.md создают одну и ту же команду /deploy и поддерживают одну шапку. Разница в том, что папка навыка позволяет держать вспомогательные файлы, а поля name и paths в файле команды игнорируются. Новые вещи делайте навыками; старые команды можно не трогать, пока не понадобится что-то из нового.

MCP даёт Claude инструменты: прочитать задачу из трекера, выполнить запрос к базе, отправить сообщение. Навык даёт инструкции, как этими инструментами пользоваться в вашей команде. «Получить задачу по ключу» — инструмент MCP-сервера. «Когда воспроизводишь баг, сначала прочитай задачу, потом найди упомянутые в ней файлы, потом напиши падающий тест» — навык. Один без другого работает хуже: инструменты без инструкций используются как попало, инструкции без инструментов упираются в «я не вижу трекер». Подробнее об MCP — в курсе «Что такое MCP и зачем он нужен».

Как выбирать

Задайте себе три вопроса по порядку.

  1. Это должно случиться гарантированно? Да — хук. Нет — дальше.
  2. Это нужно в каждой сессии? Да — CLAUDE.md (кратко). Нет — дальше.
  3. Это процедура или доступ к данным? Процедура — навык. Доступ — MCP. Процедура с большим объёмом вывода — навык с context: fork или субагент.

Пример из агентства. Команда хочет, чтобы Claude Code перед каждым merge request проверял вёрстку на доступность. Гарантированно? Скорее «настойчиво», без блокировки. В каждой сессии? Нет, только когда есть изменения в компонентах. Процедура? Да, с чек-листом. Значит — навык a11y-check, а если объём проверки большой — с context: fork. Если через месяц выяснится, что Claude иногда забывает, — добавить хук на Stop, который напоминает о проверке, или на PreToolUse для git push, который блокирует пуш без отчёта.

Попробуйте сами

10–15 мин на рабочем месте
  1. Откройте CLAUDE.md своего проекта. Для каждого абзаца ответьте: нужен ли он в каждой сессии? Абзацы с «нет» пометьте как кандидатов в навыки или правила с paths.
  2. Найдите в CLAUDE.md или в голове правило вида «всегда делай X перед Y». Опишите, каким хуком его можно гарантировать (событие, условие, действие). Хук можно не писать — важно увидеть, что это уже не задача для текста.
  3. Возьмите один навык и одного субагента из предыдущих уроков и подумайте, что даст их сочетание: навык с context: fork или субагент с полем skills. Какой вариант проще поддерживать?

Коротко

  • CLAUDE.md — всегда в контексте, для фактов и соглашений; навык — по требованию, для процедур.
  • Навык — «что делать» в текущем разговоре; субагент — «кто делает» в отдельном контексте.
  • Хук — код, а не текст: гарантирует действие на событии, но не думает.
  • MCP даёт инструменты, навык — инструкции, как их применять.
  • Слэш-команды объединены с навыками; при совпадении имён побеждает навык.
  • Механизмы сочетаются: навык с context: fork, субагент с skills, хуки в шапке навыка.

Видеоверсия

Сценарий озвучки · 506 слов, ≈ 4 мин

Когда вы хотите, чтобы Claude Code всегда делал что-то определённым образом, у вас есть несколько путей. И выбор между ними — не вопрос вкуса. Правило в клод-эм-дэ стоит токенов в каждой сессии. Навык ничего не стоит, пока не сработал, но может и не сработать. Хук сработает всегда, но не умеет думать. Разберём механизмы попарно.

Первая пара — навык и клод-эм-дэ. Оба — текст с инструкциями. Разница в том, когда текст попадает в контекст. Клод-эм-дэ загружается в каждой сессии целиком. Это правильно для того, что нужно всегда: как собирать проект, где лежат обработчики, какой стиль. Документация советует держать файл в пределах двухсот строк. Навык загружается, когда нужен. Простая проверка: если абзац начинается словами «когда делаешь то-то» — это навык. «Тесты запускаются такой-то командой» — это клод-эм-дэ. «Когда пишешь релиз-ноты, возьми коммиты с прошлого тега» — навык.

Вторая пара — навык и субагент. Навык — это «что делать». Субагент — «кто делает». Навык выполняется в текущем разговоре, с полной историей: Claude помнит, что вы обсуждали, и применяет инструкцию к этому. Субагент стартует с чистым контекстом и возвращает отчёт. Выбирайте субагента, когда задача порождает много вывода или её должен делать независимый экземпляр — например, ревью. Выбирайте навык, когда нужна процедура, встроенная в текущую работу. И они сочетаются: навык можно запустить в субагенте полем «контекст: форк», а субагенту можно предзагрузить навыки полем «скиллс».

Третья пара — самая важная. Навык и хук. Навык, как и клод-эм-дэ, — это контекст. Claude читает инструкцию и следует ей настолько, насколько модель вообще следует инструкциям. Обычно хорошо, но без гарантии. Хук — это код, который выполняет сам Claude Code, а не модель. Он срабатывает на событии: перед вызовом инструмента, после редактирования файла, при завершении ответа. Хук может заблокировать действие, запустить линтер, добавить сообщение в контекст. Модель не решает, запускать его или нет.

Правило: если что-то должно случиться при каждом коммите — хук. «Перед коммитом запускать тесты» в клод-эм-дэ — это пожелание. Хук на событие перед вызовом инструмента — гарантия. А если что-то нужно уметь делать правильно — навык. Хук не напишет релиз-ноты, он не думает.

Четвёртая пара — навык и слэш-команда. Тут сравнивать нечего: пользовательские команды объединили с навыками. Файл в папке коммандс и папка навыка создают одну и ту же команду. Навык просто умеет больше: вспомогательные файлы, управление вызовом, автоматическое срабатывание. Новое делайте навыками, старое можно не трогать.

И пятая — навык и MCP. MCP даёт Claude инструменты: прочитать задачу из трекера, выполнить запрос к базе. Навык даёт инструкции, как этими инструментами пользоваться в вашей команде. «Получить задачу по ключу» — инструмент. «Когда воспроизводишь баг, сначала прочитай задачу, потом найди файлы, потом напиши падающий тест» — навык. Одно без другого работает хуже.

Как выбирать? Три вопроса по порядку. Первый: это должно случиться гарантированно? Да — хук. Второй: это нужно в каждой сессии? Да — клод-эм-дэ, кратко. Третий: это процедура или доступ к данным? Процедура — навык, доступ — MCP, процедура с большим объёмом вывода — навык в субагенте.

Пример. Команда хочет, чтобы перед каждым merge request проверялась доступность вёрстки. Гарантированно? Скорее настойчиво, без блокировки. В каждой сессии? Нет, только при изменениях в компонентах. Процедура? Да, с чек-листом. Значит — навык. А если через месяц выяснится, что Claude иногда забывает, — добавить хук, который блокирует пуш без отчёта. Так механизмы дополняют друг друга.

Отметка хранится только в вашем браузере