Home
Hooks
Silent enchantments that cast themselves.
CurrentReviewed 2026-03-31
Overview
Hooks are shell commands configured in settings.json that automatically execute in response to Claude Code events — before/after tool calls, on session start, on prompt submission. We use them for auto-formatting code after edits, killing stale port processes, and logging session activity. Hooks run silently and can block or modify Claude's behavior.
Current Progress
- 5 hooks active: auto-format, port guard, session log, lint gate, pre-submit
- Post-write prettier formatting working reliably
- Port 3000 kill on dev server start prevents conflicts
Areas of Improvement
- No hook for auto-running tests after file changes
- Session logging could capture more structured data for analytics
- Missing hook to validate .env changes don't leak secrets
- Could add notification hook for long-running operations
References
Setup
- Configure hooks in .claude/settings.json or ~/.claude/settings.json
- Define event type: PreToolUse, PostToolUse, Notification, etc.
- Specify matcher for tool-specific hooks (e.g., only on Write tool)
- Set the shell command to execute
Usage
- Auto-format: Run prettier after every file write
- Port guard: Kill port 3000 before dev server starts
- Session log: Record session activity on start
- Lint gate: Run eslint before commits
- Pre-submit: Validate prompt before sending
Config Files
.claude/settings.json~/.claude/settings.json