Как заставить ИИ-агента включать нужные навыки: Claude Code hooks

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

Например, вы просите поправить статью. В проекте уже есть навык для публикации, проверка текста, правила SEO и запрет на служебные строки в теле статьи. Но агент может начать писать сразу, а вспомнить про ревью только в конце. Для человека это выглядит как "он же знал, почему не применил". Для системы это другой вопрос: где стоит gate перед началом работы?

Claude Code hooks как раз интересны не как очередная настройка, а как способ поставить маленький обязательный шаг перед действием. Hook может сработать на событие, например перед отправкой пользовательского запроса в агентный контур, и добавить инструкцию: сначала проверь доступные навыки, правила проекта и риск задачи, потом работай.

Что такое hook простыми словами

Hook - это автоматическая реакция на событие в рабочем процессе. В Claude Code hook можно привязать к моменту, когда пользователь отправляет запрос, когда агент собирается вызвать инструмент или когда завершается действие. В документации есть разные события и варианты команд, но для навыков особенно понятен сценарий UserPromptSubmit: пользователь только отправил задачу, агент еще не начал действовать.

Именно в этот момент удобно поставить проверку:

  • какая это задача;
  • какие навыки есть в проекте;
  • какие из них обязательны;
  • какие правила нельзя нарушать;
  • нужна ли проверка перед публикацией, отправкой, удалением или изменением данных.

В источнике из нашего журнала был пример скрипта skill-forced-eval-hook.sh, который заставляет агента явно оценить навыки перед работой. Сам скрипт можно написать по-разному, но идея важнее реализации: если навык критичен, он должен быть частью входного контроля, а не надеждой на внимательность.

Почему это не просто "напоминалка"

Обычная инструкция в проекте работает как текст на стене. Агент может ее прочитать, а может утонуть в задаче, особенно если контекст большой. Hook работает ближе к турникету: пока не пройдена короткая проверка, процесс не должен идти дальше.

Это особенно полезно в четырех случаях.

Ситуация Что часто ломается Что дает hook
В проекте много навыков агент выбирает общий путь просит явно выбрать подходящий навык
Есть опасные действия агент слишком быстро запускает команду напоминает о ревью, dry-run или подтверждении
Есть правила публикации служебные поля попадают в публичный текст требует отделить тело статьи от SEO и логов
Есть повторяемый процесс каждый раз вспоминают вручную превращает правило в постоянный шаг

В этом смысле hooks полезны и для разработчика, и для редакции, и для контент-завода. Они не делают агента умнее сами по себе. Они делают начало работы менее случайным.

Какой навык отсюда собрать

Главный навык: описывать не только задачу, но и входной фильтр перед задачей.

Если агент должен писать статью, входной фильтр может сказать: проверь источники, не клади SEO в тело статьи, после черновика запусти ревью. Если агент должен менять код, фильтр может сказать: найди тесты, прочитай локальные правила, не трогай чужие изменения. Если агент должен отправлять посты, фильтр может сказать: не отправляй напрямую, передай задачу в очередь.

Хороший hook отвечает на три вопроса:

  1. Что агент обязан вспомнить до начала работы.
  2. Что агенту запрещено делать без проверки.
  3. Какой артефакт должен остаться после работы.

Для Claude Code это может быть маленькая команда в настройках. Для другой системы это может быть preflight-подсказка, локальный скрипт, policy-файл или первый шаг в очереди задач. Форма меняется, смысл остается.

Мини-шаблон для своего проекта

Начать можно без сложной архитектуры. Достаточно сформулировать один preflight-текст:

Перед началом работы определи тип задачи, проверь доступные навыки проекта, выбери обязательные, назови рискованные действия и только после этого переходи к выполнению.

Потом этот текст можно перенести в hook, project instruction или локальный агентный шаблон. Важно не копировать чужой скрипт вслепую, а собрать свой маленький контракт: какие навыки есть, когда они обязательны, что считается ошибкой.

Рабочая карточка:

Что это меняет в работе с агентами

Поле Что записать
Когда использовать Когда агент часто забывает навык, ревью или правило проекта
Что подать на вход Список навыков, правила безопасности, типы задач
Что сделать Поставить preflight-проверку перед началом работы
Как проверить качество Агент явно выбирает навык до выполнения, а не после ошибки
Когда не использовать Для случайных экспериментов, где жесткий процесс только мешает

Мы часто думаем об ИИ-агентах как о "модели, которая умеет больше". Но на практике полезность часто появляется не от большей модели, а от меньшего количества случайных пропусков.

Hooks дают простой урок: если действие важно, оно должно стоять в процессе. Не в памяти человека, не в надежде на внимательность агента, не в длинном документе на двадцатой странице, а прямо перед началом работы.

Для маленького проекта это дисциплина. Для агентной фабрики это уже инфраструктура: навык выбирается до действия, проверка запускается до публикации, очередь получает задачу после ревью, а не когда пользователь заметил ошибку в ленте.

Источники:

  1. Anthropic Docs: Claude Code hooks
  2. Claude Code Docs: hooks reference
  3. Example: skill-forced-eval-hook.sh
  4. ONFF: Claude Code для начинающих, Skills и MCP