Превращает коррекцию пользователя «больше не делай X» в исполняемое правило (block/warn через PreToolUse-хук) без кода. Триггеры — "/hookify", "запрети X", "больше так не делай", "правило: никогда не Y", "захукай это".
Installs into .claude/skills of the current project.
Are you the author of Hookify?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/andrewcigan-hookify)
---
name: hookify
description: Превращает коррекцию пользователя «больше не делай X» в исполняемое правило (block/warn через PreToolUse-хук) без кода. Триггеры — "/hookify", "запрети X", "больше так не делай", "правило: никогда не Y", "захукай это".
when_to_use: Когда пользователь хочет заморозить свою коррекцию в постоянный механизм, чтобы агент не повторял ошибку — особенно сразу после того, как агент сделал нежелательное действие и пользователь поправил.
disable-model-invocation: true
---
# /hookify — заморозить коррекцию в правило
Берёт «больше не делай X» и превращает в правило `.harness/user-rules.json`, которое
PreToolUse-хук (`hooks/checks/user-rules.sh`) применяет ко всем будущим действиям.
Непрограммист получает реальный enforcement без написания кода. Закрывает R6/H9/H18.
## Шаг 0: Граница — действие или контент сообщения?
**Хук видит ДЕЙСТВИЯ (команды Bash, пути файлов в Write/Edit), НЕ контент моих сообщений.**
- ✅ **Захукиваемо** (действие): «не делай force-push», «не правь файлы в `migrations/` без ревью», «не запускай `rm -rf` вслепую», «не ставь пакеты глобально», «не коммить прямо в main».
- ❌ **НЕ захукиваемо** (контент сообщения): «не давай технические развилки A/B без объяснения», «не используй жаргон», «не оценивай в человеко-днях», «пиши короче». Это display-only — я читаю оригинал своего текста, хук не может его enforce'ить (ограничение SDK; см. отложенный H5).
Если коррекция про **контент сообщения** — честно сказать: «это правило хуком не enforce'ится,
могу записать как discipline-заметку в SESSION.md / memory, но это не механизм, а напоминание».
**НЕ фабриковать правило-пустышку**, которое не сработает (декларация под видом enforcement).
## Шаг 1: Извлечь намерение
- **tool** — какой инструмент ловим: `Bash` (команды), `Write`/`Edit`/`MultiEdit` (файлы), или `*` (любой целевой).
- **match** — regex по subject (Bash → по тексту команды; Write/Edit → по пути файла). Паттерн ТОЧНЫЙ, чтобы не ловить лишнее.
- **action** — `warn` (по умолчанию, мягко: предупреждение, действие проходит) или `block` (жёстко: действие отменяется). `block` — только если пользователь явно хочет жёсткий запрет.
- **message** — текст при срабатывании (по-русски, по-человечески, без жаргона).
## Шаг 2: Показать правило и подтвердить
Показать готовое правило простым языком + вариант, спросить «такое записать?».
Для `block` подтверждение **обязательно** (это жёсткая отмена действий).
Пример: «Запрещу force-push: любая Bash-команда с `push … --force` будет ОТМЕНЕНА с пояснением. Записать как жёсткий запрет?»
## Шаг 3: Записать в `.harness/user-rules.json`
```bash
mkdir -p .harness
F=.harness/user-rules.json
[ -f "$F" ] || echo '[]' > "$F"
jq '. += [{"id":"<уникальный-id>","tool":"<Bash|Write|Edit|MultiEdit|*>","match":"<regex>","action":"<warn|block>","message":"<текст>"}]' "$F" > "$F.tmp" && mv "$F.tmp" "$F"
jq . "$F" # проверка: валидный JSON + правило на месте
```
## Шаг 4: Сообщить
Правило активно **СРАЗУ** — PreToolUse-проверка читает файл на каждом действии, рестарт не нужен
(событие уже подключено). Активно в профилях `standard`/`strict` (в `minimal` — off).
Сказать пользователю, что коррекция заморожена и с этого момента действует.
## Анти-паттерны
- ❌ Фабриковать правило для контент-коррекции (жаргон / A-B / человеко-дни) — хук это не ловит. Честно сказать «не механизм».
- ❌ Слишком широкий regex (ловит лишние команды) — паттерн точным.
- ❌ `block` без явного подтверждения — block отменяет действия.
- ❌ Молча записать правило — всегда показать и подтвердить.