Claude Codeに「wp_sync.pyの中身を確認したい」と伝えたとき、
俺はまだファイルを読んでほしかっただけだった。
でも気づいたら、Claude Codeはすでに修正案を出し、
「ではこのように変更します」と書いていた。
確認のつもりが、実装の手前まで進んでいた。
こういうことが、使い始めの頃は何度かあった。
頼み方が悪いのか、AIの性格なのか。
しばらく考えて、答えはシンプルだとわかった。
ルールが書かれていなかっただけだ。
この記事は、Claude Code時代に CLAUDE.md へ「実装前に止まる」ルールを書いた記録である。今のCodex環境でも、考え方は同じだ。現在は AGENTS.md や運用ルールに、確認してから進む境界を残している。
繰り返し使うルールをどこへ保存するかは、後の記事「毎回のコピペが面倒になったら、AGENTS.mdに移す」で詳しく書いた。
Claude Codeはなぜ先走るのか
Claude Codeは「役に立とう」として動く。
「〜してほしい」という言葉を受け取ると、
そのゴールに向かって最短で動こうとする。
読む → 分析する → 修正案を出す → 変更する、が一続きになっている。
こちらは相談のつもりで話しかけていても、
Claude Code側は「作業指示を受けた」と解釈する。
だから先走る。
悪意はない。止まるルールがないから止まらない。
wp_sync.pyのケースも、そういうことだった。
俺が「確認したい」と言ったのに、
Claude Codeは「修正まで進んでほしい」という意図として受け取った。
ルールがなければ、AIは最善を尽くして走り続ける。
止まるルールを入れると、止まれるようになる。
CLAUDE.mdとは何か
Claude Codeには、プロジェクトごとに指示ファイルを持たせられる。
それが `CLAUDE.md` だ。
プロジェクトのルートに置くと、
Claude Codeが作業時の前提として読み込む指示ファイルになる。
毎回チャットで「このプロジェクトはこういう構成で、こういうルールで動いてほしい」
と書かなくていい。
CLAUDE.mdに書いておけば、毎回最初から共有されている状態で始まる。
ここに「先走らないルール」を書くと、
Claude Codeはプロジェクトに入るたびにそのルールを読んで動くようになる。
仕込んでいる2つのルール
CLAUDE.mdには、今のところ2種類のルールを入れている。
1つは「実装前に止まる」ルール。
もう1つは「作業の進め方」ルール。
この2つはセットで効く。
1つ目だけだと「止まった後に何をするか」が曖昧になる。
2つ目だけだと「そもそも止まるタイミング」がわからない。
両方書いて初めて、Claude Codeは「確認してから進む」という動き方を覚える。
ルール①:実装前に必ず止まるルール
実装前の確認ルールを書いておくと、
「まず設計を出して確認を取る」という動きになる。
俺がCLAUDE.mdに書いているプロンプトはこれだ。
実装前の確認ルール(最優先・上書き不可)
「〜してほしい」「〜したい」という要望を受けても、即実装に進まない。
必ず以下の順序を踏む:
1. 何を・どこを・どう変えるか(設計)をチャットに提示して止まる
2. あなたのGOをチャットでもらう
3. GOをもらってから実装に進む
チャットの確認なしに「要望 → 即実装」は禁止。
plan.md・コード修正・WP更新・DB書き込み・ファイル編集、すべて同じルール。
このルールを入れてから、Claude Codeはこう動くようになった。
「〜しようとしています。設計を確認してからGOをください」
ファイルを触る前に、一度止まって報告してくる。
こちらが「GO」と返すまで、次に進まない。
先走られなくなった、というよりは、
止まり方を覚えた、という感じだ。
ルール②:作業の進め方
もう1つは、重い作業のときの進め方を書いたルールだ。
ファイルを削除する前、スキーマを変更する前、
まず現状を調べて報告する、という動きを定義している。
作業の進め方(厳守ルール)
基本サイクル:確認 → 設計合意 → 段階実行 → 再確認
■ まず確認
いきなり変更しない。最初は「現状把握と報告」のみ。
変更前に参照関係を洗い出し、一覧で報告する。変更はまだしない。
■ 設計を合意してから動く
調査結果を見て「何を・どこへ・どの参照を直すか」を提示し、承認を待つ。
破壊的操作(削除・上書き・スキーマ変更)の前は必ず確認を取る。
■ 段階実行
重い作業はステップに分割し、各ステップ後に止めて報告する。
「移植先を作ってから、元を消す」順序を厳守する。
「移植先を作ってから、元を消す」という一文が特に効いている。
削除を先にやって戻せなくなる、という状況を防ぐために書いた。
Claude Codeはこの順序を守って動くようになった。
段階的に進んで止まる、という動きは
最初からできていたわけではない。
書いたから、できるようになった。
CLAUDE.mdに2つのルールを書くだけでいい
当時のClaude Code環境では、2つのルールはコピーして貼るだけで使えた。
CLAUDE.mdが存在しないプロジェクトなら、当時は
ルートに `CLAUDE.md` というファイルを作って、上の2つを貼っていた。
それだけで、Claude Codeは次からそのルールを読んで動くようになった。
難しい設定はいらない。
コードを書く必要もない。
「止まってほしい」という意図を、
Claude Codeが読める言葉で書くだけだ。
2つ貼るだけで、俺の場合は変わった。
よくある質問
CLAUDE.mdはどこに置けばいい?
当時のClaude Code環境では、プロジェクトのルートに置いていた。
Claude Codeでそのプロジェクトを開いたとき、毎回の作業前提として読まれる指示ファイルとして使っていた。
既存のCLAUDE.mdに追記してもいい?
追記でいい。
ただし、今回のような「止まるルール」はできるだけ上の方に書く。
俺は「最優先・上書き不可」と書いて、一番上に置いている。
これを書けば絶対に暴走しない?
絶対ではない。
ただ、少なくとも「実装前に確認する」という型はかなり効く。
Claude Codeに期待する動きを言葉で明示すること、それが先走りを止める唯一の方法だと思っている。
Claude Codeが勝手に動くと思っていた。
でも実際は、止まり方を教えていなかっただけだった。
CLAUDE.mdに型を書く。
それだけで、AIは少し道具に近づく。
止まれるようになった。次は、役割を分ける番だ。
→ CLAUDE.mdが重くなってきた日に、オブジェクト指向を思い出した。


コメント