CLAUDE.mdにルールを書いたのに、なぜか守られないことがあります。逆に、たった数行のフックのほうが確実に効くこともあります。この違いを生んでいるのは書き方の丁寧さではなく、その置き場所がもともと持っている強制力の違いです。
Claude Codeが指示を読みに行く場所は複数あり、それぞれ役割が違います。このレッスンでは、CLAUDE.md・スキル・フックという3つを「強さ」という1本の軸で並べ直します。個々の書き方は、CLAUDE.mdファイル・スキル・フックですでに扱ったので、ここでは繰り返しません。
3つの置き場所、強さが違う
毎回のセッション開始時に読み込まれる。ただし内容は文脈として渡されるだけで、Claudeが判断材料として使う「助言」にとどまる
話題が合った会話でだけ、必要になった時点で自動的に開く。特定の作業の手順や資料を置く場所
決まったタイミングで必ず実行されるシェルコマンド。Claudeの判断を介さず、条件に一致すれば毎回同じことが起きる
3つとも「Claudeに何かを伝える仕組み」という点では同じに見えますが、破られたときに何が起きるかがまったく違います。CLAUDE.mdとスキルは、最終的にどう振る舞うかをClaude自身の判断に委ねています。フックだけが、判断を介さずに動くコードです。
「書いたのに守られない」の正体
CLAUDE.mdの扱いについて、公式ドキュメントはこう説明しています。
“Claude treats them as context, not enforced configuration. To block an action regardless of what Claude decides, use a PreToolUse hook instead.”
筆者訳Claudeはそれらを、強制される設定ではなく文脈として扱う。Claudeがどう判断しようと関係なく行動をブロックしたいなら、代わりにPreToolUseフックを使うこと。
CLAUDE.mdは、毎回きちんと読み込まれます。それでも「読み込まれる」ことと「必ず従われる」ことは別問題です。特にCLAUDE.mdが長くなってくると、個々の指示が他の指示に埋もれて、優先順位がぼやけていきます。書いたはずなのに守られない、という体験の多くは、CLAUDE.mdという場所そのものの性質から来ています。
絶対に外せないルールは、フックに置く
一方でフックについて、公式ドキュメントは対照的な言い方をしています。
“Unlike CLAUDE.md instructions which are advisory, hooks are deterministic and guarantee the action happens.”
筆者訳助言にとどまるCLAUDE.mdの指示と違い、フックは決定論的で、その行動が起きることを保証する。
フックは、Claudeのライフサイクルの決まった地点でシェルコマンドを実行する仕組みです。たとえばファイルを編集する直前に割り込むフックを置けば、終了コード2を返すだけでその編集を止められます。「たいてい従う」ではなく「必ず止まる」という違いは、この決定論的な仕組みから来ています。
CLAUDE.mdに書く指示 / フックに置くルール
「テストは変更したファイルに関連するものだけ実行する」「コミットメッセージは日本語で書く」といった、破られても実害が小さく、状況次第で例外がありうる指示。Claudeが読んで判断材料にする分には十分機能します。
「mainブランチへ直接pushしない」「本番用の設定ファイルを書き換えない」といった、一度でも破られたら困るルール。CLAUDE.mdに書いても「たいてい従う」止まりなので、確実に止めたいならフックの出番です。
判断の目安
置き場所に迷ったら、2つの問いを順番に立ててみてください。
置き場所を決める2つの問い
常時のことか、その場のことか
常時適用したい慣習ならCLAUDE.md、特定の作業のときだけ必要な手順ならスキル
破られたら困るか
判断を委ねてよいならCLAUDE.md、絶対に一度も破られては困るルールならフック
この2つを順に当てると、「毎回のことだが、絶対ではない」はCLAUDE.md、「特定の作業だけに要る手順」はスキル、「絶対に守らせたい」はフック、という振り分けに落ち着きます。
やってみよう
演習1:自分のCLAUDE.mdを読み返す
自分のCLAUDE.md(またはチームのもの)を開き、「これが破られたら本当に困る」と言い切れる行を探してください。1行でも見つかったら、それはCLAUDE.mdでなくフックに置くべき候補です。
演習2:3つの場面をそれぞれの置き場所に仕分ける
「レビュー観点を毎回思い出させたい」「議事録の書式を決めておきたい」「秘密情報を含むファイルへの書き込みを止めたい」という3つの場面を、CLAUDE.md・スキル・フックのどれに置くべきか考えてみましょう。理由も一言添えてください。
今日のまとめ
3行で振り返ります。
- CLAUDE.md・スキル・フックは、いずれも指示を伝える仕組みだが、強制力の強さが違う
- CLAUDE.mdは毎回読み込まれても「文脈」にとどまり、従うかどうかはClaude次第。フックだけが決定論的に動く
- 破られたら困るルールはCLAUDE.mdでなくフックに置く。常時の慣習か、その場限りの手順かはCLAUDE.mdとスキルで分ける
次のレッスンでは、権限モードをどう選ぶかを、無人で動かす場面も含めて扱います。
セルフチェック
1. 公式ドキュメントによる、CLAUDE.mdの扱われ方の説明として正しいものはどれですか。
2. フックがCLAUDE.mdと決定的に違う点として、本文で説明されたものはどれですか。
3. 「絶対に破られては困るルール」を置く場所として、本文が勧めているのはどこですか。