CLAUDE.mdの書き方は、章立て・禁止事項・分割の3点で決まります。書くほど守られると考えると、行数が増えた分だけ逆に指示が埋もれます。本記事は公式ドキュメントと、実測288行ある自社ファイルの構造から、章立てテンプレートと分割手順を示します。

検証環境:claude-opus-5 / Claude Code v2.1.x / macOS 15 / 2026-07-28検証

01CLAUDE.mdの書き方|結論は3行で言える

結論は3つです。第一に、CLAUDE.mdはセッション開始時に毎回まるごと読み込まれる指示ファイルであり、コードから読み取れることは書きません。第二に、公式ドキュメントは1ファイル200行を目安にすることを勧めています(出典: Claude Code公式/Best practices)。第三に、CLAUDE.mdに書いた禁止事項には強制力がなく、本当に止めたい操作はPreToolUseフックやpermissions.denyへ切り出します。

この3点を外すと、行数だけが増えて誰も読まないファイルが残ります。以下、章立てのテンプレート、禁止事項の書き方、200行を超えたときの分割方法の順に見ていきます。

02CLAUDE.mdとは何か、なぜAIエージェントに最初に読ませるのか

CLAUDE.mdは、プロジェクトやユーザーの単位で書く永続的な指示ファイルです。Claude Codeはセッションを開始するたびにこれを読み込みます(出典: Claude Code公式/Memory)。Claudeが自分で書き足すauto memoryMEMORY.md)とは役割が違います。CLAUDE.mdは人が書く規約、auto memoryはAIが学習した気づきのメモです。

置き場所は1つではありません。公式は4段階のスコープを定義しています。

スコープ置き場所(例:macOS)誰と共有するか
管理者ポリシー/Library/Application Support/ClaudeCode/CLAUDE.md組織の全ユーザー(個別設定で除外不可)
ユーザー~/.claude/CLAUDE.md自分だけ(全プロジェクト共通)
プロジェクト./CLAUDE.md または ./.claude/CLAUDE.mdチーム全員(バージョン管理で共有)
ローカル./CLAUDE.local.md自分だけ(このプロジェクトのみ・.gitignore推奨)

4段階は上書きではなく連結です。Claude Codeは作業ディレクトリから上位へディレクトリツリーをたどり、見つけたCLAUDE.mdとCLAUDE.local.mdを全部読み込みます。ファイルシステムのルートに近いものから先に文脈へ並び、作業ディレクトリに近いものほど後で読まれます(出典: Claude Code公式/Memory)。この並び順を、次の章立てテンプレートの土台にします。

03CLAUDE.mdの章立てテンプレート|実務で機能する7セクション

書く内容に迷ったら、公式が挙げる採用基準がそのまま章立ての骨格になります。含めるべきは「Claudeがコードを読んでも分からないこと」、除くべきは「Claudeがコードから推測できること」です。この基準を7つの章に落とし込んだテンプレートが次の表です(出典: Claude Code公式/Best practices)。

#書く内容判定材料(出典: 公式ドキュメント)
1目的このプロジェクトが何をする場所か、1〜2文新しいセッションが最初に戸惑わない範囲
2読む順序他のルールファイルへの入口と、読む順番大きい指示は分割して案内する設計
3ディレクトリ構成・置き場所成果物やコードをどこに置くか「ファイルごとの説明」は書かない
4実行コマンドビルド・テスト・Lintなど、推測できないコマンドClaudeが推測できないBashコマンド
5規約・慣習デフォルトと違うコーディング規約、命名規則標準的な言語の慣習は書かない
6禁止事項・人間ゲート超えない一線と、人の承認が要る操作次章で単独に扱う
7記録の残し方引き継ぎ・ログ・完了の記録方法セッションをまたぐ運用ルール

7章の型は最小構成です。プロジェクトが1つなら7章で足り、組織全体のルールを1本にまとめると章は増えます。運営元WEBMARKSの実際のルートCLAUDE.mdはwc -lで288行、見出しは15章です(章番号0〜14、末尾に更新履歴1本・2026-07-28実測)。

7章より多いのは、7の「読む順序」章を厚くし、詳細を個別ファイルへ渡しているためです。同じCLAUDE.md本体をgrepすると、00-rules/配下の個別ルールファイルへの参照が10件見つかります(2026-07-28実測)。本体は索引に寄せ、条文そのものは分割先に置く構成です。

CLAUDE.mdの7章は、書くだけで止まる章とhooksが要る章のどちらか CLAUDE.mdの7章(目的・読む順序・置き場所・実行コマンド・規約・禁止事項/人間ゲート・記録の残し方)を縦に並べ、advisory(助言どまり)とenforced(hooksで強制できる)の2列に対応づけたマトリクス図。6章はadvisory列だけに印がつき、禁止事項・人間ゲートの章だけがadvisoryとenforcedの両方に印を持ち矢印でつながる。7章中hooksの裏付けがあるのは1章だけで、書いただけでは止まらない章があるという結論を底部に置く。 MATRIX CLAUDE.mdの7章、hooksで止まるのは1章 advisory(助言どまり) enforced(hooksで強制) ①目的 × ②読む順序 × ③ディレクトリ構成・置き場所 × ④実行コマンド × ⑤規約・慣習 × ⑥禁止事項・人間ゲート ⑦記録の残し方 × 1/7章 hooksで強制できるのはこの1章だけ 書いただけで止まる章はない。禁止事項・人間ゲートもhooksとセットで初めて止まる。
CLAUDE.mdの7章のうち、hooksの裏付けを持つのは禁止事項・人間ゲートの1章だけ。残り6章は書いても止まらない

04CLAUDE.mdに書く禁止事項の型と、効かない理由

CLAUDE.mdの禁止事項は、検証できる形で書けたときだけ機能します。公式ドキュメントは「フォーマットを整えて」より「2スペースインデントを使う」の粒度を勧めています(出典: Claude Code公式/Best practices)。禁止事項も同じで、抽象的な一線は伝わりません。

書き方曖昧な例検証可能な例
操作の範囲危険な操作はしない本番データベースへの直接書き込みを禁止し、マイグレーションファイル経由に限定する
承認の要否大事な変更は確認する課金・削除・外部送信は、実行前に一度立ち止まって理由を1行提示する
例外の扱い例外的な場合は柔軟に対応例外を認める条件を1つだけ書き、それ以外は例外として扱わない

ここで押さえておくべきなのは、CLAUDE.mdの禁止事項自体には強制力がないという事実です。公式ドキュメントは、CLAUDE.mdの内容は文脈として提供されるだけで、判断はClaudeに委ねられると明記しています。行動を確実に止めたいならPreToolUseフックを使う、とも書かれています(出典: Claude Code公式/Memory)。

フック側のドキュメントも同じ役割分担を示します。変わらない静的な規約は、スクリプトを起動せず読み込まれるCLAUDE.mdに書く方がよいという位置づけです(出典: Claude Code公式/Hooks)。CLAUDE.mdとフックは対立ではなく、静的な規約と動的な強制の役割分担です。

矛盾した禁止事項が複数のCLAUDE.mdに散らばっているときの挙動も公式に記載があります。2つのファイルが同じ行動について違う指示を出すと、Claudeはどちらか一方を任意に選びます(出典: Claude Code公式/Memory)。禁止事項の章は、1つのファイルに集約するか、上位ファイルとの重複を避けて書きます。

05肥大化した指示書を分割する4つの手段

指示書が200行を超えたら、内容ごとに向いた分割先が変わります。公式ドキュメントに載っている4つの手段を、効果と一緒に整理します。

手段何をする機能か起動時の負荷向いている内容
.claude/rules/のパス限定ルールファイルパターンに一致したときだけ読み込む該当ファイルを開いたときのみ特定の拡張子・ディレクトリだけに関係する規約
@pathインポート別ファイルの中身を展開して取り込む起動時に全文展開される(軽くならない)内容の整理・再利用(サイズ削減が目的ではない)
CLAUDE.local.md個人だけの追記をバージョン管理から外す通常のCLAUDE.mdと同じサンドボックスURLなど、自分専用の設定
skills(.claude/skills/呼ばれたとき・関連すると判断されたときだけ読み込む常時は0、発火時のみ常に使うわけではない手順・ドメイン知識

数字も具体的です。@pathインポートは相対指定・フルパス指定のどちらも使え、再帰的な取り込みは最大4段階までに制限されています(出典: Claude Code公式/Memory)。auto memoryの索引ファイルMEMORY.mdは、先頭200行か25KBのどちらか早い方までしか読み込まれません(出典: 同ドキュメント)。

この上限はMEMORY.mdだけの制約です。CLAUDE.md本体は行数に関わらず全文が読み込まれますが、公式は短いファイルほど指示への追従率が上がるとも述べています(出典: 同ドキュメント)。

4つの手段のうち、行数そのものを減らせるのは.claude/rules/のパス限定ルールとskillsの2つだけです。@pathインポートは整理には向きますが、起動時の読み込み量は減りません。ここを混同すると、分割したつもりで文脈量が変わらない事態が起きます。

CLAUDE.mdが200行を超えたら、3つの問いでどこへ切り出すか CLAUDE.mdが200行を超えたときの分岐図。①拡張子だけに関係するか②個人専用のメモか③常用手順ではないかを順に判定し、該当すれば.claude/rules/・CLAUDE.local.md・skillsへそれぞれ進む。どれにも該当しなければ@pathインポートで整理だけを行う。行き先ごとに起動時に読み込まれるかを○×で添え、パス限定ルールとskillsだけが起動時の読み込み量を実際に減らせることを示す。 BRANCH 200行を超えたCLAUDE.md、3つの問いで行き先を決める 条件(いいえなら次へ)/行き先/起動時に読み込まれるか ①拡張子だけに関係するか .claude/rules/(パス限定ルール) ②個人専用のメモか CLAUDE.local.md ③常用手順ではないか skills(.claude/skills/) どれにも当てはまらない @pathインポート 行数を本当に減らせるのは、パス限定ルールとskillsだけ。@pathは整理にしかならない。
200行を超えたら3つの問いで行き先を判定。実際に起動時の負荷を減らせるのはパス限定ルールとskillsだけ

06CLAUDE.mdの書き方を動作確認する|/contextと/memoryの使い分け

CLAUDE.mdの書き方が正しいかは、書いた本人の感覚ではなく、実際に読み込まれたかで確認します。確認方法は2つです。

  1. /contextを実行する:入力は特に無く、出力の「Memory files」欄に自分が編集したCLAUDE.mdのパスが並んでいるかを確認します。並んでいなければ、置き場所(前章の4段階のいずれか)が違います。
  2. /memoryを実行する:入力は特に無く、CLAUDE.md・CLAUDE.local.md・auto memoryの一覧が開きます。存在しないファイルを選ぶとその場で新規作成されるため、初めて置き場所を作るときにも使えます。

動作確認をしても指示が反映されないときは、内容ではなく置き場所を先に疑います。公式ドキュメントも、CLAUDE.mdが機能しないときの最初の切り分けに/contextでの存在確認を挙げています(出典: Claude Code公式/Memory)。それでも従われない場合は、指示を検証可能な粒度へ書き直します。

07CLAUDE.mdの運用でつまずきやすい3つの罠

罠1:settings.jsonと同じ「上書き」だと思い込む。 settings.jsonは同じキーが複数スコープにあるとき、より優先度の高いスコープが上書きします(出典: Claude Code公式/Settings)。一方CLAUDE.mdは上書きではなく連結です。矛盾した指示を上位・下位に分けて書いても、両方とも文脈に残ります。

罠2:禁止事項を書けば行動が止まると思い込む。 前述のとおりCLAUDE.mdは文脈であって強制ではありません。止めたい操作ほど、CLAUDE.mdの文章とセットでPreToolUseフックかpermissions.denyを用意します。

罠3:@pathインポートで軽くなると思い込む。 インポートは起動時に展開されて読み込まれるため、行数を1つのファイルにまとめるか複数ファイルに分けるかの整理でしかありません。文脈の重さを本当に減らすのは、path限定ルールとskillsだけです。

3つの罠に共通するのは、「階層」「指示」「分割」という同じ言葉が、settings.json・フック・skillsではそれぞれ違う仕組みで動いている点です。CLAUDE.mdの書き方を学ぶときは、隣接する仕組みの動作もセットで確認します。

CLAUDE.mdまわりの4つの仕組み、いつ同時に効き始めるか セッションのライフサイクルを、セッション開始時・ツール実行の直前・スキル呼び出し時・セッション終了後の4区間に分けたタイムライン図。セッション開始時にはCLAUDE.md本体・CLAUDE.local.md・settings.json・@pathインポートの4つが同時に読み込まれる。ツール実行の直前にはPreToolUseフックが働き、スキル呼び出し時にはskillsが読み込まれ、セッション終了後にauto memoryが記録される。各区間の下には同時に有効な仕組みの数を積み上げた四角で示し、セッション開始時の4個が最も多く、他の区間はそれぞれ1個であることを表す。 TIMELINE CLAUDE.mdまわりの4つの仕組み、いつ発動するか4区間ごとに、同時に有効な仕組みの数を積み上げて示す ①セッション開始時 ②ツール実行の直前 ③スキル呼び出し時 ④セッション終了後 CLAUDE.md本体 CLAUDE.local.md settings.json @pathインポート PreToolUseフック skills auto memory 同時に有効になっている仕組みの数 セッション開始直後だけ4つの仕組みが同時に有効になり、以降は1つずつ効き始める。
CLAUDE.md本体・CLAUDE.local.md・settings.json・PreToolUseフック・skills・@pathインポート/auto memoryが「いつ発動するか」を左右一本の時間軸で示すタイムライン図

08CLAUDE.mdのチェックリスト|提出前に読み返す10項目

  • CLAUDE.mdの内容は、コードを読めば分かることになっていないか
  • 目的・読む順序・ディレクトリ構成・実行コマンド・規約・禁止事項・記録の残し方の7章が揃っているか
  • 各行について「これを消すとClaudeが間違えるか」を自問したか
  • 禁止事項は「危険な操作をしない」のような曖昧な一文になっていないか
  • 本当に止めたい操作は、フックやpermissions.denyとセットで設計したか
  • 複数のCLAUDE.mdに矛盾する指示が散らばっていないか
  • 200行を超えたら、.claude/rules/かskillsのどちらに分けるかを決めたか
  • /contextを実行し、編集したCLAUDE.mdが読み込まれているのを確認したか
  • 個人だけの設定をCLAUDE.local.mdに逃がし、.gitignoreに入れたか
  • Claudeが自分で書くauto memory(MEMORY.md)と混同せず、人が書く規約だけを置いているか

09FAQ

CLAUDE.mdはどこに置けばいいですか

プロジェクト全員に共有したい規約は./CLAUDE.md、自分だけの設定は./CLAUDE.local.md、全プロジェクト共通の個人設定は~/.claude/CLAUDE.mdに置きます。組織全体で強制したい内容だけ、管理者ポリシーの置き場所を使います。

CLAUDE.mdの行数に上限はありますか

システム上の上限はありませんが、公式ドキュメントは1ファイルあたり200行を目安に勧めています。超えたら本記事の4つの分割手段から、内容に合うものを選びます。

CLAUDE.mdとAGENTS.mdは両方書く必要がありますか

Claude Codeが読むのはCLAUDE.mdだけです。AGENTS.mdを他エージェント向けに使っているなら、CLAUDE.mdから@AGENTS.mdとインポートします。これで二重管理を避けられます(出典: Claude Code公式/Memory)。

CLAUDE.mdに書いた禁止事項が守られないときはどうすればいいですか

まず/contextで読み込みを確認し、次に指示を検証可能な粒度に書き直します。それでも止めたい操作は、CLAUDE.mdの文章だけに頼らずPreToolUseフックへ切り出します。

CLAUDE.mdは毎回全部読み込まれますか

作業ディレクトリの階層にあるCLAUDE.mdとCLAUDE.local.mdは、セッション開始時に全文読み込まれます。サブディレクトリのCLAUDE.mdは、その中のファイルを読んだときに追加で読み込まれます(出典: Claude Code公式/Memory)。