Claude Codeが勝手に動く。CLAUDE.mdに「2つのルール」を書いたら止まるようになった

ブログを会社化する設計

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が重くなってきた日に、オブジェクト指向を思い出した。


コメント