何のためのものか
セッションをまたいで知識を持ち越す仕組みが 2 つある。ユーザーが書く CLAUDE.md files と、Claude が自分で書く auto memory。どちらも毎回の会話開始時に読み込まれる。
どちらも context であって、強制される設定ではない。 ここを取り違えると、いくら書いても守られないという結論になる。
触る
/initを実行して初期の CLAUDE.md を作る。既にある場合は上書きせず改善案が出る- 1 行だけ規約を書き足す
- セッションを開き直し、
/contextを実行して Memory files に出ているか見る
書いたものが読み込まれているかは、/memory(ファイルの場所の一覧)ではなく /context(実際に読み込まれたもの)で確認する。この 2 つは別物である。
入れる
置き場所を用途で分ける。読み込み順は広いスコープから具体的なものへで、連結される(上書きではない)。
| 置き場所 | 何を書くか |
|---|---|
~/.claude/CLAUDE.md | 自分の癖。全プロジェクトに効く |
./CLAUDE.md | チームで共有する規約。ソース管理に乗せる |
./CLAUDE.local.md | 自分だけの事情。.gitignore に入れる |
増えてきたら .claude/rules/ に分割する。paths frontmatter を付ければ、そのパターンのファイルを Claude が読んだときだけ効く。
1 ファイル 200 行未満が目安。 長いほどコンテキストを食い、遵守率が下がる。/doctor はチェックイン済み CLAUDE.md の削減案を出す(コードベースから分かることを削り、落とし穴と規約を残す)。
効かせる
- 確実に止めたいものは hook にする。 CLAUDE.md はシステムプロンプトではなくユーザーメッセージとして届くため、厳密な遵守は保証されない。特定の時点で必ず実行させたい指示は
PreToolUsehook として書く /compactで消えるものを知る。 プロジェクトルートの CLAUDE.md と auto memory はディスクから再注入されるが、paths:frontmatter を持つ rule とサブディレクトリのネストした CLAUDE.md は、対象ファイルを再度読むまで失われる。またいで効かせたい rule はpaths:を外す- auto memory の上限を知る。
MEMORY.mdは先頭 200 行または 25KB のいずれか早い方までしか会話開始時に読まれない。トピックファイルは必要になったときに読まれる
落とし穴
@pathimport はコンテキスト削減にならない。 整理には役立つが、import 先も起動時に展開されて読み込まれる- 矛盾するルールを置くと、どちらかが任意に選ばれる。 優先順位は決まらない
--add-dirで足したディレクトリの CLAUDE.md は既定では読まれない。CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1が要る- メイン会話の auto memory は subagent には読み込まれない。 例外は fork
- Claude Code は
AGENTS.mdを読まない。既にあるなら@AGENTS.mdを import するCLAUDE.mdを置く