npx claudepluginhub lioartoil/claude-code-handbookDefined in hooks/hooks.json
{
"Stop": [
{
"hooks": [
{
"type": "prompt",
"prompt": "Review the assistant's final response. Reject if the assistant is rationalizing incomplete work: claiming issues are 'pre-existing' or 'out of scope', saying 'too many issues' to fix, deferring to unrequested 'follow-ups', listing problems without fixing them, or skipping test/lint failures with excuses. Respond with {\"ok\": false, \"reason\": \"<specific issue>\"} if any pattern applies, otherwise {\"ok\": true}."
}
]
}
],
"PreToolUse": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/risk-classifier.sh"
}
],
"matcher": "Bash"
},
{
"hooks": [
{
"if": "Bash(git commit*)",
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/cspell-precommit.sh",
"timeout": 30
}
],
"matcher": "Bash"
},
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/dedup-hook.mjs"
}
],
"matcher": "Write|Edit"
}
],
"PostToolUse": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/typecheck-hook.sh"
}
],
"matcher": "Edit|Write"
}
],
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "echo 'Context was compacted. Re-read CLAUDE.md and confirm all project rules are loaded before proceeding.'"
}
],
"matcher": "compact"
}
]
}"Blocks PreToolUse Edit/Write on test files (__tests__, feature_tests.json) to protect harness. Runs bash scripts on SessionStart init, PostToolUse Bash notify, Stop check. Touches bash and file writes."