Claude Codeを使っていると、毎回同じ指示を入力するのが面倒になります。「TypeScriptではanyを使わない」「変更後はnpm testを実行する」「既存の設計を大きく変えない」「コミットは勝手に実行しない」といったルールです。こうした継続的な指示を渡すために使うのがCLAUDE.mdです。
ただしCLAUDE.mdには、複数の置き場所があります。~/.claude/CLAUDE.md、./CLAUDE.md、./.claude/CLAUDE.md、./CLAUDE.local.mdなどで、どこに置いても同じではありません。この記事では、「誰に適用したいルールか」で置き場所を決める考え方を、Claude Code公式ドキュメント(2026年10月時点)に沿って整理します。
CLAUDE.mdが期待どおりに読み込まれないときの切り分けはClaude CodeがCLAUDE.mdを読まない原因|配置場所・優先順位・読み込み範囲を確認、書き方の設計はClaude Code CLAUDE.md完全設計ガイド|3層構造・@インポート・自動メモリでAIとのコンテキスト共有を最大化で解説しているため、この記事は置き場所の判断に絞ります。
- CLAUDE.mdはClaude Codeへ継続的な指示を渡すファイル
- CLAUDE.mdの置き場所はUser・Project・Local・組織の4種類
- 迷ったら「誰に適用したいルールか」で決める
- 全Project共通なら~/.claude/CLAUDE.mdに置く
- プロジェクト固有のルールをグローバルに書かない
- チームで共有するならProject RootにCLAUDE.mdを置く
- 自分だけのProject設定はCLAUDE.local.mdに置く
- Git WorktreeではCLAUDE.local.mdが共有されない
- Global・Project・Localを組み合わせる
- 複数のCLAUDE.mdは「上書き」ではなく「連結」される
- 起動したDirectoryより上は起動時、下は必要になったときに読み込まれる
- File種類ごとのルールは.claude/rules/に分ける
- CLAUDE.mdは200行未満を目安に、毎回必要な情報だけを書く
- @でImportしてもContextは減らない
- /initでProject CLAUDE.mdのひな形を作る
- /contextと/memoryで読み込みを確認する
- AGENTS.mdがあるProjectでは読み込みルールに注意する
- CLAUDE.mdとAuto Memoryは別のもの
- 「必ず守らせたい」ルールはCLAUDE.mdではなくHookやPermissionsに任せる
- 組織で配布するならManaged policyのCLAUDE.md
- CLAUDE.mdの置き場所に関するよくある質問
- CLAUDE.mdの置き場所は「誰に適用するか」で決める
CLAUDE.mdはClaude Codeへ継続的な指示を渡すファイル
CLAUDE.mdは、Claude Codeへ継続的なProject Contextや作業ルールを与えるMarkdownファイルです。Claude Codeの各Sessionは新しいContext Windowから始まりますが、CLAUDE.mdはSession開始時に読み込まれます。
# Development パッケージ管理にはpnpmを使用してください。 変更後は以下を実行してください。 pnpm lint pnpm test # Coding Rules TypeScriptでanyは使用しないでください。 既存APIの互換性を維持してください。
これを書いておけば、新しいSessionのたびに同じ説明を繰り返す必要がなくなります。ただしCLAUDE.mdは強制的な設定ではありません。Claude Codeは内容をContextとして読み、従おうとしますが、公式ドキュメントでも「特定の動作を確実にブロックしたいならPreToolUse Hookを使う」と案内されています。具体的で簡潔な指示ほど、安定して従いやすくなります。
CLAUDE.mdの置き場所はUser・Project・Local・組織の4種類
公式ドキュメントでは、CLAUDE.mdの配置場所が次のように整理されています。
- User:
~/.claude/CLAUDE.md。自分の全Projectへ適用する個人設定(自分だけ) - Project:
./CLAUDE.mdまたは./.claude/CLAUDE.md。Repositoryで作業するメンバーと共有する設定(Gitで共有) - Local:
./CLAUDE.local.md。特定Projectだけで使う個人設定(自分だけ、.gitignoreに追加) - Managed policy(組織):組織全体の指示。IT・DevOpsが配布する(組織の全ユーザー)
Windowsでも~はUser Home Directoryを意味します。通常は%USERPROFILE%\.claude\CLAUDE.mdです。
迷ったら「誰に適用したいルールか」で決める
自分が使うすべてのRepositoryで共通? → ~/.claude/CLAUDE.md そのRepositoryで作業する全員に必要? → ./CLAUDE.md または ./.claude/CLAUDE.md(Gitにコミット) そのRepositoryで自分だけに必要? → ./CLAUDE.local.md(.gitignore) 特定のDirectoryやFile種類でしか必要ない? → サブディレクトリのCLAUDE.md、または .claude/rules/
置き場所は、ルールの内容ではなく、適用範囲で決めます。以降で、それぞれの置き場所に何を書くかを見ていきます。
全Project共通なら~/.claude/CLAUDE.mdに置く
自分がClaude Codeを使うすべてのProjectへ適用したい設定は、~/.claude/CLAUDE.mdに置きます。特定のRepositoryではなく、自分自身のClaude Codeの利用方針なので、Global設定に向いています。
# Personal Coding Preferences 変更前に既存コードを確認してください。 可能な限り既存の設計パターンを維持してください。 大規模なリファクタリングを一度に行わず、小さな差分に分割してください。 依存パッケージを追加する前に理由を説明してください。
プロジェクト固有のルールをグローバルに書かない
逆に、「このProjectではpnpmを使う」「WordPress 6.9以上を対象にする」「src/api以下にAPIを実装する」といったProject固有の情報を~/.claude/CLAUDE.mdへ書くのはおすすめできません。別のProjectでも同じ指示が読み込まれてしまうからです。Project Aはpnpm、Project Bはnpmを使っているのに、Globalへ「必ずpnpmを使用してください」と書けば、Project Bでも適用されます。
Globalには「どのProjectでも共通する自分の作業方針」だけを置き、Projectに依存する情報はProject側へ分けます。
チームで共有するならProject RootにCLAUDE.mdを置く
特定Projectだけに適用したい設定は、Repository内に置きます。Project用のCLAUDE.mdは./CLAUDE.mdまたは./.claude/CLAUDE.mdのどちらでも使えます。内容は、Build Command、Test Command、Architecture、Naming Convention、Coding Standard、よく使うWorkflowなど、そのRepositoryで作業する全員が知っておくべき情報です。
my-project/ ├── CLAUDE.md ├── package.json └── src/
./CLAUDE.mdはRepositoryを開いたときにすぐ見つかるので、単純なProjectなら分かりやすい選択です。Claude Code関連のFileをまとめたいなら、.claude/の中にCLAUDE.md、settings.json、rules/を並べる構成も使えます。どちらを選んでもよいので、Project内で統一します。
Project CLAUDE.mdは、チーム全員に適用したい情報なので、基本的にGitへコミットします。新しい開発者がCloneしてClaude Codeを起動しても、同じルールが使えるようになります。
自分だけのProject設定はCLAUDE.local.mdに置く
Project固有でも、他のメンバーと共有したくない設定もあります。たとえば自分のローカルURLやテストデータです。その場合は、Project RootのCLAUDE.local.mdに書きます。「自分だけ」かつ「このProjectだけ」に適用したい設定です。
# Local Preferences 開発確認ではhttp://localhost:3001を使用してください。 テストデータではcustomer-test-01を優先してください。 修正後にGit Commitは実行しないでください。
公式ドキュメントでも、CLAUDE.local.mdは個人用のProject設定とされ、.gitignoreに追加してVersion Controlへ含めない使い方が案内されています。
CLAUDE.local.md
Git WorktreeではCLAUDE.local.mdが共有されない
Git Worktreeを使っている場合は注意が必要です。CLAUDE.local.mdは.gitignoreされるため、新しいWorktreeを作っても引き継がれず、作成したWorktreeにだけ存在します。複数のWorktreeで同じ個人設定を使いたいなら、Home Directoryに個人用Fileを作り、そこからImportします。
# Individual Preferences @~/.claude/my-project-instructions.md
Working Directoryの外にあるFileをProject側のCLAUDE.mdからImportすると、初回に承認ダイアログが表示されます。拒否すると、そのImportは無効のままになります。
Global・Project・Localを組み合わせる
3つのうち1つだけを使う必要はありません。次のように、責務を分けて組み合わせられます。
~/.claude/CLAUDE.md 自分の基本方針(大規模変更を一度にしない、等)
project/
├── CLAUDE.md チームのルール(pnpmを使う、APIはsrc/api以下、等)
├── CLAUDE.local.md 自分だけのProject事情(Port 3001、テストAccount、等)
└── .claude/
└── rules/ 特定のFileにだけ必要な細かいルール
複数のCLAUDE.mdは「上書き」ではなく「連結」される
GlobalとProjectの両方を置いた場合、Projectが完全に上書きするわけではありません。公式ドキュメントでは、見つかったCLAUDE.mdは上書きされずに、すべてContextへ連結されると説明されています。ディレクトリ階層では、ファイルシステムのルートから作業ディレクトリへ向かう順に並び、各階層ではCLAUDE.local.mdがCLAUDE.mdの後に追加されます。
そのため、Globalに「必ずnpmを使う」、Projectに「必ずpnpmを使う」のような矛盾を書くのは避けます。公式も、矛盾する指示があると、Claudeがどちらかを任意に選ぶ可能性があるため、指示同士を一貫させるよう案内しています。優先順位の詳しい確認方法はClaude CodeがCLAUDE.mdを読まない原因|配置場所・優先順位・読み込み範囲を確認にまとめています。
起動したDirectoryより上は起動時、下は必要になったときに読み込まれる
Claude Codeは、起動した作業ディレクトリと、その上位ディレクトリにあるCLAUDE.mdとCLAUDE.local.mdを、起動時に読み込みます。たとえばfoo/bar/で起動すると、foo/bar/CLAUDE.mdとfoo/CLAUDE.mdの両方が対象です。
一方、作業ディレクトリより下のサブディレクトリにあるCLAUDE.mdは、起動時には読み込まれません。Claudeがそのサブディレクトリのファイルを読み書き・編集したときに、読み込まれます。
my-monorepo/
├── CLAUDE.md 起動時に読み込まれる
├── frontend/
│ └── CLAUDE.md frontend内のFileを扱うときに読み込まれる
└── backend/
└── CLAUDE.md backend内のFileを扱うときに読み込まれる
Rootには共通ルール、各Packageには固有のルールを置けば、Frontend作業中にBackend固有の指示を大量に読み込まずに済みます。Monorepoでの設計はClaude Code 大規模コードベース・モノレポ完全ガイドで詳しく扱っています。
File種類ごとのルールは.claude/rules/に分ける
さらに細かく分けたい場合は、.claude/rules/を使えます。大きなProjectでは、指示をTopic別のMarkdownファイルに分割できます。YAML Frontmatterのpathsを指定すると、対象のFileを扱うときだけRuleが読み込まれます。
--- paths: - "src/api/**/*.ts" --- # API Rules API Handlerでは必ず入力値をValidationしてください。 標準Error Response形式を使用してください。
pathsを持つRuleは、Claudeが一致するFileをRead・Write・Editのツールで扱ったときに読み込まれます。pathsを持たないRuleは、常に読み込まれます。自分用のRuleは~/.claude/rules/に置け、全Projectへ適用されます。User-levelのRuleはProject Ruleより先に読み込まれます。.claude/rules/の詳しい使い方はClaude Code settings.json完全リファレンス|全フィールドの意味と.claude/rules/の使い方も参照してください。
CLAUDE.mdは200行未満を目安に、毎回必要な情報だけを書く
CLAUDE.mdは何でも書けるため、運用していると巨大化しがちです。Project概要、Coding Standard、Deployment手順、Database仕様、API一覧、障害対応を1つのFileに詰め込むと、Contextを多く消費し、重要な指示が埋もれます。公式ドキュメントでは、1つのCLAUDE.mdを200行未満を目安にすること、長いFileはContextを多く消費して指示への追従率が下がることが説明されています。
判断基準は「Claudeが毎Session知っている必要があるか」です。pnpmを使う、npm testを実行する、TypeScriptのstrict mode、APIのDirectoryはどこか、といった情報は毎回必要なのでCLAUDE.mdに向いています。一方、Production Deployの20 Stepや、特定障害の復旧手順、一度だけ使うMigration手順は、毎回必要とは限りません。それらはSkillや、paths付きのRuleに移します。
古くなった指示や、互いに矛盾する指示は、/doctor prompt-auditで調べられます。CLAUDE.md、CLAUDE.local.md、AGENTS.md、.claude/以下のRuleやSkillなどを調べ、問題点と修正案のレポートを出します(Claudeが適用を求められるまでは、Fileは変更されません)。
@でImportしてもContextは減らない
CLAUDE.mdから別Fileを@path/to/fileでImportできます。Relative PathはImportを書いたFile自身の場所を基準に解決され、Importしたファイルからさらに別のFileをImportすることもできます(最大4段階)。
# Project 詳細なAPIルールは@docs/api-guidelines.mdを参照してください。
ただし、ImportしたFileも起動時にContextへ読み込まれます。「CLAUDE.mdを短く見せるために巨大なMarkdownをImportする」だけでは、Token消費は減りません。公式ドキュメントでも、ImportはFileの整理には役立つがContextの削減にはならないと説明されています。Contextを減らしたいなら、Path-specific Ruleを使います。
/initでProject CLAUDE.mdのひな形を作る
初めて使うProjectなら、/initが使えます。Claude CodeがCodebaseを解析して、Build Command、Test方法、Project Conventionなどを含むCLAUDE.mdの初期案を作ります。すでにCLAUDE.mdがある場合は、上書きせずに改善案を提示します。環境変数CLAUDE_CODE_NEW_INITを1にすると、CLAUDE.md・Skill・Hookのどれを作るかを聞く、対話式の流れにもできます。
自動生成した内容をそのまま放置するより、Claudeがコードを読んだだけでは判断できない情報を足すのが重要です。たとえば「この旧APIは互換性のため削除しない」「Migration Fileは手動で編集しない」「Production用のConfigは変更しない」といったProject固有の事情です。
/contextと/memoryで読み込みを確認する
CLAUDE.mdを作ったのにルールが無視されている気がしたら、まず本当に読み込まれているかを確認します。Claude Code上で/contextを実行すると、Memory filesの一覧で、Session開始時に読み込まれたCLAUDE.mdやRuleのFileを確認できます。一覧にないFileは、Claudeから見えていません。
/memoryでは、CLAUDE.mdやCLAUDE.local.mdの場所を、UserとProjectのScopeにまたがって一覧で見られます。まだ存在しないUserやProjectのCLAUDE.mdも一覧に出て、選ぶとその場で作成してEditorで開けます。~/.claude/CLAUDE.mdの場所が分からないときにも便利です。読み込みに問題があるときの切り分けは、Claude CodeがCLAUDE.mdを読まない原因|配置場所・優先順位・読み込み範囲を確認で詳しく解説しています。
AGENTS.mdがあるProjectでは読み込みルールに注意する
現在のClaude Code(v2.1.277以降)は、AGENTS.mdも直接読み込めます。CursorやCodexなど他のCoding Agent向けにAGENTS.mdを用意しているRepositoryでも、CLAUDE.mdを追加しなくても使えます。
ただし既定では、作業ディレクトリまたはその上位にCLAUDE.md・.claude/CLAUDE.md・CLAUDE.local.mdが1つもないときだけ、AGENTS.mdが読み込まれます。これらが1つでもあると、AGENTS.mdは読まれません。つまり、AGENTS.mdだけを使っているRepositoryに自分用のCLAUDE.local.mdを足すと、AGENTS.mdが読まれなくなります。~/.claude/CLAUDE.mdや.claude/rules/は、この判定には数えられません。
両方読ませたいときは、/configの「Project instructions」をclaude-md-and-agents-mdにします。「以前AGENTS.mdに書いたRuleが効かなくなった」という場合は、この読み込みルールを確認してください。
CLAUDE.mdとAuto Memoryは別のもの
Claude CodeにはAuto Memoryもあります。CLAUDE.mdは「人間が明示的に書く指示」、Auto Memoryは「Claudeが過去の修正や好みから学んで自分で書くメモ」で、公式ドキュメントでも別のMemory Systemとして整理されています。Auto Memoryがあっても、CLAUDE.mdが不要になるわけではありません。重要なProject Ruleは、CLAUDE.mdへ明示的に書くほうが確実です。使い分けはClaude Code 記憶戦略完全ガイド|CLAUDE.md・Auto Memory・MCPサーバーの使い分けとチーム設計パターンで解説しています。
「必ず守らせたい」ルールはCLAUDE.mdではなくHookやPermissionsに任せる
CLAUDE.mdはContextとして読まれる指示で、強制的なSecurity Policyではありません。「このCommandは絶対に実行しない」「編集のたびに必ずFormatterを実行する」のように、確実な動作が必要なものは、PermissionsやPreToolUse Hookなどの仕組みを使います。CLAUDE.mdは、あくまで「このProjectではこう作業する」という行動指針に向いています。
組織で配布するならManaged policyのCLAUDE.md
会社全体のCoding StandardやSecurity Policyのように、全ユーザーに適用したい指示は、IT・DevOpsが配布するManaged policyのCLAUDE.mdで管理できます。置き場所はOSごとに決まっています。
- macOS:
/Library/Application Support/ClaudeCode/CLAUDE.md - LinuxとWSL:
/etc/claude-code/CLAUDE.md - Windows:
C:\Program Files\ClaudeCode\CLAUDE.md
個人の設定では除外できず、User・ProjectのCLAUDE.mdより先に読み込まれます。個人や小規模なチームでは、最初は意識しなくてよいでしょう。
CLAUDE.mdの置き場所に関するよくある質問
Q./CLAUDE.mdと./.claude/CLAUDE.mdは、どちらを使うべきですか?
AどちらもProject用のCLAUDE.mdとして使えます。単純なProjectなら./CLAUDE.mdが分かりやすく、Claude Code関連のFileをまとめたいなら./.claude/CLAUDE.mdが便利です。Project内でどちらかに統一すれば十分です。
QGlobalとProjectに矛盾する指示を書いたら、どちらが優先されますか?
A設定ファイルのような上書きにはなりません。両方がContextへ連結され、矛盾していると、Claudeがどちらかを任意に選ぶ可能性があると公式に説明されています。Projectが後から読まれても、必ず勝つわけではないため、矛盾そのものを作らないようにします。
QCLAUDE.local.mdはコミットしてもよいですか?
A個人用なので、.gitignoreに追加してコミットしないのが公式の推奨です。複数のGit Worktreeで共有したい場合は、Home Directoryに個人用Fileを作って、@~/.claude/...でImportします。
QサブディレクトリのCLAUDE.mdが、起動直後の/contextに出てきません。不具合ですか?
A不具合とは限りません。作業ディレクトリより下のCLAUDE.mdは、起動時ではなく、Claudeがそのサブディレクトリのファイルを読み書き・編集したときに読み込まれます。
QCLAUDE.mdを長くなりすぎないようにするには、どうすればよいですか?
A1つのFileを200行未満にすることが目安です。特定のFile種類やDirectoryでしか必要ない指示は、pathsを指定した.claude/rules/へ移します。複数Stepの手順はSkillにします。@でImportしても、Context量は減りません。
CLAUDE.mdの置き場所は「誰に適用するか」で決める
CLAUDE.mdをどこに置くか迷ったら、「誰に適用したいルールか」で判断します。自分が使うすべてのRepositoryで共通なら~/.claude/CLAUDE.md、そのRepositoryを扱う全員に必要なら./CLAUDE.md(または./.claude/CLAUDE.md)、そのRepositoryで自分だけが必要なら./CLAUDE.local.mdです。特定のDirectoryやFile種類でしか必要ないなら、サブディレクトリのCLAUDE.mdや.claude/rules/を使います。
複数のCLAUDE.mdは設定ファイルのように上書きされるのではなく、Contextへ連結されます。そのため、Globalには普遍的な個人ルール、Projectにはそのリポジトリ固有のルール、Localには自分だけのProject事情、と責務を分けて、矛盾を作らないことが重要です。
そしてCLAUDE.mdを巨大な開発マニュアルにせず、Claudeが毎Session必ず知っておく必要がある情報だけを、200行未満の短さで維持するのが基本です。長くなってきたら、Path-specific RuleやSkillへ分けると、Contextを節約しながら指示も守られやすくなります。

