導入
CLAUDE.md のルールは「お願い(守られないこともある)」ですが、フックは「必ず実行される仕組み」です。「編集後に必ずフォーマッタをかける」のように、例外なく毎回起きてほしい処理はフックにします。
説明
フックは、Claude Code の作業の節目(ライフサイクルイベント)で、あなたが指定したコマンドを自動実行します。設定は .claude/settings.json に書き、/hooks で一覧を確認できます。
代表的なイベントです。
PreToolUse ツール実行の前(例: 危険なコマンドをブロック)
PostToolUse ツール実行の後(例: 編集後に自動フォーマット・テスト)
Stop ターンの終了時(例: テストが通るまで終わらせない)
SessionStart セッション開始時
flowchart LR
E["ファイル編集"] --> H{"PostToolUse<br/>フック"}
H --> F["eslint --fix を自動実行"]
F --> T["テストを走らせる"]
うれしいことに、フックは Claude Code 自身に書いてもらえます。「ファイル編集のたびに eslint を走らせるフックを書いて」「migrations フォルダへの書き込みをブロックするフックを書いて」のように頼めます。
CLAUDE.md(お願い)とフック(強制)の使い分けが肝心です。絶対に毎回・例外なく起きてほしいことだけをフックにし、それ以外はまず CLAUDE.md で足りるか考えましょう。
読んでみよう
「守ってほしいお願いは CLAUDE.md、絶対に外せない処理はフック」。毎回手でやっている定型処理があれば、/hooks を覗いて自動化できないか考えてみましょう。