長い Claude Code セッションは、いつも同じ結末を迎えます。何時間もの進捗が失われ、また最初からやり直しです。
その解決策は、より賢いモデルではなく、Claude Code チームが社内で使用しているものの、そのガイドを誰も書いたことがないシステムにあります。
ほとんどの開発者はそれを持っておらず、その存在すら知りません。
ここに完全なシステムを紹介します👇
🧠 本題に入る前に、私は Telegram チャンネルで AI と雰囲気コーディングに関する日々のメモを共有しています:https://t.me/zodchixquant

コンテキストエンジニアリングの本当の意味
Claude は毎セッションで何千行ものコードを読み取ります。そのほとんどはノイズであり、重要な 5% は 2 時間も経てば埋もれてしまいます。
すると Claude は関数をでっち上げたり、あなたが書いたことのないバグを修正し始めます。その修正はより大きなモデルではなく、セッションに入力されるものを制御することです。
以下が、Claude Code チームが自社のモノレポで実際に使用している 6 つのパターンです。

パターン 1: 階層化された CLAUDE.md(ステップ 1-3)
1 つの CLAUDE.md では不十分です。Claude Code チームは 3 つのレイヤーを実行しており、それぞれが異なる関心事にスコープされています。
ステップ 1: プロジェクト全体のルールを持つルート CLAUDE.md
リポジトリのルートに CLAUDE.md を配置します。100 行未満に抑えてください。これは、Claude がすべてのプロンプトで持つ 4 つの質問に答える必要があります。
1# プロジェクト: [名前]23## スタック4- ランタイム: Node 22、TypeScript 5.55- フレームワーク: Next.js 15、React 196- データベース: Postgres 16、Drizzle ORM7- テスト: Vitest、Playwright89## 規約10- インポート: `@/` からの絶対パスのみ11- コンポーネント: ケバブケースのファイル、パスカルケースのエクスポート12- テスト: `[file].test.ts` として同梱13- コミット: conventional commits、co-author フッターなし1415## 触らないでください16- `infra/terraform/`(運用チーム管理)17- `migrations/`(自動生成、手動編集禁止)18- `vendor/`(コミット済み依存関係)1920## デフォルト21- タスク完了宣言の前に `npm test` を実行22- 編集のたびに `tsc --noEmit` で型チェック23- 保存時に Prettier でフォーマット
ステップ 2: モジュール固有のコンテキストを持つサブディレクトリ CLAUDE.md
ルールが変わる任意のフォルダに CLAUDE.md を追加します。Claude はそのフォルダで作業する際、ルートのものに加えて、最も近いものを読み取ります。
例、src/auth/CLAUDE.md:
1# Auth モジュール23このモジュールはセッション管理と OAuth フローを担当します。45## ルール6- トークンをログに記録しない(たとえ切り詰めたものでも)7- すべてのセッション読み取りは `getSession()` を経由し、生のクッキーは使用しない8- 新しいプロバイダーは、マージ前にセキュリティレビューが必要910## 最初に読むべきファイル11- `session.ts`(契約について)12- `providers/index.ts`(レジストリパターンについて)
ステップ 3: ~/.claude/CLAUDE.md にある個人用 CLAUDE.md
これはグローバルな設定レイヤーです。リポジトリの外に存在し、どこにいても適用されます。
1## 私の設定2- 複数ファイルの編集を行う前に、何をしようとしているか説明してください3- 私のリクエストが何かを壊しそうに見えたら、指摘してください4- 継承よりも合成を優先してください5- 私は macOS で zsh を使用しています
3 つのレイヤーが積み重なります:グローバル設定 + プロジェクトルール + モジュールルール。Claude は毎回のプロンプトで、これらをコンテキストに再アップロードすることなく、3 つすべてを読み取ります。
パターン 2: 外科的なファイル参照(ステップ 4-5)
デフォルトの「Claude にどのファイルが重要かを判断させる」方法は、コンテキストを最も遅く、最も愚かに使用する方法です。
ステップ 4:@file オートコンプリートによる参照
プロンプトで @ と入力すると、Claude はあいまいなファイルピッカーを開きます。ファイルを文章で説明する代わりにこれを使用してください。
悪い例:「ユーザー認証コードとセッションヘルパーを見て」
良い例:「
@src/auth /session.ts と
@src/auth /providers/google.ts を見て、トークンリフレッシュを修正して」
外科的な参照は、それらのファイルだけを正確に読み込みます。文章での説明は、Claude に検索を強制し、4〜5 個の候補ファイルを読ませ、半分の確率で間違ったものを選ばせます。
ステップ 5: /focus でワークフロー全体をスコープする
長いタスクの場合は、Claude のセッション全体を特定のフォルダにスコープします:
1/focus src/auth src/api/auth-routes
これにより、すべての検索、grep、読み取りがこれら 2 つのフォルダ内でのみ実行されるようになります。
集中的なタスクではコンテキスト使用量が 60〜80% 削減され、Claude は不要なコンテキストのために無関係なファイルを「親切に」読み取らなくなります。
リセットするには /focus clear を実行します。
パターン 3: コンパクト化と継続(ステップ 6-8)
長いセッションはコンテキスト制限に達し、クラッシュします。秘訣は長いセッションを避けることではなく、制御されたコンパクト化を通じてセッションを実行することです。
ステップ 6: /stats でコンテキスト使用量を監視する
定期的に /stats を実行します。
コンテキスト使用量が 70% を超えると、危険ゾーンに入っています。85% を超えると、Claude は警告なく初期のメッセージをドロップし始めます。
ステップ 7: 保存指示付きの /compact
/compact 単独では会話を要約します。指示を付けると、何をそのまま保存するかを Claude に伝えます:
1/compact preserve: 現在のタスク計画、auth リファクタリングに関するすべての決定、ステップ 3 の失敗したテスト出力
ステップ 8: 数日にわたるセッションのための /resume
タスクが数日にわたる場合は、各セッションを /compact preserve: ... で終了し、次のセッションを以下で開始します:
1claude --resume [session-id]
または、最新のセッションの場合は単に claude --continue を使用します。コンパクト化された状態をそのまま維持して、中断したところから正確に再開できます。
パターン 4: 計画優先の読み取り(ステップ 9-10)
最大のコンテキストリークは、Claude がファイルを理解する前に編集してしまうことです。計画モードは、先に読み取り、後で書き込むことを強制します。
ステップ 9: リスクのあるすべてのタスクで計画モードを切り替える
複数のファイルに影響するタスクの前に Shift+Tab を押して計画モードに切り替えます。
計画モードでは、Claude は読み取りのみ可能です。何をしようとしているかを説明し、影響を与える予定のすべてのファイルをリストし、提案された変更を示します。あなたが承認するまで何も実行されません。
節約効果は確かです:1 回の読み取り、1 回の編集で済むのに対し、従来は 8 回読んで、3 回間違えて編集し、元に戻し、再読して、また編集する、という手間が省けます。
ステップ 10: フックを使用して機密パスに計画モードをロックする
リスクの高い領域では計画モードを必須にします。.claude/settings.json で:
1{2 "hooks": {3 "PreToolUse": [4 {5 "matcher": "Edit(src/auth/**)|Edit(migrations/**)",6 "hooks": [7 {8 "type": "command",9 "command": "claude-require-plan-mode"10 }11 ]12 }13 ]14 }15}
src/auth/*\ または migrations/\\ * での編集試行は、計画モード要件をトリガーします。Claude はこれを回避できません。
パターン 5: サブエージェントによるコンテキストの分離(ステップ 11-13)
サブエージェントは、メインのコンテキストを小さく保つための最もクリーンな方法です。各サブエージェントは独自のウィンドウで実行されるため、親セッションはノイズを見ることがありません。
ステップ 11: 最小限のツールサーフェスでサブエージェントを設計する
ジョブに必要なものだけにツールを制限します。
コードレビュアー に Write や Edit は必要ありません。
ドキュメント更新者 に Bash は必要ありません。サーフェスが小さいほど、無関係なドキュメントやツールの説明に消費されるコンテキストが少なくなります。
1---2name: code-reviewer3description: バグやセキュリティ問題についてコード変更をレビューします4tools: Read, Grep, Glob5model: sonnet6---
ステップ 12: エージェントが必要とするファイル参照のみを渡す
「最近の変更をレビューして」とは言わないでください。「[@src/auth](https://x.com/@src/auth)/session.ts と [@src/auth](https://x.com/@src/auth)/providers/google.ts** をレビューして」と伝えてください。
サブエージェントは、それらのファイルのみを読み取り、「最近」の意味を推測することはありません。
ステップ 13: サブエージェントにはより安価なモデルを使用する
タスクに基づいてエージェントごとにモデルを設定します。
レビューとテストタスクには Sonnet、ドキュメント更新とリントには Haiku、深い推論が必要なアーキテクチャやセキュリティ監査には Opus のみを使用します。
必要に応じてグローバルに設定:
1export CLAUDE_CODE_SUBAGENT_MODEL="claude-sonnet-4-6"
より安価なサブエージェント = 1 ドルあたりのサブエージェント呼び出し増加 = より多くの分離 = より小さなメインコンテキスト。
30 分でできるコンテキストエンジニアリング入門
10 分: スタック、規約、触ってはいけないリスト、デフォルトを含む、簡潔なルート CLAUDE.md を書きます。
5 分: 最も頻繁に編集する 2〜3 のモジュールにサブディレクトリ CLAUDE.md を追加します。
5 分: ~/.claude/CLAUDE.md にあなたの設定を含む個人用 CLAUDE.md を配置します。
5 分: 最も頻繁に行うワークフロー用に .claude/skills/ に 1 つのスキルを構築します。
5 分: Shift+Tab の操作を体に覚えさせ、複数ファイルのタスクはすべて計画モードで開始します。
これで完了です!
次のセッションでは、同じ作業量に対してコンテキスト使用量が 50〜70% 削減されます。セッション 5 までにはこれらのパターンが反射となり、制限に達することはなくなります。
コンテキストは Claude があなたのために管理するものではありません。それはあなたがエンジニアリングするものです。
これでシステムを手に入れました。
お読みいただきありがとうございます!
私は Telegram チャンネルで AI、金融、雰囲気コーディングに関する日々のメモを共有しています:https://t.me/zodchixquant






