AIToday
大規模言語モデルAIコーディングZenn AI/ML掲載日時: 2026年10月25日 1:00

Claude Codeの不変条件をHookで強制する

LINEで送る
Claude Codeの不変条件をHookで強制する

3つのポイント

  1. 何が起きたか

    FitLogの開発者が注意書きをハーネスに置換。48行のCLAUDE.md「地図」で6つのドキュメントを結び、4つのPreToolUseフック(protect-env、protect-native、format、Stop時のgit diff要約)と5つのSkillsを備える。

  2. なぜ重要か

    絶対に破ってはいけないルール(.envへのアクセス、ios/やandroid/の手動編集、components/ui/原本の変更)を機械的にブロックするため、Claude Codeが運任せで従うことはなくなる。

わからないところ、AIに聞けます

質問と回答はこのページに公開されます。

こういう要約が、毎朝あなたのメールに届きます。

背景と解説

開発者の出発点は繰り返される失敗のパターンだった。Claude Codeは.envファイルを開こうとし、Expoが管理するios/やandroid/ディレクトリを編集しようとし、Reusablesが生成したcomponents/ui/の原本を改造してしまう。プロンプトに「しないでください」と書き足しても指示が長くなるだけで、遵守は運任せに感じられた。そこで、破ると事故になるルールと後から直せる推奨事項を分け、前者だけを機械的に強制するという発想の転換を行った。

出来上がった構造はドキュメントとフックで役割を分担する。CLAUDE.mdは48行の地図に削られ、architecture、db-schema、reusables-guide、conventions、harness、design-docsの6つのドキュメントファイルを指すため、詳細は必要なときだけ読み込まれる。4つのフックにはprotect-envとprotect-nativeに加え、Prettierがなければ黙ってスキップするフォーマット用フックと、Stop時にgit diff --statを要約するフックがある。5つのSkillsは/commit、/review、/deploy、/cleanup、/new-screenをカバーし、影響の大きい/deployはdisable-model-invocationを指定して、ユーザーの明示的な呼び出しでしか起動できないようにしている。

記事は自らの限界にも触れている。開発者はOpenAIの元記事を403エラーで読めず、要約を基に設計した。typoや文の欠落がある壊れたREADMEがClaudeに推測で補わせてしまい、地図が壊れればハーネスが機能しないことを示した。またフックは10ケースのサンプルテストに合格したものの、実際のセッションでの挙動はまだ確認待ちだ。

よくある質問
CLAUDE.mdには現在何が書かれているのか?
技術スタック、よく使うコマンド、不変条件の一覧、architecture.mdやdb-schema.mdなど6つのドキュメントファイルにリンクする「Where to Look」表を含む48行の「地図」だ。
フックはどう設定して操作をブロックしているのか?
PreToolUseエントリがBash、Read、Edit、Writeにマッチし、protect-env.shとprotect-native.shを実行する。protect-env.shは終了コード2で終了し、代替案をstderrに出力する。
開発者がまだ不十分だと述べている点は?
フックは10ケースのサンプルテストに合格したが、実際の開発セッションで正しく発火するかはまだ検証されていない。
LINEで送る

あなたの仕事に関係するAIニュースを、毎朝お届けします。

業界と使っているAIツールを選ぶと、仕事に関係するニュースが毎朝届きます。

登録無料・Googleアカウントなら30秒・いつでも解除できますAITodayについて →

AIに質問

この記事についてわからないことをAIに質問できます。AIはこの記事・AIToday の過去記事・Wikipedia を読み、出典を付けて答えます。Q&Aはこのページに公開され、他の読者も読めます。

質問と回答はこのページに公開されます。

このようなAIの動きを、御社の業界・競合に合わせて毎朝届ける法人プランもあります → 詳しく見る

関連記事

次の記事へzgはCLIとAI共用の検索ツール