Claude Codeのセッションは毎回まっさらなコンテキストで始まります。CLAUDE.md ファイルに指示を書いておくと、セッションをまたいでプロジェクトの前提をClaudeに伝えられます。この記事では、CLAUDE.mdの置き場所とスコープ、読み込みの仕組み、効果的な書き方、インポート、そして自動メモリとの違いを解説します。
CLAUDE.mdとは
CLAUDE.mdは、プロジェクトや個人のワークフロー、組織全体に対する永続的な指示を書くマークダウンファイルです。ビルドコマンド、コーディング規約、プロジェクト構成、「常にXする」といったルールなど、毎回説明し直したくない事柄を記述します。Claudeはセッション開始時にこれを読み込みます。
次のようなときに追記します。Claudeが同じ間違いを繰り返したとき、コードレビューでこのコードベース特有の知識が指摘されたとき、前回と同じ修正指示を毎回入力しているとき、新メンバーに必要な前提を伝えたいとき。ただしCLAUDE.mdは強制設定ではなく「文脈」なので、厳密な強制が必要な場合はフックを使います。
ファイルの置き場所とスコープ
CLAUDE.mdは複数の場所に置け、それぞれスコープが異なります。読み込みは広い範囲から狭い範囲の順で行われます。
- 組織ポリシー(例 macOSの
/Library/Application Support/ClaudeCode/CLAUDE.md): 全社共通。 - ユーザー指示(
~/.claude/CLAUDE.md): 自分の全プロジェクトに適用する個人設定。 - プロジェクト指示(
./CLAUDE.mdまたは./.claude/CLAUDE.md): バージョン管理でチーム共有。 - ローカル指示(
./CLAUDE.local.md): 自分だけのプロジェクト設定。.gitignoreに追加して使う。
作業ディレクトリより上位のCLAUDE.mdは起動時にすべて読み込まれ、サブディレクトリのファイルはそのフォルダのファイルを読むときに随時読み込まれます。
効果的な書き方
CLAUDE.mdは毎セッションのコンテキストを消費するため、書き方が遵守率に影響します。
- サイズ: 1ファイル200行以内を目安に。長すぎると遵守率が下がります。
- 構造: 見出しと箇条書きで関連する指示をグループ化します。
- 具体性: 「コードを整形する」より「2スペースインデントを使う」、「テストする」より「コミット前に
npm testを実行する」のように検証可能な粒度で書きます。 - 一貫性: 矛盾する指示があるとClaudeが任意に選んでしまうため、定期的に見直します。
/init を実行すると、Claudeがコードベースを分析して雛形のCLAUDE.mdを自動生成します。既存ファイルがある場合は上書きせず改善案を提示します。
他ファイルのインポート
CLAUDE.mdは @path/to/import 構文で他のファイルを取り込めます。相対パスと絶対パスの両方が使え、取り込んだファイルは起動時にコンテキストへ展開されます(最大4階層まで再帰的にインポート可能)。
See @README for project overview and @package.json for available npm commands.
# Additional Instructions
- git workflow @docs/git-instructions.md
パスをインポートせず文字列として書きたいときはバッククォートで囲みます。なお、大きなプロジェクトでは .claude/rules/ にトピック別のルールを置き、paths フロントマターで特定のファイルパスにのみ適用することもできます。
自動メモリとの違い
Claude Codeにはもう1つ、自動メモリという仕組みがあります。両者はどちらもセッション開始時に読み込まれますが、役割が異なります。
- CLAUDE.md: あなたが書く。コーディング規約・ワークフロー・アーキテクチャなどの「指示・ルール」。
- 自動メモリ: Claudeが書く。あなたの修正や好みから学んだ「気づき・パターン」。ビルドコマンドやデバッグの知見などが蓄積される。
自動メモリは ~/.claude/projects/<project>/memory/ に保存され、MEMORY.md の先頭200行(または25KB)が毎回読み込まれます。/memory コマンドで読み込まれているファイルの確認、自動メモリの有効・無効の切り替え、内容の閲覧・編集ができます。