--- name: hooks-builder type: standard depth: extended description: >- Creates and configures Claude Code hooks for lifecycle automation. Use when implementing PreToolUse validation, PostToolUse formatting, PermissionRequest auto-approve, custom notifications, session management, or deterministic agent control. --- # [H1][HOOKS-BUILDER] >**Dictum:** *Deterministic behavior requires hooks; prompts fail execution guarantees.*
Build Claude Code hooks—shell commands execute at agent lifecycle events. **Tasks:** 1. Read [index.md](./index.md) — Reference file listing for navigation 2. Read [lifecycle.md](./references/lifecycle.md) — Event table, input schemas, exit codes 3. Read [schema.md](./references/schema.md) — Configuration structure, matchers, JSON responses 4. (integration) Read [integration.md](./references/integration.md) — Environment variables, context injection 5. (scripting) Read [scripting.md](./references/scripting.md) — Python standards, security patterns 6. (recipes) Read [recipes.md](./references/recipes.md) — Proven implementation patterns 7. (troubleshooting) Read [troubleshooting.md](./references/troubleshooting.md) — Known issues, platform workarounds 8. (prose) Load `style-standards` skill — Voice, formatting, constraints 9. Validate — Quality gate; see §VALIDATION **Scope:** - *Event Selection:* Choose hook type by automation goal (blocking vs observing). - *Configuration:* Author settings.json entries with matchers and timeouts. - *Response Handling:* Control agent via exit codes, JSON responses, or prompt evaluation. [REFERENCE]: [index.md](./index.md) — Complete reference file listing --- ## [1][EVENT_SELECTION] >**Dictum:** *Automation goal determines hook type; blocking capability varies by event.*
**Decision Gate:**
- *Intercept before execution?* → PreToolUse (validate/block/modify parameters) - *Control permission dialogs?* → PermissionRequest (auto-approve/deny) - *React after completion?* → PostToolUse (format, lint, add context) - *Inject at session boundaries?* → SessionStart (context), UserPromptSubmit (per-message) - *Evaluate task completion?* → Stop/SubagentStop (prompt type for LLM judgment) **Blocking vs Observing:** - *Blocking (exit 2):* PreToolUse, PermissionRequest, PostToolUse, UserPromptSubmit, Stop, SubagentStop - *Observing only:* Notification, PreCompact, SessionStart, SessionEnd --- ## [2][CONFIGURATION] >**Dictum:** *Centralized configuration enables scope-aware hook precedence.*
| [INDEX] | [SCOPE] | [PATH] | [USE] | [GIT] | | :-----: | ------- | ----------------------------- | -------------------- | :----: | | [1] | User | `~/.claude/settings.json` | Global, all projects | N/A | | [2] | Project | `.claude/settings.json` | Shared, committed | Commit | | [3] | Local | `.claude/settings.local.json` | Personal, testing | Ignore | **Precedence:** Local > Project > User. --- ## [3][IMPLEMENTATION] >**Dictum:** *Deterministic and evaluative patterns require distinct execution modes.*
| [INDEX] | [TYPE] | [USE_CASE] | [TIMEOUT] | [CHARACTERISTICS] | | :-----: | ------- | -------------------------------- | :-------: | ----------------------- | | [1] | command | Validation, formatting, rules | 60s | Deterministic, fast | | [2] | prompt | Complex evaluation, LLM judgment | 30s | Context-aware, flexible | **Prompt Type Scope:** Stop and SubagentStop events only; Haiku provides fast LLM evaluation. **Guidance:**
- `Command hooks` — Deterministic scripts receive JSON stdin; return exit codes + optional JSON stdout. - `Prompt hooks` — LLM evaluates decisions; response schema: `{"decision": "approve"|"block", "reason": "..."}`. - `Blocking` — Exit code 2 blocks action; stderr routes to Claude. Exit 1 also blocks (known bug #4809). --- ## [4][SCRIPTING] >**Dictum:** *Hook reliability requires functional pipeline patterns.*
Python 3.14+ with strict typing. Zero imperative patterns. --- ## [5][VALIDATION] >**Dictum:** *Gates prevent incomplete artifacts.*
[VERIFY] Completion: - [ ] Event: Selected correct hook type for automation goal. - [ ] Schema: Configuration structure validated per schema.md. - [ ] Integration: Environment variables and context injection applied. - [ ] Scripting: Security patterns and tooling gates passed. - [ ] Quality: JSON syntax valid, timeouts appropriate. [REFERENCE] Operational checklist: [→validation.md](./references/validation.md)