CLAUDE.md は、Claude Code が自らのコンテキストに読み込む Markdown ファイルであり、これによって Claude はセッション全体を通じて、ビルドコマンド、ディレクトリ構成、モノレポの構造、コーディング規約、チームの規範と いったプロジェクトの恒常的な事実を保持する。Anthropic は Claude Code の舵取り:CLAUDE.md、スキル、フック、サブエージェントをいつ使うか で、これをコードベースの 概要、あるいは Claude が必要に応じてより多くの情報を見つけられる他のファイルを指し示す索引だと説明している。
用法
Anthropic の記事は、読み込まれるタイミングによって二種類を区別している。ルートの CLAUDE.md——共有リポジトリに
置かれるもの、プロジェクト固有の個人的な好みのためにローカルに保存されるもの、あるいはその両方——はセッション開始時に
読み込まれ、Claude Code が会話をコンパクションしたあとにはそうしたファイルがすべて読み直されるため、長いセッションを
通じて失われたり劣化したりしない。セッションを開始したフォルダより下のサブディレクトリにある CLAUDE.md は、
Claude がそのサブディレクトリ配下のファイルを読んだときにオンデマンドで読み込まれ(記事の例は app/api/CLAUDE.md)、
コンパクションのあとは、そのサブディレクトリに再び触れるまで失われたままとなる。
モノレポについて記事は、各チームのディレクトリにそれぞれサブディレクトリの CLAUDE.md を置き、チームが自分たちの規約
だけを読み込むようにすることを提案しており、claudeMdExcludes 設定によって開発者は自分が決して触れないコードを持つ
チームのファイルを読み込み対象から外せる。セキュリティやコンプライアンスのポリシーのように、組織内のすべての
リポジトリに適用されなければならない標準については、MDM や構成管理を通じて開発者のマシンに配布される、一元管理された
CLAUDE.md を説明しており、これは個人の設定では除外できない。
Claude Code の仕組みを解説する Anthropic のドキュメントは、別の側から CLAUDE.md に同じ役割を与えている。同ドキュメントは
このファイルを、Claude があらゆるセッションでアクセスできるものの一つとして、プロジェクト固有の指示、規約、コンテキストを
保存する場所に挙げており、他のコーディングエージェント向けに書かれた AGENTS.md がリポジトリにある場合、Claude はそれを
単独で、あるいは CLAUDE.md と併せて読めると述べている(AGENTS.md を参照)。新しいセッションはそれぞれ
新しいコンテキストウィンドウで始まり、会話の早い段階で与えた指示はコンパクションによって失われうるため、同ドキュメントは
会話履歴に頼るのではなく、永続的なルールを CLAUDE.md に書くよう助言している。また、会話がコンパクションされる際に何を
保持するかを制御する手段として CLAUDE.md 内の「Compact Instructions」セクションを、プロジェクト用の最初の CLAUDE.md を
生成する /init コマンドとともに説明している。
Claude Code のメモリに関するドキュメントは、CLAUDE.md を第二の仕組みである 自動メモリ と並べている。
CLAUDE.md はユーザーが書く指示やルールを保持し、Auto Memory は Claude 自身が書く学びを保持する。どちらも強制される設定
としてではなく、コンテキストとしてすべての会話の開始時に読み込まれる。同ドキュメントは四つのスコープを、最も広いものから
最も具体的なものへと読み込み順に挙げている。IT 部門や DevOps によって組織全体に配布される管理ポリシーファイル(個人の設定
では除外できない)、~/.claude/CLAUDE.md にあるユーザーファイル、バージョン管理を通じて共有される ./CLAUDE.md または
./.claude/CLAUDE.md にあるプロジェクトファイル、そして gitignore されることを想定した個人用の ./CLAUDE.local.md である。
作業ディレクトリとその上位のすべてのディレクトリで見つかったファイルは、互いを上書きするのではなく連結され、ファイル
システムのルートから下へ向かって並べられるため、Claude が起動された場所に近い指示ほど後に読まれる。また各ディレクトリ内
では CLAUDE.local.md が CLAUDE.md の後に続く。CLAUDE.md は @path インポートによって他のファイルを取り込むことが
でき、これらは起動時にコンテキストへ展開され、最大 4 段の深さまで入れ子にできる。ブロックレベルの HTML コメントは内容が
注入される前に取り除かれるため、コンテキストを消費せずに人間の保守担当者向けのメモを残しておける。
より大きなプロジェクトについて、同ドキュメントは指示を .claude/rules/ 配下のトピック別ファイルに分割する方法を説明して
いる。paths フロントマターを持たないルールは .claude/CLAUDE.md と同じ優先度で起動時に読み込まれ、paths フィールドに
glob パターンを列挙したルールは、Claude がそれに一致するファイルを読んだときにのみ読み込まれる。同ドキュメントはまた、
Claude Code がリポジトリの AGENTS.md をプロジェクトの指示として読むことも説明している。デフォルトでは、作業ディレクトリ
またはその上位に CLAUDE.md も CLAUDE.local.md も存在しない場合に限って読まれ、両方を読むための設定があり、一つの
ファイルを他のコーディングツールと共有する方法としては CLAUDE.md から @AGENTS.md をインポートすることが挙げられている。
CLAUDE.md は、記事が指示を置く場所として挙げる七つのうちの一つであり、その助言の多くは、何をそこに置くべきでないかに 関するものである。デプロイのランブックやレビューのチェックリストのような手順は、本文が呼び出されたときにのみ読み込まれる スキル(Agent Skills)に置くべきであり、コードベースの一部にだけ適用される制約はパスでスコープされた ルールに置くべきであり、毎回必ず行われなければならない、あるいは決して行われてはならない振る舞いは、フック (エージェントフック)やパーミッションに置くべきだとする。プロンプトで与えたルールは守られないことがあるから である。記事は、スコープを持たないルールは、その内容を CLAUDE.md に書くことと仕組みの上では同一だと述べている。
HumanLayer による 良い CLAUDE.md の書き方 は Anthropic の外部で書かれたもので、LLM はステートレスで あるという前提からこのファイルにアプローチしている。同記事の言葉では CLAUDE.md はデフォルトでエージェントとの あらゆる会話に入る唯一のファイルであるため、プロジェクトの what(技術スタックとコードベースの地図)、why (各部分の目的)、how(どのように作業し、変更を検証するか)を述べることで、Claude をコードベースにオンボーディング すべきだとする。同記事は、これが AGENTS.md にも等しく当てはまると述べている。
適用される場面
Anthropic の記事は、CLAUDE.md を Claude が常に保持すべき事実の置き場所として扱い、その主な失敗モードを肥大化として いる。共有リポジトリでは、CLAUDE.md は持ち主のいない設定ファイルと同じように膨らんでいく——どのチームも追記し、 何も削除されない——うえに、各行は関連の有無にかかわらず、すべてのエンジニアのすべてのセッションに読み込まれるため、 コストが複利的に積み上がる。記事は、それが重要な指示への遵守をも薄めてしまうと述べている。記事の推奨は、ファイルを 200 行未満に保ち、オーナーを定め、その変更をコードと同様にレビューし、内容をあらゆるプロンプトと同じ規則に従って 書くことである。これらは測定されたしきい値ではなく、Anthropic が自社製品について示す推奨である。
メモリに関するドキュメント自身のガイダンスも同じ方向を向いている。同ドキュメントは CLAUDE.md を、書き留めておかなければ
何度も説明し直すことになるもの——Claude が同じ間違いを二度したとき、Claude が知っておくべきだったことをコードレビューで
指摘したとき、あるいは新しいチームメイトにも同じコンテキストが必要になるとき——を書く場所と位置づけ、複数ステップの
手順はスキルへ、コードベースの一部に関わる事項はパスでスコープされたルールへ移すよう助言している。ファイルが長くなるほど
コンテキストを多く消費し遵守度が下がることを理由に、1 ファイルあたり 200 行未満を目標とし、検証できるほど具体的な指示
(「コードを適切に整形する」ではなく「2 スペースのインデントを使う」)を書くことを推奨している。ファイルが守られない
場合がある理由についても説明している。CLAUDE.md の内容はシステムプロンプトの一部としてではなく、システムプロンプトの
後にユーザーメッセージとして渡されるため、厳密な遵守は保証されず、曖昧な指示や矛盾する指示では特にそうである——そして
コミットの前に毎回、といった決まった時点で実行されなければならない指示は、代わりにフックとして書くべきだとする。サイズの
上限については、Claude Code は 4 MiB までの CLAUDE.md を丸ごと読み込み、それより大きいファイルはスキップすること、
また /compact の後にはプロジェクトルートの CLAUDE.md がディスクから読み直される一方、入れ子になったファイルやパスで
スコープされたルールは、Claude がそれらの適用対象となるファイルを読んだときにのみ再読み込みされることを述べている。
HumanLayer の記事は、別の道筋から似た助言にたどり着いている。同記事の報告によれば、Claude Code は CLAUDE.md を、その
コンテキストは関連する場合もしない場合もあると告げるシステムリマインダーとともに注入するため、Claude は現在のタスクに
無関係と判断した内容を無視する——そして、普遍的に適用できない指示をファイルが多く抱えるほど、無視される可能性が高まる。
同記事の推奨は、指示を合理的に可能な限り少なくすること、ファイルを簡潔かつ普遍的に適用できるものに保つこと(300 行未満が
最善だという一般的な合意があると報告し、HumanLayer 自身のルートファイルは 60 行未満だと述べている)、タスク固有の内容は
CLAUDE.md から参照する別ファイルへ移すこと(段階的開示(Progressive Disclosure) を参照)、コードスタイルはモデルでは
なく決定的なリンターやフォーマッターに任せること、そしてファイルはハーネスの中で最もレバレッジの高い箇所であるため、
/init で生成するのではなく手で書くことである。これらは一企業が自らの経験から引き出した推奨であり、同記事自身も
「your mileage may vary(状況によって結果は異なる)」という但し書きを付けている。