Claude Codeに毎回同じ説明をしているなら、CLAUDE.mdの書き方を見直す

記事
IT・テクノロジー
Claude Codeを使っていて、こんなことはないでしょうか。

・毎回、同じ前提を説明している
・話が長くなると前提を忘れて脱線する
・触ってほしくない場所を勝手に変更される

私は自分のWebサービスの開発・運用そのものをAIエージェントで回していて、2026年5月からルールを書いた指示書を育て続けています。事故が起きるたびに1行足す、という進め方です。その過程で分かったことを、5つに絞って書きます。


■1. CLAUDE.mdは「短いほど効く」

CLAUDE.mdは、Claude Codeが起動時に必ず読む指示書です。作業フォルダのいちばん上に置くか、その直下の .claude/ フォルダに置きます。パソコン全体で共通のルールにしたい場合は、ホームフォルダの .claude/CLAUDE.md に置きます。両方に置いた場合は、どちらか一方が優先されるのではなく、両方とも読み込まれます。

ここで最初にお伝えしたいのが分量です。公式ドキュメントは1ファイルあたり200行未満を目安としています。私の実感でも、長くなるほど後ろのほうが効きにくくなります。

「守ってほしいこと」を思いつくまま足していくと、すぐに200行を超えます。増やすより減らすほうが効きます。守られていないルールは、守らせようとするより削ったほうが健全です。守られないルールが1つあると、他のルールも守らなくていいと解釈されがちだからです。


■2. 「禁止」ではなく「手順」で書く

「〜しないでください」は効きにくいことがあります。手順の形に書き換えると改善します。

効きにくい書き方:
 ファイルを削除しないでください

効きやすい書き方:
 ファイルを削除したくなったら、削除せずに「削除したほうがよいもの」として一覧で報告してください

前者は「やらない」だけを指示していますが、後者は「代わりに何をするか」まで指定しています。行き先が決まっていると、そちらに流れます。


■3. 「迷ったらどうするか」の一文が、多くの事故を防ぐ

ルールにどれだけ書いても、書ききれない場面は必ず来ます。そこで次の一文を入れておきます。

 判断がつかない場合は、進めずに質問してください。確認しすぎで困ることはありません。

禁止事項だけを並べると、禁止されていないことは進めてよいと解釈されがちです。「迷ったら止まる」を明示して初めて、書ききれなかった場面もカバーされます。


■4. 文章で止まらないものは、設定で止める

CLAUDE.mdは「お願いの文章」です。守られないことがあります。どうしても触られたくないものがある場合は、設定ファイルで止められます。

.claude/settings.json に、次のように書きます。

{
  "permissions": {
    "deny": [
      "Bash(rm *)",
      "Read(./.env)"
    ]
  }
}

これで、削除コマンドの実行と、AIの読み取り機能からの .env の閲覧が止まります。判定は deny → ask → allow の順で、denyがいちばん強く効きます。

意外としっかり効くところもあります。たとえば FOO=bar rm -rf tmp/ のように、コマンドの前に変数を置いた形でも止まります。コマンドを && でつないだ場合も、つないだ1つ1つが個別に判定されます。

一方で、抜け道もあります。

・削除は rm 以外の方法でもできます。この設定で止まるのは、書いたパターンに一致するものだけです
・コマンド名で止めるのはしっかり効きますが、引数まで指定したルール(たとえば通信先を限定するような書き方)は、少し形を変えるだけで外れます
・docker exec のように「渡されたコマンドを実行する」種類のものは、その先のコマンドまでは判定されません
・読み取りの禁止はAIの読み取り機能に効くもので、ターミナルで中身を表示する経路までは止まりません

ですのでこの設定は「うっかりを減らすもの」であって、完全な防御壁ではありません。本当に守りたいものは、そもそもAIが触れる場所に置かない。これがいちばん確実です。


■5. 「完了」の条件を先に決めておく

見落とされがちですが、いちばん効くのがこれです。

AIは、できたことを報告するのは得意ですが、できていないことを自分から言うのは苦手です。明示的に書いておかないと、8割できた状態が「完了しました」として報告されることがあります。

そこで、完了報告に何を含めるかを先に決めます。

 完了報告には「何を変えたか」と「確認していないこと」の両方を書いてください
 テストが落ちている状態で「できました」と報告しないでください

「確認していないこと」を必ず書かせる。やったことより、やっていないことのほうが重要です。


■最後に:/init との使い分け

Claude Codeには /init という機能があり、実行するとプロジェクトの構成やビルド方法を自動で調べてCLAUDE.mdを作ってくれます。便利なので、開発用途の方は先に実行することをおすすめします。すでにCLAUDE.mdがある状態で実行しても、上書きはされず改善提案が出るだけなので安全です。

ただし /init が書いてくれるのは「このプロジェクトはこうなっている」という説明です。この記事で書いた「何をしてはいけないか」「どこで手を止めて確認を取るか」「どうなったら完了と言ってよいか」は書かれません。そこは自分で足すことになります。

その部分の雛形一式をサービスとして出品しています。ご自分で書かれる場合も、この記事の5点を押さえるだけで、だいぶ変わると思います。

※「Claude Code」はAnthropic PBCの製品およびサービス名です。当方は同社の公式パートナーや提携先ではなく、個人の出品者です。
※AIの動作を完全に制御・保証する方法ではありません。想定外の動きを減らすことを目的とした書き方です。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す