← ClaudeAtlas

meta-claude-hookslisted

Use when writing, editing, debugging or reviewing a Claude Code hook - picking a hook event, writing a matcher, choosing a command/http/mcp_tool/prompt/agent handler, working out what arrives on stdin and what to print to allow, deny or inject context, why exit code 2 blocks one event and is ignored on another, why a hook silently never fires, or how to test one without a live session.
bitranox/bitranox-skills · ★ 1 · AI & Automation · score 57
Install: claude install-skill bitranox/bitranox-skills
# Claude Code hooks Reference baseline: hooks.md, fetched 2026-08-27, 31 events, content 489065ccea52 Hooks are the deterministic layer around the agent: Claude Code runs your handler at a fixed point in its lifecycle, so a rule holds whether or not the model decides to honour it. There are **31 hook events** and **five handler types**. Most people know nine events and one type, which is why the common failure here is not a bug but an absence: building a polling workaround for something a dedicated event already does, or declaring a capability missing because it is not in the familiar nine. ## The shape of every hook, in one block Three levels of nesting, always: the **event**, a **matcher group** that filters it, and the **handlers** that run. Copy this rather than reconstructing it, because the wrapper is the part people invent. ```json { "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/check.sh", "args": [] } ] } ] } } ``` The event name is a **key**, its value is a **list of matcher groups**, and each group has its own inner `hooks` list. An event with no matcher support simply omits `matcher`. Full schema in `references/configuration.md`. ## Step 0: check this reference against upstream, before quoting it The hooks API moves fast - the upstream page carries version-gated behaviour notes spanning many releases, some of them reve