CLAUDE.mdは、Claude Codeが毎回の起動時に読み込む指示書です。
ビルドの手順やコードの書き方など、毎回説明し直していることを書いておくと、最初から守ってくれます。
迷ったら、プロジェクトのいちばん上のフォルダに CLAUDE.md を置けば大丈夫です。
- チームで共有するルール:プロジェクト直下の CLAUDE.md
- 自分だけのルール(全プロジェクト共通):ホームフォルダの .claude/CLAUDE.md
- 自分だけのルール(このプロジェクトだけ):プロジェクト直下の CLAUDE.local.md
- 読み込まれたかの確認:対話中に /context を実行し、Memory files の欄を見る
この記事は、2026年9月29日時点の公式ドキュメントと、Claude Code v2.1.284 で実際に動かした結果にもとづいています。
CLAUDE.mdを置く場所は4つ
CLAUDE.md は、置く場所によって効く範囲が変わります。
| 種類 | 置き場所 | 効く範囲 | 向いている内容 |
|---|---|---|---|
| 組織の管理用 | Windows:C:\Program Files\ClaudeCode\CLAUDE.md(macOS・Linuxは別の場所) | そのPCの全員・全プロジェクト | 会社のコーディング規約やセキュリティの決まり |
| ユーザー | ホームフォルダの .claude/CLAUDE.md | 自分の全プロジェクト | 自分の好みの書き方、よく使う道具 |
| プロジェクト | プロジェクト直下の CLAUDE.md か .claude/CLAUDE.md | そのプロジェクト(チームで共有) | ビルドとテストの手順、フォルダの構成、命名の決まり |
| ローカル | プロジェクト直下の CLAUDE.local.md | そのプロジェクトの自分だけ | 自分用の検証URLやテストデータ |
CLAUDE.local.md はGitに入れないものなので、.gitignore に書いておきます。
組織の管理用の CLAUDE.md は、個人の設定では外せません。
読み込まれる順番を実際に確かめた
CLAUDE.md は、起動したフォルダとその上の階層にあるものが、起動時にすべて読み込まれます。
上書きではなく、つなげて読まれます。
練習用のフォルダに、次のように4つのファイルを置いて試しました。
claude-memo/
├── CLAUDE.md … 返事の最後に「(root)」と書く
├── CLAUDE.local.md … 返事の最後に「(local)」と書く
└── app/
├── CLAUDE.md … 返事の最後に「(app)」と書く
└── src/
├── CLAUDE.md … 返事の最後に「(src)」と書く
└── main.pyapp フォルダで Claude Code を起動し、挨拶だけしてもらった結果です。
こんにちは!このフォルダの指示ファイルを読み込んで挨拶しています。よろしくお願いします。
(root)
(local)
(app)上の階層から順に読まれ、同じフォルダの中では CLAUDE.md のあとに CLAUDE.local.md が読まれています。
起動したフォルダに近いものほど後に読まれるので、ルールがぶつかると迷う原因になります。
下の階層のCLAUDE.mdは、そのフォルダのファイルを読んだときに読まれる
起動した時点では、下の階層(src)の CLAUDE.md は読まれていませんでした。
src/main.py を読んでもらうと、src の CLAUDE.md のルールも効くようになりました。
`hello` と標準出力に表示するだけのファイルです。
(root) (local) (app) (import) (src)フォルダごとのルールは、そのフォルダの作業を始めてから効くと考えておくと混乱しません。
CLAUDE.mdの書き方
CLAUDE.md は普通のMarkdownで書きます。
# プロジェクトのルール
## コマンド
- テストは npm test で実行する
- コミットの前に npm run lint を通す
## コードの書き方
- 字下げはスペース2つ
- APIの処理は src/api/handlers/ に置く公式ドキュメントが勧めているのは、次の4点です。
- 1ファイル200行以内に収める(長いほど守られにくくなる)
- 見出しと箇条書きでまとめる
- 確かめられる書き方にする(「きれいに書く」ではなく「字下げはスペース2つ」)
- ルール同士をぶつけない(ぶつかると、どちらかが選ばれる)
書く内容は、2回目に同じ間違いをされたことや、毎回口で説明していることです。
手順が長いものや、一部のフォルダでしか使わないものは、スキルや後で説明する .claude/rules に分けます。
/initで下書きを作る
対話中に /init を実行すると、Claude がコードを調べて CLAUDE.md の下書きを作ります。
すでに CLAUDE.md がある場合は、上書きせずに直す案を出します。
HTMLコメントはClaudeに読まれない
<!– –> で囲んだ部分は、Claude に渡す前に取り除かれます。
試しに、コメントの中に「返事の最後に(comment)と書く」と書きましたが、一度も守られませんでした。
人間向けのメモを残す場所として使えます。
@で別のファイルを読み込む
CLAUDE.md の中に @ とファイルのパスを書くと、そのファイルの中身も読み込まれます。
# プロジェクトのルール
- 返事の最後に「(root)」と書く
- 文体は @docs/style.md に従うパスは、CLAUDE.md が置かれている場所から数えます。
読み込んだファイルの中でさらに @ を使えますが、たどれるのは4段までです。
プロジェクト直下で起動すると、書いた位置にそのまま差し込まれました。
こんにちは!今日もよろしくお願いします。
(root)
(import)
(local)起動したフォルダの外のファイルは確認が要る
同じ CLAUDE.md でも、app フォルダで起動したときは docs/style.md が読み込まれませんでした。
起動したフォルダ(app)から見ると、docs はフォルダの外にあるためです。
公式ドキュメントによると、外のファイルを読み込むときは最初に確認の画面が出て、許可しないと読み込まれません。
今回は確認の画面が出ない claude -p で動かしたので、読み込まれないままでした。
共有のルールを別の場所に置くなら、プロジェクトの中に置くか、起動する場所をそろえておくと確実です。
ファイル名を書きたいだけのときは、`@README` のようにバッククォートで囲むと読み込まれません。
.claude/rulesでファイルごとにルールを分ける
プロジェクトが大きくなったら、.claude/rules フォルダにテーマごとのファイルを置けます。
your-project/
└── .claude/
├── CLAUDE.md
└── rules/
├── code-style.md
├── testing.md
└── security.mdファイルの先頭に paths を書くと、そのパターンに合うファイルを触るときだけ読み込まれます。
---
paths:
- "src/api/**/*.ts"
---
# APIのルール
- 入力のチェックを必ず入れるpaths が無いファイルは、.claude/CLAUDE.md と同じように毎回読み込まれます。
ホームフォルダの .claude/rules に置いたルールは、全プロジェクトに効きます。
読み込まれたかを確かめる方法
| やりたいこと | コマンド |
|---|---|
| いま読み込まれている CLAUDE.md とルールを見る | /context(Memory files の欄) |
| CLAUDE.md を開いて直す・自動メモリのオンとオフ | /memory |
| 下書きを作る・直す案をもらう | /init |
| 古いルールや食い違いを点検してもらう | /doctor prompt-audit |
/memory では、まだ作っていない CLAUDE.md も一覧に出て、選ぶとその場で作られます。
CLAUDE.mdが効かないときの確認順
- /context を実行し、Memory files の欄にファイルが出ているかを見る
- 出ていなければ、置き場所と起動したフォルダを見直す(下の階層は後から読まれる)
- @ で読み込んだファイルが起動したフォルダの外にないかを見る
- ルールを具体的に書き直す
- ほかの CLAUDE.md とぶつかっていないかを見る
CLAUDE.md は、システムプロンプトのあとにユーザーのメッセージとして渡されます。
そのため、書いたことが必ず守られるとは限りません。
コミットの前に必ずテストを走らせるなど、決まったタイミングで確実に動かしたいことは、フック(Hooks)で設定します。
/compact で会話を圧縮したあとも、プロジェクト直下の CLAUDE.md は読み直されます。
AGENTS.mdと自動メモリとの違い
Codex などほかのツールで使う AGENTS.md も、Claude Code は読めます(v2.1.277以降)。
ただし初期設定では、CLAUDE.md が1つでもあれば AGENTS.md は読まれません。
両方を使いたいときは、CLAUDE.md の先頭に @AGENTS.md と書いて読み込むのが確実です。
もう1つの仕組みが、Claude が自分でメモを残す自動メモリです。
| CLAUDE.md | 自動メモリ | |
|---|---|---|
| 書く人 | 自分 | Claude |
| 中身 | 指示とルール | 訂正されたことや好みなどの覚え書き |
| 読み込み | 毎回すべて | 毎回、目次(MEMORY.md)の最初の200行か25KBまで |
| 置き場所 | 上の表の4か所 | ホームフォルダの .claude/projects/(プロジェクト名)/memory/ |
「pnpmを使って」のように会話で覚えてもらうと自動メモリに入り、「CLAUDE.mdに追加して」と頼むと CLAUDE.md に書かれます。
CLAUDE.md や自動メモリの消し方は、Claude Codeの消し方まとめで紹介しています。
まとめ
- 迷ったらプロジェクト直下に CLAUDE.md を置く
- 上の階層から順につなげて読まれ、下の階層は後から読まれる
- 200行以内で、確かめられる書き方にする
- @ で別のファイルを読めるが、起動したフォルダの外は確認が要る
- 効かないときは /context で読み込まれているかを先に見る
参考:Claude Code公式ドキュメント「How Claude remembers your project」(2026年9月29日に確認)。
