Claude Code hooks are user-defined shell commands, LLM prompts, or agent evaluations that execute automatically at specific lifecycle points. Hooks receive JSON context via stdin, take action, and communicate results through exit codes, stdout, and stderr.
When to use: Blocking dangerous commands, auto-formatting after writes, protecting sensitive files, custom notifications, environment setup, enforcing project conventions, auto-approving safe tools, running tests after changes.
When NOT to use: Static context injection (use CLAUDE.md), simple permission rules (use allowlist settings), one-time setup (use shell scripts directly).
Create event hooks for Claude Code that trigger on tool calls, prompts, and lifecycle events. Use when automating workflows, blocking dangerous commands, protecting files, or adding notifications. Use for hooks, PreToolUse, PostToolUse, event handling, automation. Source: oakoss/agent-skills.