Skip to content

CLAUDE.md とメモリ ​

Claude Code のセッションは、毎回、何も覚えていない状態から始まります(01. Claude Code とは何か の「セッション」を参照)。前のセッションで伝えたルールや、作業の中で分かったことを、次のセッションに引き継ぐための仕組みが 2 つあります。利用者が書く CLAUDE.md と、Claude が自分で書く自動メモリです。このページでは、この 2 つの違いと、使い方を整理します。

この記事で分かること ​

  • CLAUDE.md と自動メモリの違い
  • CLAUDE.md を置く場所と、読み込まれる順番
  • 守られやすい CLAUDE.md の書き方
  • 自動メモリが保存される場所と、中身の確かめ方
  • CLAUDE.md に書いた指示に、Claude が従わないときの、原因と対処

用語の整理 ​

用語意味
CLAUDE.mdClaude に毎回読ませたい指示を、利用者が書いておくファイル。Markdown(見出しや箇条書きを記号で表す書き方)で書く
自動メモリ(auto memory)利用者からの訂正や好みなどを、Claude が自分で書き留めておく仕組み
コンテキスト(context)Claude が、その時点で見ている情報の全体。CLAUDE.md も自動メモリも、ここに読み込まれる
インポート(import)CLAUDE.md の中から、別のファイルの内容を取り込むこと
ルール(rules).claude/rules/ フォルダーに、話題ごとに分けて置く指示のファイル
AGENTS.mdAI のコーディング用のツールに向けた指示を書く、ツールをまたいで使われるファイル
フック(hook)決まったタイミングで、決まったコマンドを必ず実行する仕組み

2 つの仕組みの違い ​

CLAUDE.md自動メモリ
誰が書くか利用者Claude
書かれる内容指示とルール利用者の好み、利用者からの訂正、コードからは分からない事情
範囲プロジェクト、利用者、組織リポジトリごと
読み込まれるときすべてのセッションの初めすべてのセッションの初め(索引の、最初の 200 行または 25KB まで)
共有リポジトリにコミットすれば、ほかの人にも届くその PC の中だけ

Claude の行動を決めておきたいときは、CLAUDE.md を使います。自動メモリは、利用者が手を動かさなくても、Claude が訂正から学んでいく仕組みです。

どちらも「指示」であって、「強制」ではない ​

大切な点があります。CLAUDE.md も自動メモリも、Claude にとっては、読んで従おうとする情報です。必ず守られることを保証する仕組みではありません。公式ドキュメントにも、指示があいまいだったり、ほかの指示と食い違っていたりすると、守られないことがある、と書かれています。

確実さが必要なことには、別の仕組みを使います。

やりたいこと使う仕組み
ある操作を、確実に禁止したい権限ルールの deny(03. 権限モードと、確認を減らす方法)
決まったタイミングで、必ず何かを実行したい(コミットの前に必ず検査する、など)フック
作業の方針や、プロジェクトの決まりを伝えたいCLAUDE.md

CLAUDE.md を置く場所 ​

CLAUDE.md は、置く場所によって、効く範囲が変わります。考え方は、04. 設定ファイルの仕組み の設定ファイルと同じです。

範囲場所使いみち共有される相手
組織OS ごとに決まった、システムのフォルダー組織で共通の決まり組織の全員
利用者~/.claude/CLAUDE.mdすべてのプロジェクトに共通の、個人の好み自分だけ
プロジェクトプロジェクトの CLAUDE.md、または .claude/CLAUDE.mdプロジェクトの構成、決まり、よく使う手順リポジトリをとおして、チームの全員
プロジェクト(自分だけ)プロジェクトの CLAUDE.local.mdそのプロジェクトでの、個人的なメモ。.gitignore に加えて、コミットしない自分だけ

読み込まれる順番 ​

Claude Code は、作業フォルダーと、その上にあるすべてのフォルダーから、CLAUDE.md と CLAUDE.local.md を探して読み込みます。

  • 見つかったファイルは、どれか 1 つが選ばれるのではなく、すべてがつなげて読み込まれる。
  • 順番は、範囲の広いものが先で、狭いものが後になる。作業フォルダーに近いファイルほど、後に読まれる。
  • 作業フォルダーの下のフォルダーにある CLAUDE.md は、セッションの初めには読み込まれない。Claude が、そのフォルダーの中のファイルを読んだときに、読み込まれる。

設定ファイルとの違いに、注意が必要です。設定ファイルには優先順位があり、同じキーは、順位の高いファイルの値が使われました。CLAUDE.md には、そのような上書きの決まりがありません。2 つのファイルに食い違う指示があると、Claude がどちらに従うかは、決まっていません。食い違いを作らないことが、利用者の側の仕事になります。

CLAUDE.md に書くこと ​

公式ドキュメントは、CLAUDE.md を、「書いておかなければ、毎回説明し直すことになる内容を、書き留める場所」と説明しています。書き足すきっかけとして、次の場面が挙げられています。

  • Claude が、同じ誤りを 2 回した
  • レビューで、このプロジェクトなら知っているべきことを、指摘された
  • 前のセッションと同じ訂正や説明を、また入力した
  • 新しく加わる人にも、同じ説明が必要になる

書くのは、すべてのセッションで知っておいてほしい事実です。ビルドやテストのコマンド、決まり、フォルダーの構成、「必ずこうする」というルールなどです。

逆に、手順の多い作業の説明や、プロジェクトの一部にしか関係しない内容は、CLAUDE.md には向きません。そうした内容は、必要なときだけ読み込まれる仕組み(スキルや、パスを指定したルール)に分けます。スキルは「06. Skills」で扱う予定です。

守られやすい書き方 ​

CLAUDE.md は強制ではないので、書き方によって、守られやすさが変わります。

確かめられるくらい、具体的に書く。

あいまいな書き方具体的な書き方
コードをきれいに整えるインデントは、スペース 2 つにする
変更をテストするコミットの前に、npm test を実行する
ファイルを整理しておくAPI の処理は、src/api/handlers/ に置く

短く、整理して、食い違いなく書く。

  • 長さ:1 つのファイルは、200 行より短くするのが目安。長いファイルは、コンテキストを多く使い、守られにくくなる。
  • 構成:関連する指示を、見出しと箇条書きでまとめる。文章を詰め込んだ段落より、従いやすい。
  • 食い違い:2 つの指示が矛盾していると、Claude は、どちらかを選んでしまう。古くなった指示や、ぶつかる指示は、ときどき見直して取り除く。

最初の 1 つを作る ​

プロジェクトの CLAUDE.md は、自分で書くほかに、/init コマンドで、たたき台を作らせることもできます。Claude がプロジェクトの中を調べて、ビルドのコマンドや、見つけた決まりを書き出します。すでに CLAUDE.md がある場合は、上書きせずに、改善の提案をします。作られた内容に、Claude が自分では見つけられない決まりを、書き足していきます。

CLAUDE.md を分ける ​

内容が増えてきたときのために、分ける方法が 2 つあります。

ほかのファイルを取り込む(インポート) ​

CLAUDE.md の中に @ファイルのパス と書くと、そのファイルの内容が、一緒に読み込まれます。

text
プロジェクトの概要は @README.md を参照。

インポートは、ファイルを整理するための仕組みです。取り込まれたファイルも、セッションの初めに読み込まれるので、コンテキストの節約にはなりません。

パスを、取り込まずに文字として書きたいときは、`@README.md` のように、バッククォートで囲みます。

話題ごとのルールに分ける(.claude/rules/) ​

プロジェクトの .claude/rules/ フォルダーに、話題ごとの Markdown ファイルを置くと、それぞれがルールとして読み込まれます。

text
プロジェクト/
└── .claude/
    ├── CLAUDE.md
    └── rules/
        ├── code-style.md
        └── testing.md

ルールのファイルの先頭に、対象のファイルのパスを書いておくと、Claude が、そのパスに当てはまるファイルを扱うときだけ、読み込まれます。

markdown
---
paths:
  - "src/api/**/*.ts"
---

# API のルール

- すべての入力を検証する

パスを指定したルールは、必要なときだけ読み込まれるので、コンテキストの節約になります。

AGENTS.md との関係 ​

AGENTS.md は、AI のコーディング用のツールに向けた指示を書くファイルで、複数のツールで使われています。Claude Code も、AGENTS.md を読めます。

リポジトリにあるものClaude が読むもの
AGENTS.md だけAGENTS.md
AGENTS.md と CLAUDE.md の両方CLAUDE.md だけ
AGENTS.md を取り込んでいる CLAUDE.mdCLAUDE.md と、取り込まれた AGENTS.md

ほかのツールと同じ指示を共有したい場合は、指示を AGENTS.md に書き、CLAUDE.md から @AGENTS.md と書いて取り込む方法があります。AGENTS.md を直接読む動作には、バージョン 2.1.277 以降が必要です。

自動メモリ ​

自動メモリは、Claude が、作業の中で分かったことを、自分のために書き留める仕組みです。自分の PC で使うセッションでは、既定で有効になっています。

何が保存されるか ​

Claude は、次の 4 種類を保存します。

種類内容
user利用者の役割、得意なこと、作業の好み
feedback利用者からの訂正と、利用者が認めた進め方
project進行中の作業、期限、決めたこと。コードや Git の履歴からは分からないもの
referenceプロジェクトの外にある情報の場所。課題の管理の画面など

コードを読めば分かること(構成、ファイルの場所など)や、CLAUDE.md にすでに書かれていることは、保存しません。また、毎回のセッションで保存するわけではなく、あとの会話で役に立つと判断したことだけを保存します。

どこに保存されるか ​

自動メモリは、プロジェクトごとのフォルダーに保存されます。

text
~/.claude/projects/<プロジェクト>/memory/
├── MEMORY.md              索引。1 つのメモリにつき 1 行
├── feedback_testing.md    メモリ 1 件
└── ...
  • <プロジェクト> の部分は、Git のリポジトリから決まる。同じリポジトリであれば、どのフォルダーから始めても、同じ場所を使う。
  • MEMORY.md は索引で、最初の 200 行(または 25KB)までが、セッションの初めに読み込まれる。
  • 個々のメモリのファイルは、セッションの初めには読み込まれない。必要になったときに、Claude が読む。
  • 保存されるのは、その PC の中だけ。 ほかの PC や、クラウドのセッションとは、共有されない。
  • 保存先はリポジトリごとに決まるので、あるリポジトリで保存された内容は、別のリポジトリで始めたセッションには読み込まれない。

メモリのファイルは、普通の Markdown です。利用者が、いつでも開いて、編集や削除ができます。

「覚えておいて」と頼んだとき ​

Claude に「これを覚えておいて」と頼むと、自動メモリに保存されます。CLAUDE.md に書いてほしいときは、「CLAUDE.md に追加して」と、はっきり頼みます。

頼み方保存される場所ほかの人に届くか
「覚えておいて」自動メモリ届かない
「CLAUDE.md に追加して」CLAUDE.mdコミットすれば届く

チームで共有したい決まりは、CLAUDE.md に書きます。自動メモリに入れただけでは、自分の PC の、そのリポジトリでしか効きません。

確かめ方と、止め方 ​

  • セッションの中で /memory と入力すると、CLAUDE.md と自動メモリのファイルの一覧を見て、開ける。自動メモリを有効にするか、無効にするかも、ここで切り替えられる。
  • プロジェクトごとに無効にするには、そのプロジェクトの設定ファイルに、"autoMemoryEnabled": false と書く。

CLAUDE.md に書いた指示に、Claude が従わないとき ​

CLAUDE.md は、Claude が読んで、従おうとする情報です。書いたとおりに動くことを保証する仕組みではありません。そのため、指示を書いたのに、Claude が従わないことがあります。場面ごとに、原因と対処を整理します。

Claude が、CLAUDE.md の指示に従わない ​

CLAUDE.md に書いてある指示と違うことを、Claude がしてしまう場合です。原因は、3 つ考えられます。

原因対処
CLAUDE.md が、読み込まれていないセッションの中で /context と入力して、読み込まれたファイルの一覧(Memory files)に、そのファイルがあるかを確かめる
指示があいまいで、守ったかどうかを判断できない確かめられるくらい、具体的に書き直す
別のファイルの指示と、食い違っている上のフォルダーの CLAUDE.md、~/.claude/CLAUDE.md、ルールのファイルを見直して、食い違いを取り除く

必ず実行してほしいことを、Claude が抜かすことがある ​

「コミットの前に、必ず検査を実行する」のような指示を書いても、実行されないことがある場合です。

原因対処
CLAUDE.md は、強制ではない決まったタイミングで、必ず実行したいことは、フックに書く

会話の初めに伝えた指示に、Claude が途中から従わなくなる ​

セッションの初めに、会話の中で伝えた指示が、会話が長くなると、守られなくなる場合です。

原因対処
会話の中だけで伝えた指示は、圧縮(古い内容の要約)で、失われることがある続けて守ってほしい指示は、CLAUDE.md に書く。プロジェクトの CLAUDE.md は、圧縮のあとに、読み込み直される

Claude が、AGENTS.md を読み込まない ​

リポジトリに AGENTS.md があるのに、その内容を、Claude が知らない場合です。

原因対処
作業フォルダーか、その上のフォルダーに、CLAUDE.md がある。この場合、Claude は、CLAUDE.md だけを読むCLAUDE.md の中に @AGENTS.md と書いて、取り込む

自動メモリに、Claude が何を保存したかが分からない ​

Claude が何を覚えているのかを、利用者が確かめたい場合です。

原因対処
メモリは、Claude が自分で書くので、利用者は、中を見るまで内容を知らないセッションの中で /memory と入力して、メモリのフォルダーを開く。ファイルは普通の Markdown なので、読むことも、直すことも、消すこともできる

実際にやってみる ​

メモリのファイルの中身を確かめる ​

このサイトの作業でも、自動メモリを使っています。保存されているフォルダー(~/.claude/projects/<プロジェクト>/memory/)を開いて、中身を確かめました。構成は、公式ドキュメントの説明のとおりでした。索引の MEMORY.md と、メモリ 1 件ごとのファイルがあります。

索引は、1 件につき 1 行で、次の形をしています(内容は、例に置き換えています)。

markdown
- [ファイルへのリンクは絶対パスで示す](feedback_absolute_file_links.md) — 相対パスのリンクは開けなかった

個々のファイルの先頭には、名前、説明、種類が書かれています。

markdown
---
name: absolute-file-links
description: ファイルへのリンクは、絶対パスで示す
metadata:
  type: feedback
---

(ここに、内容と、その理由、当てはめ方が書かれる)

保存されていたメモリは、feedback と project の 2 種類でした。それぞれ、次のような内容です。

種類保存されていた内容の例
feedback「承認を求める前に、用語を説明する」「想定していた結果は、想定内であると伝える」「ファイルへのリンクは、絶対パスで示す」
projectテーマごとのページの構成、公開済みのページ、次に書くページ、ページを書くときに決めた方針

feedback の 3 つは、どれも、作業の途中で利用者から指摘を受けて、保存されたものです。project のほうは、コードや Git の履歴を見ても分からない、作業の進み具合と決めごとです。公式ドキュメントの「何が保存されるか」の説明と、合っています。

プロジェクトの CLAUDE.md を作る ​

このサイトのリポジトリには、CLAUDE.md がありませんでした。これまでの作業の中で、何度も確かめ直したり、伝え直したりしていた内容を、CLAUDE.md にまとめました。リポジトリのいちばん上のフォルダーに置いています。

markdown
# study-lab

学習した内容をまとめ、GitHub Pages で公開するサイトのリポジトリ。
サイトは VitePress で作り、`docs/` 以下の Markdown がページになる。

## コマンド

- サイトのビルド:`npm run docs:build`
- ビルド結果の確認:`npm run docs:preview -- --port 4173`
  - ビルドし直したら、確認用のサーバーを起動し直す(古いファイル一覧のままになるため)
- Python のテスト:`pytest`
- Python の lint:`ruff check .`
- Python の仮想環境は `venv/`

## 変更の進め方

- `main` へ直接 push しない。ブランチを作り、プルリクエストを出す
- 必須のチェック(`docs-build`、`python-ci`)に合格してから、マージする
- 公開の前に、確認用のサーバーで表示を確かめる

## ページを書くときの決まり

- 専門用語は、最初に出てくるところで説明する
- 事実は、公式ドキュメントで確かめてから書く。確かめていない内容は、その旨を書く
- 資格試験の問題文や、その再現は載せない。確認問題は自作する
- 新しいページを公開したら、次の 3 か所を更新する
  - テーマのトップページ(`docs/<テーマ>/index.md`)の一覧
  - サイドバー(`docs/.vitepress/config.mts`)
  - トップページ(`docs/index.md`)の「新着記事」

上は、作ったときの全文です。その後、Python の CI に型の検査を加えたときに、「コマンド」に pyright の 1 行を書き足しました(Python のテストと lint を CI で自動実行する を参照)。

作ったときは、全体で 29 行でした。書くときに、上で整理した考え方を、次のように当てはめました。

書いた内容そう書いた理由
ビルド、テスト、lint のコマンドすべてのセッションで使う事実。コマンドの形で書いてあるので、そのとおりに実行したかを確かめられる
「ビルドし直したら、確認用のサーバーを起動し直す」作業の中で、同じつまずきを繰り返した点。コードを読んでも分からない
変更の進め方(ブランチ、プルリクエスト、必須のチェック)毎回の作業で守る手順。チェックの名前を具体的に書いた
新しいページを公開したときに更新する 3 か所抜けやすい作業。ファイルのパスまで書いた

逆に、書かなかった内容もあります。

書かなかった内容理由
フォルダーの構成の詳しい説明、使っているパッケージの一覧コードや設定ファイルを読めば分かる
自分の PC だけに当てはまること(コマンドの置き場所など)ほかの人には当てはまらない。共有するファイルには書かない
個々のページの内容についての細かい方針すべてのセッションで必要なわけではない

書いたコマンドが、実際に動くことも確かめました。

コマンド結果
npm run docs:build成功
pytest15 件のテストが成功
ruff check .問題なし

CLAUDE.md に書いたコマンドが動かないと、Claude は、誤った前提で作業を始めてしまいます。書いたら、動くことを確かめておきます。

このファイルは、セッションの途中で作ったので、作った時点では、そのセッションに読み込まれていませんでした。その後、会話が長くなって圧縮(古い内容の要約)が行われたあとに、CLAUDE.md の内容が、Claude に読み込まれるようになりました。「プロジェクトの CLAUDE.md は、圧縮のあとに、読み込み直される」という、公式ドキュメントの説明のとおりの動きです。

まとめ ​

  • セッションをまたいで知識を引き継ぐ仕組みは、利用者が書く CLAUDE.md と、Claude が書く自動メモリの 2 つ。
  • どちらも、Claude が読んで従おうとする情報で、強制ではない。確実に止めたい操作は権限ルールの deny に、必ず実行したいことはフックに書く。
  • CLAUDE.md は、置く場所で範囲が決まる。見つかったファイルは、すべてつなげて読み込まれる。食い違いがあっても、上書きの決まりはない。
  • CLAUDE.md は、具体的に、短く、整理して書く。1 つのファイルは 200 行より短くするのが目安。
  • 自動メモリは、リポジトリごとに、その PC の中だけに保存される。チームで共有したい決まりは、CLAUDE.md に書く。
  • CLAUDE.md に書いたコマンドは、実際に動くことを確かめておく。

確認の記録 ​

項目内容
最終確認日2026 年 10 月 12 日
Claude Code のバージョン2.1.295(macOS のデスクトップアプリ)
検証の状況「実際にやってみる」は、macOS のデスクトップアプリと、このサイトのリポジトリで確かめた結果。プロジェクトの CLAUDE.md を実際に作り、書いたコマンドが動くことと、圧縮のあとに内容が読み込まれることを確かめた。それ以外の節は、公式ドキュメントの内容をもとに書いている
確かめていない内容インポート、.claude/rules/、AGENTS.md、/init、/memory、/context は、実際には操作していない