Скилловик

Практическая статья

Skill, hook или workflow: как сделать проверку обязательной

Skill объясняет агенту процесс, hook привязывает команду к событию клиента, а CI или другой workflow решает, можно ли принять изменение. Надёжный гейт обычно собирается из этих трёх слоёв.

Маршрут Agent Skill проходит через автоматический контроль и обязательный финальный гейт

Может ли Skill сделать проверку обязательной?

Не сам по себе. Skill задаёт инструкции и может попросить агента запустить validator, но выбор и исполнение остаются частью поведения модели и клиента. Для технической гарантии нужен детерминированный триггер или внешний гейт.

Сначала определите, что означает «обязательно»: команда должна запускаться после каждого изменения, плохой результат должен останавливать действие или непрошедшее изменение нельзя сливать в основную ветку. Это три разные границы, и один механизм редко закрывает их все.

Чем отличаются skill, hook и workflow?

Skill хранит способ работы, hook автоматически реагирует на событие в конкретном клиенте, workflow запускается в независимом контуре и может стать условием приёмки.

МеханизмЧто делаетЧего не гарантирует
SkillОбъясняет когда, чем и как проверятьЧто модель не пропустит шаг
HookЗапускает команду на событии клиентаЧто проверка охватила все пути изменения
CI / workflowПроверяет сохранённое изменение независимо от сессииЧто локальное опасное действие уже не произошло
Ruleset / защита веткиНе принимает изменение без успешной проверкиКачество самой проверки

Общее сравнение проектных инструкций, skills и MCP находится в статье AGENTS.md, CLAUDE.md, SKILL.md и MCP.

Где поставить обязательный гейт?

Ставьте гейт перед последствием, которое нельзя принимать без доказательства: записью во внешний сервис, публикацией, merge, deploy или передачей результата заказчику.

  1. 1. Назовите защищаемое действие

    Например: merge в main, отправка письма, изменение production или выгрузка клиентского файла.

  2. 2. Определите наблюдаемую проверку

    Команда должна вернуть однозначный exit code и короткое доказательство: отчёт, hash, список assertions или ссылку на run.

  3. 3. Выберите ближайший детерминированный триггер

    После редактирования — hook; при pull request — CI; перед внешней записью — policy или подтверждение операции.

  4. 4. Закройте обходной путь

    Проверьте, можно ли изменить файл через shell вместо редактора, обойти path filter или выполнить действие вне защищённой ветки.

Как выглядит рабочая трёхслойная схема?

Skill готовит проверяемый результат, hook даёт быструю локальную обратную связь, а CI повторяет проверку в чистой среде и блокирует приёмку при ошибке.

  • В SKILL.md: условия запуска validator, критерии успеха и запрет объявлять работу готовой без evidence.
  • В hook: быстрый форматтер, lint или проверка изменённых файлов с ограниченным временем выполнения.
  • В CI: чистая установка, полный набор тестов и сохранение отчёта.
  • В правилах ветки: успешный status check обязателен для merge.
  • Для внешних действий: отдельное подтверждение человека или policy-гейт.

Дублирование команды допустимо: локальный hook экономит обратную связь, а независимый workflow не доверяет состоянию сессии. Важно, чтобы оба слоя вызывали один версионируемый validator, а не две расходящиеся реализации.

Почему обязательная проверка всё равно может не сработать?

Чаще всего hook слушает не все способы изменения, workflow пропускается фильтром, ошибка validator замаскирована нулевым exit code или правило ветки не требует этот check.

СбойКонтрольный тест
Изменение через другой toolСоздать файл через editor и shell, убедиться, что оба пути видны
Пропущенный workflowИзменить только файл на границе paths-фильтра
Ложный успехПодать заведомо плохой fixture и ожидать ненулевой exit code
Неправильный matcherЗапустить все заявленные события клиента
Необязательный checkПопытаться принять изменение без результата проверки

Какой минимальный набор внедрить сначала?

Начните с одного validator, одного локального триггера и одного независимого гейта на самом ценном действии. Расширяйте покрытие только после отрицательного теста каждого слоя.

  • Validator запускается одной документированной командой.
  • Одинаковая команда используется локально и в CI.
  • Ошибка возвращает ненулевой exit code и понятное сообщение.
  • Workflow сохраняет краткое evidence.
  • Защищаемое действие нельзя завершить при красном или отсутствующем check.
  • Есть владелец, который обновляет триггеры при смене tools и путей.

Если validator ещё не спроектирован, используйте руководство как добавить самопроверку в Agent Skill.

Спроектировать обязательный гейт

Источники

  1. Automate actions with hooksAnthropic; проверено
  2. Extend Claude with skillsAnthropic; проверено
  3. Triggering a workflowGitHub; проверено
  4. About rulesetsGitHub; проверено
  5. Using scripts in skillsAgent Skills; проверено