CLAUDE.mdが長いと、AIは作業を1つも始めないうちに、使える文脈の多くを指示書の読み込みに使います。わたしの環境では、CLAUDE.mdと、そこから「最初に全部読め」と指定していたファイルの合計が68,463字ありました。
- 原因は、CLAUDE.md本体ではなく「最初に読め」と書いた参照先。とくに、追記し続ける作業履歴と「いまの状態」を同じファイルに入れていたこと
- 対策は2層構造。1層目は「現在地」だけを書く上書き式の1ファイル(2,500字以内)。2層目は、1層目の索引から必要な時だけ読む
- 結果は68,463字 → 4,816字(93.0%減)。読み込むファイルは8 → 2。追加費用なし、書いたコードは0行
同じ出来事の経緯はnoteに物語として書きました。この記事は、これから自分のCLAUDE.mdを見直す人が、手順だけを追えるようにまとめたものです。
CLAUDE.mdが長すぎると何が起きるか
わたしの環境で実際に起きたことを並べます。
- 作業前に文脈が埋まる: 68,463字は、日本語だとトークン換算で7〜9万程度(目安の換算で、実測ではありません)。作業領域の半分近くを、作業を始める前に使っていた計算になります
- 圧縮のあとに足場を失う: Claude Codeは会話が長くなると自動で要約・圧縮して続きます。この機能は標準で動いていて、その日も1回発火していました。困っていたのは圧縮そのものではなく、圧縮後にAIが「いま何をしていて、次に何をするか」を曖昧にしか覚えていないことでした
- 古い指示が気づかれずに残る: 参照先の1つは、すでに削除したファイルでした。AIは毎回開こうとして、無いので黙って諦めていました。エラーにならないので誰も気づきません
- 誤った指示が残る: わたしはAIを2体並走させていて、担当ファイルが分かれています。指示書を読み返したら、もう1体の担当ファイルを更新させる指示になっていました。実害が出る前に見つかったのは偶然です
長い指示書は、読むコストが高いだけでなく、誰も読み直さないので腐る。見直してわかったのは主にこの2点でした。
手順1: 「最初に読むもの」を全部、字数で測る
CLAUDE.md本体だけを測っても意味がありません。そこに「作業前に読め」と書いてあるファイルを全部足します。わたしの内訳はこうでした(実測)。
| ファイルの役割 | 字数 |
|---|---|
| CLAUDE.md本体 | 2,408 |
| 決定ログ | 8,316 |
| 運用ルーティン | 6,941 |
| 2体並走の取り決め | 6,874 |
| 無人チェックの結果ログ | 3,888 |
| もう1体の状況ファイル | 692 |
| 引き継ぎメモ | 11,343 |
| 人の確認待ちリスト | 7,517 |
| 自分の作業履歴 | 20,484 |
| 合計 | 約68,500(正確には68,463) |
CLAUDE.md本体は2,408字で、問題はほとんど参照先にありました。いちばん大きかった作業履歴は40KB・605行あり、開いてみると大半が5日前の記録でした。その日の作業には関係ありません。
字数は、単位がはっきりする方法で数えます。わたしは最初 wc -c(バイト数)で測った数字を「字」と書いて公開し、あとで訂正しました。日本語は1文字が約3バイトなので、2倍以上の値に見えます。wc -m も環境のロケールによってはバイト数を返しました。いまは次の方法に統一しています。
node -e "console.log([...require('fs').readFileSync('CLAUDE.md','utf8')].length)"
削減率はどちらの単位で計算しても93.0%で同じでしたが、公開した絶対値は誤りでした。
手順2: 「追記する履歴」と「いまの状態」を分ける
太っていた原因は1つでした。
- 追記していく作業ログ(増え続ける)
- いまどこにいるかを示す状態(本当は数行で済む)
この2つを同じファイルに入れて、「現在地」を知るために増え続ける履歴を毎回まるごと読ませていました。
分け方は次のとおりです。
- 履歴は履歴専用のファイルへ移す。当月分だけ残し、古い月は
archive/に移す - 状態は新しい1ファイル(わたしは
NOW.mdと呼んでいます)に書く。こちらは追記せず上書きする
手順3: 1層目のファイルを作る(上書き・字数上限・索引)
1層目の NOW.md のルールは3つだけにしました。
1. 上書き運用。追記しない(追記すると必ず太るので、構造で禁じる)
2. 2,500字以内(超えたら中身を削るのではなく、2層目へ出す)
3. 末尾に索引を持つ(どういう作業の時に、どのファイルを読むか)
中身の骨組みです。
# NOW — 現在地(セッション開始時に読むのはこれだけ)
> 最終更新: YYYY-MM-DD
> このファイルは上書き運用。追記しない。2,500字以内。
> 履歴は履歴ファイルへ。古い月は archive/ へ。
## 現在地
- フェーズ: (いま何をやっている期間か。1行)
- 稼働中の自動化: (動いているものだけ)
## 直近の到達点
- (3〜5行。それ以上書きたくなったら履歴ファイルへ)
## 次の一手
1. (具体的な次の1手)
2. (2手目)
## 人の確認待ち(これがないと進めない)
- (止まっている理由)
## 索引(必要になった時だけ読む)
- 何かを「確定」しようとする時 → 決定ログ(全文は読まず検索で引く)
- 公開物を作る時 → 公開ルール
- 文体で迷った時 → CLAUDE.md の該当節
- 過去の判断理由を辿る時 → 当月の履歴ファイル
このファイルの本体は最後の索引です。書くときに効いたのは、左側を「ファイル名」ではなく「作業の状況」で書くことでした。「決定ログを読む時」ではなく「何かを確定しようとする時」と書きます。AIが自分の状況と照らし合わせられる形でないと、索引は使われません。
「読むな」とだけ書くのではなく「この時に読む」と条件を書いておかないと、AIは念のために全部開きます。
手順4: CLAUDE.mdの「最初に読め」を1行にする
いちばん効いた変更はここです。
変更前:
## 作業を始める前に、必ずこの順で読む
1. 決定ログ
2. 無人チェックの最新結果
3. 運用ルーティン
4. 2体並走の取り決め
5. もう1体の状況
6. 引き継ぎ
変更後:
## 作業を始める前に、これだけ読む
NOW.md — 現在地。末尾に索引がある。
他のファイルは、索引に従って必要になった時だけ開く。
冒頭で全部読み込まない。
「冒頭で全部読み込まない」の一文を書くまで、AIは親切心で全部開いていました。禁止は明示しないと止まりません。
CLAUDE.md本体に残すのは、全作業に必要で、ほとんど変わらないルールだけにしています。いまのわたしのCLAUDE.mdの節立ては、おおむね次のとおりです。
- このプロジェクトは何か(数行)
- 絶対に守るルール(公開物に含めてはいけない情報など)
- 文体・トーン
- 作業ルール(最初に読むもの、終わるときにやること)
- 使える補助エージェントとスキルの一覧(名前と用途だけ)
- 環境メモ(最小限)
個別の手順、経緯、長い説明は、別の文書やスキルに出しています。
手順5: 「終わるときに更新する」を指示に入れる
上書き式のファイルは、更新されなければ嘘の現在地になります。CLAUDE.mdに終了時の手順を入れました。
## 作業を終えるとき
- NOW.md を最新化する(現在地/次の一手/確認待ち)
- 会話の圧縮が起きそうなときも、その直前に更新する
- 履歴として残したいものは履歴ファイルへ追記する
「圧縮の直前にも更新する」が効きました。圧縮は予告なく起きるので、「作業の終わり」だけだと間に合いません。圧縮のあとも、CLAUDE.mdは読み直され、そこから1つ辿れば現在地に戻れます。
つまずいた点
減らしすぎて、一度動けなくなった。 最初は1層目を1KB程度まで削りました。するとAIが「どこまで確定してよいか」がわからなくなり、いちいち確認を挟むようになりました。2,500字に戻し、「次の一手」と「確認待ち」を必ず書く欄として固定しました。上限だけでなく、下限も必要でした。
上限は、決めただけでは守られない。 この記事を書くために今日(2026-09-26)測り直したところ、CLAUDE.mdが2,692字、NOW.mdが2,959字でした。NOW.mdは上限の2,500字を超えています。2週間前(2026-09-11)の監査では2,489字でした。人の意志で守る上限は、じわじわ破られます。
消費源は指示書だけではなかった。 調べる途中で、このプロジェクトと関係のない外部連携が有効なままになっているのも見つけました。使っていない連携やスキルも、起動時の場所を取ります。2026-09-11の監査では、古いスキルのバックアップ3件を読み込み対象の外へ移し、起動時のスキル一覧を6件から3件にしました。
結果の数字
| 項目 | 変更前 | 変更後 |
|---|---|---|
| セッション開始時に読む字数 | 68,463字 | 4,816字 |
| 削減率 | — | 93.0% |
| 読むファイル数 | 8 | 2 |
| 作業時間 | — | 約2時間(調査・書き換え・検証を含む) |
| 追加費用 | — | 0円 |
| 書いたコード | — | 0行 |
- 見つかった壊れた参照: 1件(削除済みファイル)
- 見つかった誤った指示: 1件(担当外のファイルを更新させる内容)
- 圧縮後に人が説明し直す回数: 未計測(数えていないので、減ったかどうかは数字では言えません)
- Claude Codeの
/contextでの実測: 未計測
まとめ
- CLAUDE.mdが長いかどうかは、本体ではなく「最初に読め」と書いた参照先まで足して測る。単位は字かバイトかを確かめる
- 増え続ける履歴と、いまの状態を同じファイルに入れない
- 1層目は上書き式・字数上限・索引の3点。索引は「作業の状況」で書く
- CLAUDE.mdには「これだけ読む」「全部は読まない」を明記する
- 上限は決めるだけでは守られない。わたしの次の一手は、字数の見張りと参照先の実在確認を無人チェックに入れることです
関連記事
- AIへの指示書が、AIの作業領域を半分食っていました。7万字を5千字にした記録(note) — この記事の元になった経緯の記録
- Claude Codeをサブエージェントで役割分担する|公開前チェックを別AIに任せた構成と実測値 — 役割を分けてCLAUDE.mdに全部を書かずに済ませている構成
- もう1台のAI、ChatGPT(Codex)を実際にどう使っているか — この記事に出てくる「2体並走」の中身
- AIエージェント運用ガイド|Claude CodeとCodexに実務を任せる構成と失敗の記録 — 構成・設定・失敗の記事をまとめた一覧
Claude Codeで迷ったときに読んだ本
指示書の書き方以前に、「何をAIに任せて、何を自分で見るか」の線引きで迷ったときに読んだのが、実践Claude Code入門―現場で活用するためのAIコーディングの思考法です。読んだ感想と、もう1冊(VS Codeの入門書)は「Claude Code入門で読んだ本2冊|VS Codeの壁と、AIに任せる範囲の壁」にまとめています。
※上記はAmazonアソシエイトのリンク(広告)です。紹介しているのは実際に読んだ本だけです(アフィリエイトについて)。
AIエージェントの運用記録はnoteにまとめています
指示書やサブエージェントをどう組んで、どこで失敗したかは、noteマガジン「AIエージェント運用ノート」に記録しています。
注記
この記事の内容は、わたしが運用している環境での実測を一般化したものです。指示書の例は説明用に書き直した最小例で、実際のファイルの中身ではありません。


コメント