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 memory(MEMORY.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実測)。本体は索引に寄せ、条文そのものは分割先に置く構成です。
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インポートは整理には向きますが、起動時の読み込み量は減りません。ここを混同すると、分割したつもりで文脈量が変わらない事態が起きます。
06CLAUDE.mdの書き方を動作確認する|/contextと/memoryの使い分け
CLAUDE.mdの書き方が正しいかは、書いた本人の感覚ではなく、実際に読み込まれたかで確認します。確認方法は2つです。
/contextを実行する:入力は特に無く、出力の「Memory files」欄に自分が編集したCLAUDE.mdのパスが並んでいるかを確認します。並んでいなければ、置き場所(前章の4段階のいずれか)が違います。/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の書き方を学ぶときは、隣接する仕組みの動作もセットで確認します。
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)。