# claude-hook-writer

Скилл-наставник по хукам Claude: проверяет дизайн, подсказывает безопасные паттерны и разбирает частые промахи.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 397 установок · ★ 236
- Автор: Claude Skills Maintainers
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/secondsky/claude-skills/tree/HEAD/plugins/claude-hook-writer/skills/claude-hook-writer/SKILL.md
- Обновлён: 2026-10-20
- HTML: https://affpapa.org/nevibecode/skills/claude-hook-writer

## Что делает

Скилл ведёт вас через проектирование хука: какой ивент выбрать (`PreToolUse`, `PostToolUse`, `UserPromptSubmit`, `SessionStart`, `SessionEnd`, `Notification`, `Stop`, `SubagentStop`, `PreCompact`), какой matcher поставить и нужен ли вообще командный хук вместо промптового. Отдельный чек-лист разбирает вход: какие поля приходят от разных инструментов и что проверять перед использованием.

Внутри — разбор пяти типовых провалов. Среди них невалидированный JSON из stdin, из-за которого хук может удалить файл за пределами проекта, и неверный код выхода: `exit 1` в `PreToolUse` пишет ошибку в лог, но операцию не блокирует, для блокировки нужен `exit 2`. Ещё один пункт — синхронные тяжёлые команды вроде `npm test` или `npm run build`, которые держат Claude в ожидании; их советует уводить в фон и возвращать управление сразу.

Скилл ссылается на справочники `references/security-requirements.md` и `references/reliability-performance.md` — они подгружаются по мере надобности. Практическая позиция простая: если хук трогает файлы или чувствительные данные, сначала прогоните его на именах с пробелами и Unicode, потому что именно на них ломается незакавыченная переменная.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add secondsky/claude-skills --skill claude-hook-writer -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/claude-hook-writer/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/claude-hook-writer/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add secondsky/claude-skills --skill claude-hook-writer -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/claude-hook-writer/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add secondsky/claude-skills --skill claude-hook-writer -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/claude-hook-writer/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install secondsky/claude-skills claude-hook-writer
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/claude-hook-writer/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add secondsky/claude-skills --skill claude-hook-writer -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/secondsky/claude-skills --path plugins/claude-hook-writer/skills/claude-hook-writer
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/claude-hook-writer/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add secondsky/claude-skills --skill claude-hook-writer -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/secondsky/claude-skills/tree/HEAD/plugins/claude-hook-writer/skills/claude-hook-writer/SKILL.md

## Когда брать
- спроектировать хук под нужный ивент Claude
- выбрать matcher, чтобы хук не срабатывал на каждом вызове инструмента
- закрыть path traversal в хуке, который удаляет или правит файлы
- починить хук, который не блокирует операцию из-за неверного кода выхода
- вынести долгие команды в фон, чтобы не тормозить сессию

## Примеры запросов агенту
- помоги написать хук PreToolUse, который блокирует правку .env
- проверь мой хук: он должен возвращать exit 2 при попытке записи вне проекта
- почему мой PostToolUse-хук с prettier зависает на 30 секунд?

## Похожие
- [thread-writer](https://affpapa.org/nevibecode/skills/openclaudia-thread-writer.md) — скилл · 461 установка
- [ctf-misc](https://affpapa.org/nevibecode/skills/ctf-misc.md) — скилл · 8800 установок
- [openclaw-audit-watchdog](https://affpapa.org/nevibecode/skills/openclaw-audit-watchdog.md) — скилл · 751 установка
- [access-review](https://affpapa.org/nevibecode/skills/access-review.md) — скилл · 337 установок
- [incident-responder](https://affpapa.org/nevibecode/agents/voltagent-community-incident-responder.md) — субагент · 265 установок
- [careful](https://affpapa.org/nevibecode/skills/careful.md) — скилл · 375 установок

Из того же набора: [secondsky/claude-skills](https://affpapa.org/nevibecode/by/secondsky/claude-skills.md) — 89 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
