CLAUDE.md とメモリファイル
Claude Code をより良くするために一つだけやるなら、これをやってください。CLAUDE.md は Claude が毎回のセッション開始時に読むプレーンテキストファイル——あなたのプロジェクトの恒久的なブリーフィングです。
- なぜ CLAUDE.md が Claude Code で最も効果の高い設定なのか
- 管理ポリシーから CLAUDE.local.md まで、メモリ階層がどう読み込まれるか
- 自動メモリが、あなたが書く CLAUDE.md とどう違うのか
- /init で初期ファイルを生成し、それを削ぎ落とす方法
- CLAUDE.md に何を入れるべきか——そして何を入れないべきか
- @imports でドキュメントを複製せずに参照する方法
なぜ最も効果の高い設定なのか
これがないと、毎回のセッションでプロジェクトを説明し直すことになります(「pnpm を使っている、テストは __tests__ にある、/generated は触らないで…」)。これがあれば、Claude はすでに知っています。ここに良い指示を書けば、今後すべてのやり取りを一度に改善できます。
メモリの階層
Claude Code は複数の場所からメモリを読み込み、読み込み順——スコープの広いものから——にマージします。そのため、プロジェクトの指示はユーザーの指示の後にコンテキストへ入ります:
- 管理ポリシー — IT/DevOps チームが配布する組織全体の指示。パスは OS ごとに異なります:macOS では
/Library/Application Support/ClaudeCode/CLAUDE.md、Linux と WSL では/etc/claude-code/CLAUDE.md、Windows ではC:\Program Files\ClaudeCode\CLAUDE.md。 - ユーザー指示(
~/.claude/CLAUDE.md)— すべてのプロジェクトに渡るあなた個人の好み。 - プロジェクト指示(
./CLAUDE.mdまたは./.claude/CLAUDE.md、コミット済み)— このリポジトリがどう動くか。チームと共有されます。リポジトリでAGENTS.mdを使っている場合は、これらの代わりに、あるいはこれらと併せて読み込まれることがあります。 - ローカル指示(
./CLAUDE.local.md)— サンドボックスの URL のような、あなただけのプロジェクト固有のメモ。.gitignoreに追加してください。
作業ディレクトリより上のディレクトリ階層にあるファイルは起動時に読み込まれます。サブディレクトリのファイルはオンデマンドで、Claude がその領域の何かに触れたときに読み込まれます。
- 1つのファイルでは足りなくなった?指示を .claude/rules/*.md に分割しましょう——1トピックにつき1ファイルで、再帰的に発見されます。paths フロントマターのないルールは起動時に読み込まれ、優先度は .claude/CLAUDE.md と同じです。paths フロントマターを付けると、Claude が一致するファイルを扱うときだけそのルールが読み込まれ、コンテキストを節約できます。
もう半分:自動メモリ
CLAUDE.md はメモリのうちあなたが書く半分です。Claude Code は自動メモリも保持します——あなたの修正や好みから Claude 自身が書くメモで、リポジトリごとに保存され、あなたの CLAUDE.md ファイルと並んで毎回のセッションに読み込まれます。
| CLAUDE.md ファイル | 自動メモリ | |
|---|---|---|
| 誰が書くか | あなた | Claude |
| 何を保持するか | 指示とルール | 学習とパターン |
| スコープ | プロジェクト、ユーザー、または組織 | リポジトリごと、ワークツリー間で共有 |
どちらも強制ではなくコンテキストです:Claude はこれらを、必ず従わなければならない設定ではなく、重み付けできるガイダンスとして扱います。Claude の判断にかかわらずある動作を完全にブロックしたい場合は、代わりに PreToolUse フックを使ってください。
- 自動メモリは最初の200行または25 KB までしか読み込まれません——膨れ上がった MEMORY.md は黙って切り捨てられます。起動時コストの詳しい内訳はコンテキスト予算の監査を参照してください。
出発点を生成する
- Claude がコードを調べ、自動で CLAUDE.md のドラフトを作成します。
- ドラフトは出発点であって完成形ではありません。真実で有用な内容だけに削ります。
- CLAUDE.md テンプレートページから既成のスターターを取り、自分のリポジトリに合わせて調整します。
CLAUDE.md のドラフトを生成する
/init
CLAUDE.md テンプレート から既成のスターターを取得してください。
何を入れるか
- プロジェクトが何であるかを、2 文で。
- 技術スタックと、実行 / テスト / リントの方法。
- Claude が推測できない規約(命名、構造、コミットスタイル)。
- ガードレール:「完了を宣言する前にテストを実行する」「
/vendorは絶対に編集しない」「シークレットを決してコミットしない」。
何を入れないか
- Claude は CLAUDE.md を文字通り従います——古い、曖昧、または願望的な指示はむしろ害になります。
- プロジェクトが今日実際にどう動くかを記述してください。短くて真実な方が、長くて理想的なものより優れています。
- 巨大な貼り付けドキュメント(代わりに @imports を使う)、シークレット、実際には守らないルールは避けてください。
- プロジェクトの進化に合わせて正確さを保つよう、定期的に見直してください。
インポート
ドキュメントを複製する代わりに既存のものを取り込みます——たとえばスタイルガイドを @path/to/file インポートで参照すれば、信頼できる情報源が一つになります。相対パスも絶対パスも使えます。相対パスは作業ディレクトリではなく、そのインポートを含むファイルを基準に解決されます。インポートされたファイルはさらに別のファイルをインポートできますが、深さは最大4ホップまでです。
痛い目に遭う前に知っておきたい構文の罠が2つあります:
- スペースにはバックスラッシュが必要。
@Design\ Docs/api-conventions.mdは動きます。バックスラッシュがないと、パスは最初のスペースで止まります。引用符で囲んでもファイルはまったくインポートされません。 - バックティックで除外できる。 インポートの解析はコードスパンとフェンス付きブロックを飛ばすので、
`@README`はそのままのテキストとして残り、単独の@READMEはファイルをインポートします。これが、読み込まずにパスを言及する方法です。
完全なリファレンスは公式メモリドキュメントを参照してください。
- 信頼できる情報源を一つに:内容を CLAUDE.md に貼り付けるのではなく、@imports でファイルを参照しましょう。
- ドキュメントがすでに存在するなら、コピーせずリンクしましょう。コピーは古くなっていきます。
確認しよう
確認しよう
0/6- CLAUDE.md は最も効果の高い設定:今後すべてのセッションを一度に改善します。
- メモリは広いスコープから順に読み込まれる:管理ポリシー、次にユーザー(~/.claude/CLAUDE.md)、プロジェクト(./CLAUDE.md または ./.claude/CLAUDE.md)、そしてローカル(./CLAUDE.local.md)。サブディレクトリのファイルはオンデマンドで読み込まれます。
- 自動メモリはもう半分——Claude 自身のメモで、リポジトリごとに保存され、毎回のセッションに読み込まれます。どちらも強制ではなくコンテキストです:何かを完全にブロックするにはフックを使いましょう。
- 1つのファイルでは足りなくなった? .claude/rules/*.md に分割し、paths フロントマターでルールのスコープを絞りましょう。
- /init で始め、ドラフトを実際に真実な内容まで削り落とす。
- 短く真実に保つ——大きなドキュメントには @imports(最大4ホップ)を使い、シークレットは決してコミットしない。
次へ
- AGENTS.md とツール間相互運用 — あらゆるコーディングエージェントで1つの指示ファイルを共有する
- プランモード — 安全な最初の変更
- 権限とモード — Claude が無人で何をしてよいか
- ウォークスルー:実際のリポジトリ向けに Claude Code をカスタマイズする