CLAUDE.mdとは何ですか?
CLAUDE.mdはClaude Code向けに書く持続的な指示で、各セッションの開始時に読み込まれる。公式ドキュメントによれば、Claudeはこれを強制設定ではなくコンテキストとして扱う。Claudeの判断にかかわらず操作を止めたいならPreToolUse hookを使う。指示が具体的で簡潔なほど、Claudeは一貫して従う。
なぜ存在しますか?
Claude Codeの各セッションは新しいコンテキストウィンドウで始まり、前回の会話を覚えていない。公式ドキュメントは、セッションをまたいで知識を持ち越す仕組みを2つ挙げる。自分で書くCLAUDE.mdと、Claudeがあなたの修正をもとに自分で書くauto memoryだ。CLAUDE.mdは規則と指示、auto memoryは学んだ習慣やパターンを担う。
どのように読み込まれますか?
公式ドキュメントによれば、作業ディレクトリとその上位の各ディレクトリのCLAUDE.mdとCLAUDE.local.mdが起動時に読み込まれ、互いを上書きせず連結される。順序はファイルシステムのルートから作業ディレクトリへで、近い指示が後ろに来る。サブディレクトリのものは、Claudeがそこのファイルを読む・書く・編集するときに読み込まれる。@pathで他のファイルを最大4段までインポートできる。スコープはmanaged policy、プロジェクト、ユーザー、ローカル(CLAUDE.local.md、.gitignore推奨)。AGENTS.mdだけでCLAUDE.mdがなければAGENTS.mdを読み、両方あればCLAUDE.mdだけを読む。
私にとってどういう意味ですか?
公式は各CLAUDE.mdを約200行以内に保つよう勧める。長いほどコンテキストを消費し遵守度が下がるためだ。コードベースの一部にしか関係しないルールは.claude/rules/のパス指定ルールへ移す。矛盾する指示があるとClaudeはどちらかを任意に選びうるので、定期的に整理する。巨大なネストしたCLAUDE.mdは問題を起こす。v2.1.309以降は上限超過分は先頭のみ読み込み、繰り返し圧縮を避ける。大きなモノレポではclaudeMdExcludesで他チームのファイルを飛ばせるが、managed policyのCLAUDE.mdは除外できない。
公式ドキュメントの例:foo/bar/でClaude Codeを起動すると、foo/bar/CLAUDE.md、foo/CLAUDE.md、それぞれの隣のCLAUDE.local.mdが読み込まれ、foo/CLAUDE.mdがfoo/bar/CLAUDE.mdより前に並ぶ。別の例:auto modeの分類器も同じCLAUDE.mdの内容を読むため、「never force push」と書けばClaudeと分類器の両方を同時に導ける。
メリット:1つのテキストファイルで全セッションにプロジェクトのルールを持たせられる。デメリット:コンテキストを消費し、強制ではなく助言であり、長さや矛盾が遵守度を下げる。