diff --git a/hooks/hooks.json b/hooks/hooks.json new file mode 100644 index 0000000..e144eac --- /dev/null +++ b/hooks/hooks.json @@ -0,0 +1,83 @@ +{ + "$schema": "https://claude.ai/schemas/hooks.json", + "hooks": { + "PreToolUse": [ + { + "matcher": "Bash", + "hooks": [ + { + "type": "command", + "command": "bash ./hooks/prefer-core.sh" + } + ], + "description": "Block destructive commands (rm -rf, sed -i, xargs rm) and enforce core CLI" + } + ], + "PostToolUse": [ + { + "matcher": "tool == \"Edit\" && tool_input.file_path matches \"\\.go$\"", + "hooks": [ + { + "type": "command", + "command": "bash ./scripts/go-format.sh" + } + ], + "description": "Auto-format Go files after edits" + }, + { + "matcher": "tool == \"Edit\" && tool_input.file_path matches \"\\.php$\"", + "hooks": [ + { + "type": "command", + "command": "bash ./scripts/php-format.sh" + } + ], + "description": "Auto-format PHP files after edits" + }, + { + "matcher": "tool == \"Edit\"", + "hooks": [ + { + "type": "command", + "command": "bash ./scripts/check-debug.sh" + } + ], + "description": "Warn about debug statements (dd, dump, fmt.Println)" + }, + { + "matcher": "tool == \"Bash\" && tool_input.command matches \"^git commit\"", + "hooks": [ + { + "type": "command", + "command": "bash ./scripts/post-commit-check.sh" + } + ], + "description": "Warn about uncommitted work after git commit" + } + ], + "PreCompact": [ + { + "matcher": "*", + "hooks": [ + { + "type": "command", + "command": "bash ./scripts/pre-compact.sh" + } + ], + "description": "Save state before auto-compact to prevent amnesia" + } + ], + "SessionStart": [ + { + "matcher": "*", + "hooks": [ + { + "type": "command", + "command": "bash ./scripts/session-start.sh" + } + ], + "description": "Restore recent session context on startup" + } + ] + } +}