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


コメント