Architect 3.1:CLAUDE.md の階層と整理
Architect 分野 3:Claude Code の設定と使い方 の課題 3.1「CLAUDE.md を、階層、範囲、分け方を考えて設定する」を、試験ガイドの項目ごとに詳しく見ます。
この課題の項目
試験ガイドは、この課題について、「知っておくこと」4 項目と「できること」4 項目を挙げています。項目の文は、このサイトで要約したものです。
| 番号 | 種類 | 項目 |
|---|---|---|
| K1 | 知っておくこと | CLAUDE.md の階層(利用者、プロジェクト、サブフォルダー) |
| K2 | 知っておくこと | 利用者の CLAUDE.md は、チームに共有されない |
| K3 | 知っておくこと | @ のインポートで、CLAUDE.md を部品に分けられる |
| K4 | 知っておくこと | 大きな CLAUDE.md の代わりに、.claude/rules/ に話題ごとのファイルを置ける |
| S1 | できること | 決まりが一部の人に効かない原因を、置き場所から突き止める |
| S2 | できること | パッケージごとの CLAUDE.md で、必要な決まりだけをインポートする |
| S3 | できること | 大きな CLAUDE.md を、話題ごとのルールのファイルに分ける |
| S4 | できること | /memory などで、読み込まれているファイルを確かめ、動きのばらつきの原因を探る |
K1 CLAUDE.md の階層
- 要点
- CLAUDE.md は、組織(管理)、利用者、プロジェクト、サブフォルダーに置ける。プロジェクトには、自分だけの
CLAUDE.local.mdも置ける。 - 作業フォルダーと、その上のフォルダーの CLAUDE.md は、起動したときに読み込まれる。サブフォルダーの CLAUDE.md は、Claude がそのフォルダーのファイルを扱ったときに読み込まれる。
- 見つかったファイルは、上書きし合わずに、つなげて読み込まれる。根のフォルダーから作業フォルダーに向かって順に並び、作業フォルダーに近いものほど後に来る。同じフォルダーでは、
CLAUDE.local.mdがCLAUDE.mdの後に来る。
- CLAUDE.md は、組織(管理)、利用者、プロジェクト、サブフォルダーに置ける。プロジェクトには、自分だけの
- 公式ドキュメント:Memory の「Choose where to put CLAUDE.md files」「How CLAUDE.md files load」
| 置き場所 | 場所 | 共有される相手 | 読み込まれるとき |
|---|---|---|---|
| 組織(管理) | macOS では /Library/Application Support/ClaudeCode/CLAUDE.md | その PC の全員 | 起動したとき |
| 利用者 | ~/.claude/CLAUDE.md | 自分(すべてのプロジェクト) | 起動したとき |
| プロジェクト | ./CLAUDE.md または ./.claude/CLAUDE.md | チーム(Git で共有) | 起動したとき |
| 自分だけ(プロジェクト) | ./CLAUDE.local.md | 自分(そのプロジェクト) | 起動したとき |
| サブフォルダー | ./src/api/CLAUDE.md など | チーム(Git で共有) | そのフォルダーのファイルを扱ったとき |
- このサイトでの例:このサイトの CLAUDE.md は、リポジトリの直下にあり、Git で共有している。サブフォルダーの CLAUDE.md は置いていない。
- 試験での見分け方:「どこに置けば、誰に、いつ効くか」を、表の 3 つの列で答えられるようにする。
- 紛らわしいもの:「つなげて読み込まれる」ので、後から読まれるものが前のものを消すわけではない。矛盾する指示があると、Claude はどちらかを選んでしまうことがある。
K2 利用者の CLAUDE.md は、チームに共有されない
- 要点:
~/.claude/CLAUDE.mdは、自分の PC の、自分のアカウントにだけある。Git で共有されないので、チームのほかのメンバーには届かない。 - 公式ドキュメント:Memory の「Choose where to put CLAUDE.md files」。利用者の CLAUDE.md の共有の範囲は「自分だけ(すべてのプロジェクト)」とされている。
- このサイトでの例:このサイトの CLAUDE.md に書いた「
mainへ直接 push しない」は、Git で共有されるので、このリポジトリで Claude Code を使う人なら誰にでも届く。同じ内容を自分の~/.claude/CLAUDE.mdに書いていたら、自分にしか届かない。 - 試験での見分け方:「チーム全員に守らせたい」決まりは、プロジェクトの CLAUDE.md。「自分の好み」は、利用者の CLAUDE.md。
- 紛らわしいもの:
CLAUDE.local.mdも自分だけに効くが、範囲は「そのプロジェクトだけ」。~/.claude/CLAUDE.mdは「すべてのプロジェクト」。
K3 @ のインポートで、CLAUDE.md を部品に分けられる
- 要点
- CLAUDE.md の中に
@パスと書くと、そのファイルが一緒に読み込まれる。 - 相対パスは、書いたファイルの場所からたどる(作業フォルダーからではない)。
- 取り込んだファイルから、さらに取り込める。ただし 4 段まで。
- バッククォートで囲んだ
@は、取り込まれない。 - プロジェクトの CLAUDE.md から、作業フォルダーの外のファイルを取り込むときは、初めての一度だけ、承認を求める画面が出る。ほかの人がコミットしたファイルから守るため。
- CLAUDE.md の中に
- 公式ドキュメント:Memory の「Import additional files」
- このサイトでの例:このサイトの CLAUDE.md では、インポートを使っていない。
- 試験での見分け方:インポートは「整理」のための仕組み。
- 紛らわしいもの:インポートしたファイルも、CLAUDE.md と一緒にいつも読み込まれるので、コンテキストの節約にはならない。必要なときだけ読み込ませたいなら、
paths付きのルール(3.3)か、スキルを使う。
K4 .claude/rules/ に話題ごとのファイルを置ける
- 要点
- プロジェクトの
.claude/rules/に Markdown のファイルを置くと、ルールとして読み込まれる。1 つのファイルに 1 つの話題を書き、testing.mdのように中身が分かる名前を付ける。サブフォルダーにも分けられる。 pathsのないルールは、起動したときに、.claude/CLAUDE.mdと同じ扱いで読み込まれる。- 自分だけのルールは
~/.claude/rules/に置ける。すべてのプロジェクトに効く。
- プロジェクトの
- 公式ドキュメント:Memory の「Organize rules with .claude/rules/」
- このサイトでの例:このサイトでは、まだ使っていない(分野 3 のページの「実際にやってみる」で、試しに作って消した)。
- 試験での見分け方:「1 つの大きな CLAUDE.md」の代わりに使う、と覚える。
- 紛らわしいもの:ルールも CLAUDE.md も、Claude が「従おうとする」指示で、必ず守られる仕組みではない。毎回必ず実行させたいことは、フック(「Claude Code」のテーマの 09)に書く。
S1 決まりが一部の人に効かない原因を、置き場所から突き止める
- 要点:「新しく加わったメンバーにだけ、決まりが効かない」「ある人の環境でだけ効く」ときは、その決まりが、誰かの
~/.claude/CLAUDE.mdやCLAUDE.local.md(その人だけに効く)に書かれていないかを疑う。チームに効かせたい決まりは、プロジェクトの CLAUDE.md に移して、Git で共有する。 - 公式ドキュメント:Memory の「Choose where to put CLAUDE.md files」と、トラブルシューティングの「Claude isn't following my CLAUDE.md」(その CLAUDE.md が、そのセッションで読み込まれる場所にあるかを確かめる)
- このサイトでの例:K2 と同じ。
- 試験での見分け方:「人によって違う」は置き場所、「同じ人でも、会話によって違う」は S4 の確かめ方、と分けて考える。
- 紛らわしいもの:組織(管理)の CLAUDE.md は、全員に効く。ただし、本人が CLAUDE.md の読み込みそのものを止めると、組織のものも読み込まれない。確実に止めたい操作は、組織の管理設定の禁止のルールで止める。
S2 パッケージごとの CLAUDE.md で、必要な決まりだけをインポートする
- 要点:1 つのリポジトリに複数のパッケージがあるとき、各パッケージの CLAUDE.md から、そのパッケージに関係する決まりのファイルだけをインポートする。どの決まりが必要かは、そのパッケージをよく知る人が決める。
text
packages/api/CLAUDE.md
- API の書き方 @../../docs/standards/api.md
- テストの書き方 @../../docs/standards/testing.md
packages/web/CLAUDE.md
- 画面の書き方 @../../docs/standards/ui.md
- テストの書き方 @../../docs/standards/testing.md- 公式ドキュメント:Memory の「Import additional files」(相対パスは、書いたファイルの場所からたどる)
- このサイトでの例:このサイトは 1 つのパッケージなので、当てはまらない。
- 試験での見分け方:「パッケージごとに必要な決まりが違う」「決まりのファイルを共有したい」は、インポートを使う合図。
- 紛らわしいもの:パッケージのサブフォルダーの CLAUDE.md は、そのフォルダーのファイルを扱ったときに読み込まれ、インポートしたファイルも一緒に読み込まれる。ファイルの種類(テストなど)でまとめて効かせたいなら、
paths付きのルールのほうが向く(3.3)。
S3 大きな CLAUDE.md を、話題ごとのルールのファイルに分ける
- 要点
- 公式ドキュメントは、CLAUDE.md を 1 つあたり 200 行より短くすることを目安にしている。長いと、コンテキストを多く使い、指示が守られにくくなる。
- 大きな CLAUDE.md は、
.claude/rules/testing.md、api-conventions.md、deployment.mdのように、話題ごとのファイルに分ける。 - コードの一部にだけ関係する決まりは、
pathsを付けて、必要なときだけ読み込ませる。
- 公式ドキュメント:Memory の「Write effective instructions」「My CLAUDE.md is too large」
- このサイトでの例:このサイトの CLAUDE.md は 30 行なので、分ける必要はない。
- 試験での見分け方:「CLAUDE.md が大きくなり、守られにくい」は、ルールのファイルへの分割と、
pathsで必要なときだけ読み込ませることが答えになる。 - 紛らわしいもの:
pathsのないルールに分けても、起動したときにすべて読み込まれるので、コンテキストは減らない。減らすにはpathsを付ける。
S4 読み込まれているファイルを確かめ、動きのばらつきの原因を探る
- 要点
| 道具 | 分かること |
|---|---|
/memory | 利用者とプロジェクトの CLAUDE.md、CLAUDE.local.md などの置き場所の一覧。選ぶと、エディターで開いて直せる |
/context | 起動したときに読み込まれた CLAUDE.md とルールの一覧(「Memory files」の欄) |
InstructionsLoaded のフック | どの CLAUDE.md とルールが、いつ、なぜ読み込まれたかを記録できる |
- 動きのばらつきの、よくある原因
- 読み込まれるはずのファイルが、読み込まれていない(置き場所が違う)。
- サブフォルダーの CLAUDE.md や、
paths付きのルールは、当てはまるファイルを扱うまで読み込まれない。そのため、会話によって効いたり効かなかったりする。 - 指示を、CLAUDE.md ではなく会話の中だけで伝えていた。
/compact(会話の要約)のあとに消える。プロジェクトの直下の CLAUDE.md は、/compactのあとに読み込み直される。 - CLAUDE.md 同士で、指示が矛盾している。
- 公式ドキュメント:Memory の「View and edit with /memory」「Claude isn't following my CLAUDE.md」「Instructions seem lost after /compact」
- このサイトでの例:下の「実際にやってみる」。
- 試験での見分け方:「会話によって、決まりが効いたり効かなかったりする」は、まず読み込まれているファイルを確かめる。
- 紛らわしいもの:サブフォルダーの CLAUDE.md は、起動したときには読み込まれないので、
/contextの「Memory files」には出てこない。
実際にやってみる:読み込まれているファイルを確かめる
このサイトのリポジトリで、ターミナル版の claude -p "/context" を動かし、起動したときに読み込まれたファイルを確かめました。
| 種類 | ファイル | トークン数 |
|---|---|---|
| Project | リポジトリの直下の CLAUDE.md | 576 |
| AutoMem | 自動メモリの MEMORY.md(05 で扱ったもの) | 762 |
プロジェクトの CLAUDE.md と、自動メモリの目次の 2 つが読み込まれていました。利用者の ~/.claude/CLAUDE.md は置いていないので、出てきません。
確認問題
すべて自作の問題です。
教材で確かめる
| 教材 | 部分 |
|---|---|
| Claude Academy「Claude Code 101」 | Claude Code をカスタマイズする(CLAUDE.md) |
| Claude Academy「Claude Codeを実践する」 | Claude を設定する(無駄のない CLAUDE.md の書き方) |
| Udemy「Claude Code カスタマイズ完全ガイド(とまだ)」 | セクション 2「CLAUDE.md - すべての土台」、セクション 3「.claude/rules/ - ルールのモジュール化」 |
Claude Academy の部分は、コースの説明から、このサイトで判断しました。
確認の記録
- Claude Certified Architect – Foundations Exam Guide(Version 1.0、2026 年 7 月)
- Manage Claude's memory(Claude Code Docs)
| 項目 | 内容 |
|---|---|
| 最終確認日 | 2026 年 10 月 28 日 |
| Claude Code のバージョン | 2.1.302(macOS のターミナル版) |
| 検証の状況 | 「実際にやってみる」は、この Mac のターミナル版と、このサイトのリポジトリで確かめた結果。それ以外は、公式ドキュメントの内容をもとに書いている |
| 確かめていない内容 | 組織(管理)の CLAUDE.md、サブフォルダーの CLAUDE.md、インポート、外のファイルのインポートの承認の画面、/memory、InstructionsLoaded のフック |