SKILLEMALL.ai

AC claude-code-hooks

Как писать, тестировать, регистрировать и отлаживать хуки Claude Code — PreToolUse / PostToolUse / SessionStart / Stop Bash, которые обеспечивают соблюдение правила, которое модель в противном случае обошла бы сама. Используйте всякий раз, когда пользователь хочет создать хук, заблокировать/перехватить вызов инструмента, превратить многократно нарушаемое правило в жесткий контроль, добавить защитный механизм, отладить хук, который срабатывает неправильно или "отравляет сеанс", зарегистрировать хук в разных профилях или упоминает хуки / PreToolUse / Stop hook / 拦截 / 守卫 / 钩子 / 拦下. Включает в себя труднодостижимые подводные камни: UserPromptSubmit видит только ввод пользователя, никогда текст самого Claude — правило о собственном выводе Claude должно быть в Stop; сопоставление на уровне токенов (никогда не разделение awk); тестирование bash -n + реального JSON от начала до конца ПЕРЕД регистрацией (поврежденный хук PreToolUse отравляет каждый вызов Bash); SSOT + символическая ссылка, чтобы переустановка ~/.claude не могла его потерять; сходимость нескольких профилей; и механизмы выпуска с подтверждением человеком. Используйте это даже для "прекрати делать X" — долговечное прекращение — это хук, а не напоминание.

машинный переводПоказать оригиналСкрыть оригинал«How to write, test, register, and debug Claude Code hooks — PreToolUse…»

How to write, test, register, and debug Claude Code hooks — PreToolUse / PostToolUse / SessionStart / Stop Bash guards that enforce a rule the model would otherwise talk itself past. Use whenever the user wants to create a hook, block/intercept a tool call, turn a repeatedly-violated rule into a hard gate, add a guard rail, debug a hook that misfires or "poisons the session", register a hook across profiles, or mentions hooks / PreToolUse / Stop hook / 拦截 / 守卫 / 钩子 / 拦下. Bakes in the hard-won pitfalls: UserPromptSubmit only ever sees user input, never Claude's own text — a rule about Claude's own output belongs on Stop instead; token-level shlex matching (never awk splitting); bash -n + real-JSON end-to-end testing BEFORE registering (a corrupted PreToolUse hook poisons every Bash call); SSOT + symlink so a ~/.claude reinstall can't lose it; multi-profile convergence; and human-confirmation release gates. Reach for this even for "make it stop doing X" — a durable stop is a hook, not a reminder.

daymade/claude-code-skills Agent Skills автор: daymade 5 файлов · 2 скрипта тело ≈ 21 791 токенов Открыть источникgithub.com проанализирован 2 ч назад

Как писать, тестировать, регистрировать и отлаживать хуки Claude Code — PreToolUse / PostToolUse / SessionStart / Stop Bash, которые обеспечивают соблюдение…

Как процесс C 59/100 · Есть пробелы — слабые места: результат и критерий готовности, входы и предусловия, стоимость исполнения

ПроцедураРазработкаИИ и агентытип и темы размечены автоматически по тексту скилла
JSON
Технический рейтинг
A
93/100
безопасность, качество, тесты
Безопасность 60%
100
Качество 40%
83
Прогон на моделях
не было
Процессный рейтинг
C
59/100
Есть пробелы
Результат и критерий готовности вес 14
0
Входы и предусловия вес 11
0
Стоимость исполнения вес 6
10
три самых слабых из десяти параметров · все десять

Как улучшить

  1. Тело SKILL.md длиннее 5 000 токенов: вынесите справочные детали в references/ и подключайте по необходимости.
Для прогона на моделях — необязательно
  • Свои кейсы (evals/evals.json, 4–6 реальных запросов с ожидаемыми ответами): тогда полная проверка прогонит именно их, а не черновик от модели.
  • spec.yaml с триггерными фразами и утверждениями — контракт поведения для CI; `skilltest init` создаст шаблон.

Находки guard · 0

✓ Критических и высоких находок нет

Просканировано файлов: 5. Улики замаскированы. Пометки в серых чипах объясняют, почему серьёзность понижена.

По спецификации Agent Skills

  • предупреждение body-long тело SKILL.md ≈ 21791 токенов (рекомендуется < 5000); вынесите детали в references/

Процессный рейтинг: все десять параметров 59/100

  • 0Результат и критерий готовности. Не сказано, что считать результатом
  • 0Входы и предусловия. Не сказано, что нужно иметь на входе
  • 10Стоимость исполнения. Тело инструкции 21791 токенов: вытесняет саму задачу из окна
  • 60Инструменты и файлы. Используются инструменты (bash, web, git, python), но во frontmatter они не объявлены
  • 70Когда включается. Сказано, когда применять, но не сказано, когда не стоит
  • 100Шаги. Шагов: 59
  • 100Ошибки и развилки. Развилок: 3, есть раздел про ошибки
  • 100Согласованность. Имя и обязательные поля на месте
  • 100Повторный запуск. Изменяющие операции проверяют текущее состояние
  • 100Отчётность по ходу. Скилл сообщает о ходе работы
  • medium Правила безопасности и запреты внутри скилла: их место в системном промпте, здесь они не защищают
  • low Ответ описан самодельной разметкой (16 тегов): типизированный вызов надёжнее

Всё перечисленное измерено по тексту скилла, а не оценено моделью: цифры проверяемы. Вес параметра тем больше, чем чаще из-за него процесс встаёт.

Сигналы качества

  • +4Описание не говорит, когда скилл НЕ применять (ложные срабатывания)
  • +3Длина description 1009: рекомендуется 120–800 символов
  • +3Формат ответа не описан: модель каждый раз решает сама
  • +1Лицензия не указана
  • +2Инструкции на одном языке
  • +5В description 2 примера фраз-триггеров в кавычках
  • +4Структура: 18 заголовков
  • +3Пошаговые инструкции: 59 пунктов
  • +4Есть примеры (11 блоков кода)
  • +4Справочные файлы упоминаются в инструкциях (2 из 2)
  • +3Все 2 скриптов описаны в инструкциях

База качества 70; замечания lint вычитаются, сигналы прибавляют до 100. Итог: 83.