🤖

/contextコマンドでMemory Files確認し定期的に整理しよう

に公開

はじめに

ZAICOでiOSエンジニアをしている@ryo_hiroです。

Claude Codeを使い込んでいくとCLAUDE.mdにルールを追加したり、.claude/rules/にファイルを増やしたり、スキルを作ったりと設定ファイルが自然と増えていきます。

しかしこれらのファイルは毎セッション開始時にコンテキストウィンドウにロードされるため、放っておくとトークンが膨らみます。
本来の作業に使えるコンテキストが圧迫されていきます。

この記事では /context コマンドで現状を把握し、Memory Filesを整理する方法を紹介します。

/context でまず現状を把握する

Claude Codeには /context というコマンドがあり、現在のトークン使用量の内訳を確認できます。

Memory files の行が毎セッション常時ロードされるファイルのトークン数です。
この記事ではここを削減していきます。

起動時に読み込まれるもの

公式ドキュメントによると、Claude Codeの起動時には以下のファイルがコンテキストに読み込まれます。

種類 ファイル ロード条件
Project memory ./CLAUDE.md または ./.claude/CLAUDE.md 常時
Project rules .claude/rules/*.md pathsなし → 常時pathsあり → マッチ時のみ
User memory ~/.claude/CLAUDE.md 常時
Local memory ./CLAUDE.local.md 常時
Auto memory ~/.claude/projects/<project>/memory/MEMORY.md 常時(先頭200行)

ポイントは .claude/rules/のルールファイルはpathsフィールドの有無でロードタイミングが変わる ことです。

---
# pathsなし → 毎回ロードされる(常時適用)
description: コミット作成時のルール
---
---
# pathsあり → マッチするファイルを操作したときだけロードされる
description: APIClient編集時のルール
paths: Packages/APIClient/**
---

pathsを指定していないルールは内容に関係なく毎セッションのコンテキストを消費し続けます。

よくある肥大化パターン

パターン1: 初期に作ったルールにpathsがない

プロジェクトの初期段階で作成したルールはpathsフィールドを設定していないことが多いです。

Memory files
└ CLAUDE.md: 1.6k tokens
└ .claude/rules/commit.md: 485 tokens      ← コミット時だけでいい
└ .claude/rules/pull-request.md: 444 tokens ← PR作成時だけでいい
└ .claude/rules/branch.md: 160 tokens       ← ブランチ作成時だけでいい
└ .claude/rules/README.md: 905 tokens       ← 人間向けドキュメント

コミットルールはコミット時、PRルールはPR作成時にしか使いません。
それなのに毎セッション1,000トークン以上を消費していました。

パターン2: CLAUDE.mdに情報が蓄積しすぎ

CLAUDE.mdは何でも書けるがゆえに以下のような情報が積み重なりがちです。

  • 他のルールファイルと重複する記述
  • 他のルールファイルと矛盾する記述(片方を更新して片方を忘れる)
  • 参照頻度の低い情報(環境設定の詳細やトラブルシューティングのbashコマンド等)
  • サブエージェントに任せれば済む情報

パターン3: 人間向けドキュメントが常時ロードされている

.claude/rules/ディレクトリは配下の.mdファイルをすべて自動ロードする仕様です。
commands/やskills/のようにREADMEを無視してくれるわけではないため、.claude/rules/README.mdのような人間向けドキュメントもpathsなしで置いてあるとClaudeの動作に貢献しないまま毎回ロードされます。

この挙動についてはREADME.mdを自動ロードから除外するissueを立てています。
(直してくれると嬉しい)

https://github.com/anthropics/claude-code/issues/26478

パターン4: Auto memoryに常時ロード不要な情報が溜まる

auto memoryはClaudeがセッション中に学んだことを自動的に記録する機能です。
MEMORY.mdの先頭200行は毎セッション読み込まれます。
ここにセッション固有の知見や一時的な情報が溜まっていくとそれもコンテキストを消費し続けます。

auto memoryの知見をチームで共有可能なrules/agentsに昇格させる仕組みについては以下の記事で詳しく解説しています。

https://zenn.dev/zaico/articles/9d3ef854f42399

整理の実践

ここからは実際にMemory Filesを3.9k → 1.3k tokensに整理した手順を紹介します。

1. アクション固有のルールをスキル化する

コミット・PR・ブランチのルールは特定のアクション時にのみ必要です。
これらをルールからスキルに変換すると常時ロードされるのはトリガー記述(約10-15 tokens)だけになり、フルコンテンツは必要時にのみロードされます。

Before: .claude/rules/commit.md(485 tokens 常時ロード)

---
description: コミット作成時のルール
---

# Commit Rules
## コミットメッセージフォーマット
...

After: .claude/skills/commit-rules/SKILL.md(~15 tokens 常時 + 残りはオンデマンド)

---
name: commit-rules
description: This skill should be used when the user asks to "commit", "コミット", "git commit", "/smart-commit", or when creating any git commit.
---

# Commit Rules
## Commit Message Format
...

ルールとスキルの使い分けは以下のように考えるとわかりやすいです。

使い分け ルール(pathsあり) スキル
トリガー ファイルパスのパターンマッチ descriptionの自然言語マッチ
向いている用途 特定ファイル種別の規約 アクション固有の手順・ルール
*.swiftのコーディング規約 コミット・PR・ブランチの手順

2. 人間向けドキュメントにpathsを追加する

パターン3で触れた通り.claude/rules/は配下の.mdファイルをすべて自動ロードします。
READMEを置いている場合のワークアラウンドとしてpathsを追加して常時ロードを止めます。

---
description: Claude Code rules directory documentation
paths: .claude/rules/**
---

# Claude Code Rules
...

これだけで905 tokensの削減になりました。

3. CLAUDE.mdの重複・矛盾を解消する

CLAUDE.mdは何でも書ける分、時間が経つと他のファイルとの重複や矛盾が発生しがちです。
以下の観点で定期的に見直します。

重複の削除

同じ情報が複数箇所に書かれていないか確認します。
たとえばサブエージェントの一覧テーブルを書いた直後に「ビルドはXXXを使用、テストはYYYを使用」と同じ内容を繰り返しているようなケースです。

矛盾の解消

CLAUDE.mdとルールファイル(またはスキル)で内容が食い違っていないか確認します。
片方を更新してもう片方を忘れるパターンは意外と起きます。
放置するとClaudeが矛盾する指示の間で揺れてしまい、セッションごとに異なる動作をする原因になります。

サブエージェントへの委譲

トラブルシューティングの手順やビルドコマンドなど、特定のサブエージェントの責務に含まれる情報はCLAUDE.mdから削除してサブエージェントの定義ファイルに書くのが適切です。
CLAUDE.mdには「XXサブエージェントに依頼」とだけ書いておけば十分です。

## トラブルシューティング

- **ビルドエラー**: `build-runner` サブエージェントに依頼
- **テスト失敗**: `/review-test-results` スキルを使用

低頻度情報の削除

環境設定の詳細やビルド構成の一覧など参照頻度の低い情報はCLAUDE.mdに置く必要がありません。
Claudeは必要になればコードベースを直接読みに行けるので常時ロードしておく意味は薄いです。

4. Claude Codeのデフォルト動作と重複するルールを削除する

「独立した操作は並列で実行せよ」というルールを書いていましたが、これはClaude Codeのシステムプロンプトにすでに組み込まれている動作です。
プロジェクト固有でない一般的な指示は削除しても問題ありません。

整理後の結果

変更 手法
CLAUDE.md 重複・矛盾・低頻度セクション削除
commit / PR / branch ルール スキル化(常時ロード → オンデマンド)
rules/README.md paths追加で常時ロード停止
parallel-execution.md デフォルト動作と重複のため削除
Memory files合計 3.9k → 1.3k tokens(-67%)

まとめ

Memory Filesは便利ですが放っておくと古い情報・重複・矛盾が溜まります。
コンテキストを圧迫するだけでなくClaudeの動作の一貫性にも影響します。
たまに /context で内訳を確認してルールの整理をするのがおすすめです。

ZAICO Developers Blog

Discussion