- CLAUDE.md ファイル: Claude に永続的なコンテキストを与えるために書く指示
- 自動メモリ: あなたの修正と好みに基づいて Claude が自分自身で書くメモ
- CLAUDE.md ファイルを書いて整理する
.claude/rules/で特定のファイルタイプにルールをスコープする- 自動メモリを設定するので Claude が自動的にメモを取ります
- 指示が従われていない場合のトラブルシューティング
CLAUDE.md と自動メモリ
Claude Code には 2 つの相互補完的なメモリシステムがあります。どちらも各会話の開始時に読み込まれます。Claude はこれらをコンテキストとして扱い、強制的な設定ではありません。指示がより具体的で簡潔であるほど、Claude はそれに従う可能性が高くなります。| CLAUDE.md ファイル | 自動メモリ | |
|---|---|---|
| 誰が書くか | あなた | Claude |
| 何が含まれるか | 指示とルール | 学習とパターン |
| スコープ | プロジェクト、ユーザー、または組織 | ワーキングツリーごと |
| 読み込まれる場所 | すべてのセッション | すべてのセッション(最初の 200 行または 25KB) |
| 用途 | コーディング標準、ワークフロー、プロジェクトアーキテクチャ | ビルドコマンド、デバッグの洞察、Claude が発見する好み |
CLAUDE.md ファイル
CLAUDE.md ファイルは、プロジェクト、個人的なワークフロー、または組織全体に対して Claude に永続的な指示を与えるマークダウンファイルです。これらのファイルをプレーンテキストで書きます。Claude は各セッションの開始時にそれらを読みます。CLAUDE.md をいつ追加するか
CLAUDE.md を、そうでなければ再度説明する場所として扱います。以下の場合に追加します。- Claude が 2 回目に同じ間違いを犯す
- コードレビューが Claude がこのコードベースについて知っておくべきだったことを指摘する
- 前回のセッションで入力した同じ修正または説明をチャットに入力する
- 新しいチームメンバーが生産的になるために同じコンテキストが必要になる
CLAUDE.md ファイルをどこに配置するかを選択する
CLAUDE.md ファイルはいくつかの場所に配置でき、それぞれ異なるスコープを持ちます。より具体的な場所がより広い場所よりも優先されます。| スコープ | 場所 | 目的 | ユースケースの例 | 共有対象 |
|---|---|---|---|---|
| 管理ポリシー | • macOS: /Library/Application Support/ClaudeCode/CLAUDE.md• Linux と WSL: /etc/claude-code/CLAUDE.md• Windows: C:\Program Files\ClaudeCode\CLAUDE.md | IT/DevOps が管理する組織全体の指示 | 会社のコーディング標準、セキュリティポリシー、コンプライアンス要件 | 組織内のすべてのユーザー |
| プロジェクト指示 | ./CLAUDE.md または ./.claude/CLAUDE.md | プロジェクトのチーム共有指示 | プロジェクトアーキテクチャ、コーディング標準、一般的なワークフロー | ソース管理を通じたチームメンバー |
| ユーザー指示 | ~/.claude/CLAUDE.md | すべてのプロジェクトの個人的な好み | コードスタイルの好み、個人的なツーリングショートカット | あなただけ(すべてのプロジェクト) |
| ローカル指示 | ./CLAUDE.local.md | 個人的なプロジェクト固有の好み。.gitignore に追加します | あなたのサンドボックス URL、好みのテストデータ | あなただけ(現在のプロジェクト) |
プロジェクト CLAUDE.md を設定する
プロジェクト CLAUDE.md は./CLAUDE.md または ./.claude/CLAUDE.md に保存できます。このファイルを作成し、プロジェクトで作業する誰もが適用できる指示を追加します。ビルドおよびテストコマンド、コーディング標準、アーキテクチャの決定、命名規則、一般的なワークフロー。これらの指示はバージョン管理を通じてチームと共有されるため、個人的な好みではなくプロジェクトレベルの標準に焦点を当てます。
効果的な指示を書く
CLAUDE.md ファイルは各セッションの開始時にコンテキストウィンドウに読み込まれ、会話と一緒にトークンを消費します。コンテキストウィンドウの可視化は、CLAUDE.md がスタートアップコンテキストの残りの部分に相対的にどこに読み込まれるかを示します。これらはコンテキストであり強制的な設定ではないため、指示の書き方は Claude がそれに従う信頼性に影響します。具体的で簡潔でよく構造化された指示が最適に機能します。 サイズ: CLAUDE.md ファイルあたり 200 行以下を目標にします。より長いファイルはより多くのコンテキストを消費し、遵守を減らします。指示が大きくなっている場合は、パススコープルールを使用して、指示が一致するファイルで作業するときにのみ読み込まれるようにして、ノイズを減らしてコンテキストスペースを節約できます。インポートを使用してコンテンツを分割して整理することもできますが、インポートされたファイルは依然として読み込まれ、起動時にコンテキストウィンドウに入ります。 構造: マークダウンヘッダーと箇条書きを使用して関連する指示をグループ化します。Claude は読者と同じ方法で構造をスキャンします。整理されたセクションは密集した段落よりも従いやすいです。 具体性: 検証できるほど具体的な指示を書きます。例えば:- 「コードを適切にフォーマットする」ではなく「2 スペースのインデントを使用する」
- 「変更をテストする」ではなく「コミット前に
npm testを実行する」 - 「ファイルを整理しておく」ではなく「API ハンドラーは
src/api/handlers/に存在する」
.claude/rules/ を定期的に確認して、古い指示または矛盾する指示を削除します。モノレポでは、claudeMdExcludes を使用して、作業に関連のない他のチームの CLAUDE.md ファイルをスキップします。
追加ファイルをインポートする
CLAUDE.md ファイルは@path/to/import 構文を使用して追加ファイルをインポートできます。インポートされたファイルは展開され、それらを参照する CLAUDE.md と一緒に起動時にコンテキストに読み込まれます。
相対パスと絶対パスの両方が許可されます。相対パスはワーキングディレクトリではなく、インポートを含むファイルに相対的に解決されます。インポートされたファイルは他のファイルを再帰的にインポートでき、最大深度は 5 ホップです。
README、package.json、およびワークフローガイドを取得するには、CLAUDE.md の任意の場所で @ 構文を使用してそれらを参照します。
CLAUDE.local.md を作成します。これは CLAUDE.md と一緒に読み込まれ、同じ方法で扱われます。CLAUDE.local.md を .gitignore に追加して、コミットされないようにします。/init を実行して個人的なオプションを選択すると、これが自動的に行われます。
複数の git worktrees で同じリポジトリを操作する場合、gitignored CLAUDE.local.md は作成したワーキングツリーにのみ存在します。ワーキングツリー全体で個人的な指示を共有するには、代わりにホームディレクトリからファイルをインポートします。
.claude/rules/を参照してください。
AGENTS.md
Claude Code はCLAUDE.md を読みます。AGENTS.md ではありません。リポジトリが既に他のコーディングエージェント用に AGENTS.md を使用している場合、CLAUDE.md を作成してそれをインポートし、両方のツールが重複なしに同じ指示を読むようにします。Claude 固有の指示をインポートの下に追加することもできます。Claude はインポートされたファイルをセッション開始時に読み込み、その後残りを追加します。
CLAUDE.md
CLAUDE.md ファイルの読み込み方法
Claude Code は現在のワーキングディレクトリからディレクトリツリーを上に歩き、途中の各ディレクトリをチェックしてCLAUDE.md および CLAUDE.local.md ファイルを探します。つまり、foo/bar/ で Claude Code を実行すると、foo/bar/CLAUDE.md、foo/CLAUDE.md、およびそれらと一緒にある CLAUDE.local.md ファイルから指示を読み込みます。
発見されたすべてのファイルはコンテキストに連結され、互いに上書きするのではなく、各ディレクトリ内で CLAUDE.local.md は CLAUDE.md の後に追加されるため、指示が矛盾する場合、個人的なメモはそのレベルで Claude が読む最後のものです。
Claude は現在のワーキングディレクトリの下のサブディレクトリ内の CLAUDE.md および CLAUDE.local.md ファイルも発見します。起動時に読み込む代わりに、Claude がそれらのサブディレクトリ内のファイルを読むときに含まれます。
他のチームの CLAUDE.md ファイルが取得される大規模なモノレポで作業する場合は、claudeMdExcludes を使用してそれらをスキップします。
CLAUDE.md ファイル内のブロックレベル HTML コメント(<!-- maintainer notes -->)は、コンテンツが Claude のコンテキストに注入される前に削除されます。コンテキストトークンを費やさずに人間のメンテナーのためにメモを残すために使用します。コードブロック内のコメントは保持されます。Read ツールで CLAUDE.md ファイルを直接開くと、コメントは表示されたままになります。
追加ディレクトリから読み込む
--add-dir フラグは、メインワーキングディレクトリの外の追加ディレクトリへのアクセスを Claude に与えます。デフォルトでは、これらのディレクトリからの CLAUDE.md ファイルは読み込まれません。
追加ディレクトリから CLAUDE.md ファイルを読み込むには、CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD 環境変数を設定します。
CLAUDE.md、.claude/CLAUDE.md、.claude/rules/*.md、および CLAUDE.local.md を読み込みます。--setting-sourcesから local を除外する場合、CLAUDE.local.md はスキップされます。
.claude/rules/ でルールを整理する
大規模なプロジェクトの場合、.claude/rules/ ディレクトリを使用して指示を複数のファイルに整理できます。これにより、指示がモジュール化され、チームが保守しやすくなります。ルールは特定のファイルパスにスコープすることもできるため、Claude が一致するファイルで作業するときにのみコンテキストに読み込まれ、ノイズを減らしてコンテキストスペースを節約します。
ルールは各セッションまたは一致するファイルが開かれたときにコンテキストに読み込まれます。常にコンテキストに必要ないタスク固有の指示については、skillsを使用してください。これは、呼び出すときまたは Claude がプロンプトに関連していると判断したときにのみ読み込まれます。
ルールを設定する
プロジェクトの.claude/rules/ ディレクトリにマークダウンファイルを配置します。各ファイルは 1 つのトピックをカバーし、testing.md または api-design.md のような説明的なファイル名を持つ必要があります。すべての .md ファイルは再帰的に発見されるため、frontend/ または backend/ のようなサブディレクトリにルールを整理できます。
paths frontmatter のないルールは、.claude/CLAUDE.md と同じ優先度で起動時に読み込まれます。
パス固有のルール
ルールはpaths フィールドを持つ YAML frontmatter を使用して特定のファイルにスコープできます。これらの条件付きルールは、Claude が指定されたパターンに一致するファイルで作業するときにのみ適用されます。
paths フィールドのないルールは無条件に読み込まれ、すべてのファイルに適用されます。パススコープルールは、すべてのツール使用時ではなく、パターンに一致するファイルを読むときにトリガーされます。
paths フィールドでグロブパターンを使用して、拡張子、ディレクトリ、またはその組み合わせでファイルを一致させます。
| パターン | 一致 |
|---|---|
**/*.ts | 任意のディレクトリ内のすべての TypeScript ファイル |
src/**/* | src/ ディレクトリの下のすべてのファイル |
*.md | プロジェクトルート内のマークダウンファイル |
src/components/*.tsx | 特定のディレクトリ内の React コンポーネント |
シンボリックリンクでプロジェクト間でルールを共有する
.claude/rules/ ディレクトリはシンボリックリンクをサポートしているため、共有ルールセットを保持し、複数のプロジェクトにリンクできます。シンボリックリンクは解決され、通常どおり読み込まれ、循環シンボリックリンクは検出され、適切に処理されます。
この例は、共有ディレクトリと個別ファイルの両方をリンクします。
ユーザーレベルのルール
~/.claude/rules/ の個人的なルールはマシン上のすべてのプロジェクトに適用されます。プロジェクト固有ではない好みに使用します。
大規模なチーム向けに CLAUDE.md を管理する
Claude Code をチーム全体に展開する組織の場合、指示を一元化し、どの CLAUDE.md ファイルが読み込まれるかを制御できます。組織全体の CLAUDE.md を展開する
組織は、マシン上のすべてのユーザーに適用される一元管理の CLAUDE.md を展開できます。このファイルは個別の設定で除外することはできません。管理ポリシーの場所にファイルを作成する
- macOS:
/Library/Application Support/ClaudeCode/CLAUDE.md - Linux と WSL:
/etc/claude-code/CLAUDE.md - Windows:
C:\Program Files\ClaudeCode\CLAUDE.md
設定管理システムで展開する
MDM、グループポリシー、Ansible、または同様のツールを使用して、開発者マシン全体にファイルを配布します。その他の組織全体の設定オプションについては、管理設定を参照してください。
| 懸念事項 | 設定対象 |
|---|---|
| 特定のツール、コマンド、またはファイルパスをブロックする | 管理設定: permissions.deny |
| サンドボックス分離を強制する | 管理設定: sandbox.enabled |
| 環境変数と API プロバイダーのルーティング | 管理設定: env |
| 認証方法と組織ロック | 管理設定: forceLoginMethod、forceLoginOrgUUID |
| コードスタイルと品質ガイドライン | 管理 CLAUDE.md |
| データ処理とコンプライアンスのリマインダー | 管理 CLAUDE.md |
| Claude の行動指示 | 管理 CLAUDE.md |
特定の CLAUDE.md ファイルを除外する
大規模なモノレポでは、祖先 CLAUDE.md ファイルに作業に関連のない指示が含まれている可能性があります。claudeMdExcludes 設定を使用すると、パスまたはグロブパターンで特定のファイルをスキップできます。
この例は、トップレベルの CLAUDE.md と親フォルダのルールディレクトリを除外します。.claude/settings.local.json に追加して、除外をマシンにローカルに保ちます。
claudeMdExcludes は任意の設定レイヤーで設定できます。ユーザー、プロジェクト、ローカル、または管理ポリシー。配列はレイヤー全体でマージされます。
管理ポリシー CLAUDE.md ファイルは除外できません。これにより、個別の設定に関係なく、組織全体の指示が常に適用されることが保証されます。
自動メモリ
自動メモリを使用すると、Claude は何も書かずにセッション間で知識を蓄積できます。Claude は作業中に自分自身のためにメモを保存します。ビルドコマンド、デバッグの洞察、アーキテクチャノート、コードスタイルの好み、ワークフローの習慣。Claude はすべてのセッションで何かを保存するわけではありません。情報が将来の会話で役立つかどうかに基づいて、何を記憶する価値があるかを決定します。自動メモリには Claude Code v2.1.59 以降が必要です。
claude --version でバージョンを確認します。自動メモリを有効または無効にする
自動メモリはデフォルトで有効です。切り替えるには、セッションで/memory を開き、自動メモリトグルを使用するか、プロジェクト設定で autoMemoryEnabled を設定します。
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 を設定します。
ストレージの場所
各プロジェクトは~/.claude/projects/<project>/memory/ に独自のメモリディレクトリを取得します。<project> パスは git リポジトリから派生しているため、同じリポジトリ内のすべてのワーキングツリーとサブディレクトリは 1 つの自動メモリディレクトリを共有します。git リポジトリの外では、プロジェクトルートが代わりに使用されます。
自動メモリを別の場所に保存するには、ユーザーまたはローカル設定で autoMemoryDirectory を設定します。
.claude/settings.json)からは受け入れられません。
ディレクトリには MEMORY.md エントリポイントとオプションのトピックファイルが含まれます。
MEMORY.md はメモリディレクトリのインデックスとして機能します。Claude はセッション全体を通じてこのディレクトリ内のファイルを読み書きし、MEMORY.md を使用して保存されている内容を追跡します。
自動メモリはマシンローカルです。同じ git リポジトリ内のすべてのワーキングツリーとサブディレクトリは 1 つの自動メモリディレクトリを共有します。ファイルはマシン間またはクラウド環境全体で共有されません。
仕組み
MEMORY.md の最初の 200 行、または最初の 25KB のいずれか先に来る方が、すべての会話の開始時に読み込まれます。そのしきい値を超えるコンテンツはセッション開始時に読み込まれません。Claude は詳細なメモを別のトピックファイルに移動することで、MEMORY.md を簡潔に保ちます。
この制限は MEMORY.md にのみ適用されます。CLAUDE.md ファイルは長さに関係なく完全に読み込まれますが、より短いファイルはより良い遵守を生成します。
debugging.md または patterns.md のようなトピックファイルは起動時に読み込まれません。Claude は標準ファイルツールを使用してセッション中にオンデマンドで読み込み、情報が必要な場合に読みます。
Claude はセッション中にメモリファイルを読み書きします。Claude Code インターフェイスで「Writing memory」または「Recalled memory」が表示されたら、Claude は ~/.claude/projects/<project>/memory/ から積極的に更新または読み込みを行っています。
メモリを監査および編集する
自動メモリファイルはプレーンマークダウンで、いつでも編集または削除できます。/memory を実行して、セッション内からメモリファイルを参照して開きます。
/memory で表示および編集する
/memory コマンドは、現在のセッションに読み込まれたすべての CLAUDE.md、CLAUDE.local.md、およびルールファイルをリストし、自動メモリのオン/オフを切り替え、自動メモリフォルダを開くためのリンクを提供します。任意のファイルを選択してエディタで開きます。
Claude に何かを記憶するよう求めるとき、「常に npm ではなく pnpm を使用する」または「API テストがローカル Redis インスタンスを必要とすることを覚えておく」のように、Claude はそれを自動メモリに保存します。代わりに CLAUDE.md に指示を追加するには、Claude に直接「これを CLAUDE.md に追加する」と尋ねるか、/memory を通じてファイルを自分で編集します。
メモリの問題をトラブルシューティングする
これらは CLAUDE.md と自動メモリの最も一般的な問題と、それらをデバッグするための手順です。Claude が CLAUDE.md に従っていない
CLAUDE.md コンテンツはシステムプロンプト自体の一部ではなく、システムプロンプトの後のユーザーメッセージとして配信されます。Claude はそれを読んで従おうとしますが、特に曖昧または矛盾する指示の場合、厳密な遵守の保証はありません。 デバッグするには:/memoryを実行して、CLAUDE.md および CLAUDE.local.md ファイルが読み込まれていることを確認します。ファイルがリストされていない場合、Claude はそれを見ることができません。- 関連する CLAUDE.md がセッションに読み込まれる場所にあることを確認します(CLAUDE.md ファイルをどこに配置するかを選択するを参照)。
- 指示をより具体的にします。「コードを適切にフォーマットする」よりも「2 スペースのインデントを使用する」の方が機能します。
- CLAUDE.md ファイル全体で矛盾する指示を探します。2 つのファイルが同じ動作に対して異なるガイダンスを提供する場合、Claude は 1 つを任意に選択する可能性があります。
--append-system-prompt を使用します。これはすべての呼び出しで渡す必要があるため、対話的な使用よりもスクリプトと自動化に適しています。
自動メモリが何を保存したかわからない
/memory を実行し、自動メモリフォルダを選択して、Claude が保存したものを参照します。すべてはプレーンマークダウンで、読み取り、編集、または削除できます。
CLAUDE.md が大きすぎる
200 行を超えるファイルはより多くのコンテキストを消費し、遵守を減らす可能性があります。パス固有のルールを使用して、Claude が一致するファイルで作業する場合にのみ指示を読み込むか、すべてのセッションで必要でないコンテンツをトリミングします。@path インポートに分割すると、組織化に役立ちますが、インポートされたファイルは起動時に読み込まれるため、コンテキストは削減されません。
/compact 後に指示が失われたようです
プロジェクトルート CLAUDE.md は圧縮を完全に生き残ります。/compact の後、Claude はディスクから CLAUDE.md を再度読み込み、セッションに新しく再注入します。サブディレクトリ内のネストされた CLAUDE.md ファイルは自動的に再注入されません。それらは Claude がそのサブディレクトリ内のファイルを読む次回に再度読み込まれます。
圧縮後に指示が消えた場合、それは会話でのみ与えられたか、まだ再度読み込まれていないネストされた CLAUDE.md に存在しています。セッション間で永続化するために、会話のみの指示を CLAUDE.md に追加します。圧縮後に何が生き残るかを参照して、完全な内訳を確認してください。
効果的な指示を書くを参照して、サイズ、構造、および具体性に関するガイダンスを確認してください。
関連リソース
- 設定をデバッグする: CLAUDE.md または設定が有効にならない理由を診断する
- Skills: オンデマンドで読み込まれる反復可能なワークフローをパッケージ化する
- Settings: 設定ファイルで Claude Code の動作を設定する
- Subagent メモリ: subagent が独自の自動メモリを保持できるようにする