Anthropic、Claude Code のシステムプロンプトを8割削減 — 新しいコンテキストの書き方6カ条

ルールを判断に、サンプルをインターフェースに。あるツールの説明は約9100文字から、一文+列挙型ひとつまで圧縮された
著者:Thariq / Anthropic07-25 · 10 分で読了⚑ チュートリアル
🎧 ポッドキャスト版0:00 / --:--
0:00 / --:--
ツール解説 · 小互解読
1分でわかる
  • あなたが CLAUDE.md やスキルに書いた「絶対に〜するな」は、今はむしろ足を引っぱっている可能性があります。Anthropic は Claude Code のシステムプロンプトを8割以上削りましたが、コーディングのベンチマークでは損失は検出されませんでした
  • かつてルールを固定したのは、旧世代モデルの判断力が足りなかったからです。一部のケースでは間違うと分かっていても、そうするしかなかった。あの「コメントは書かないのが既定」は、いま一文のガイドに置き換わっています — 書くコードは、周囲のコードのように読めること
  • 制約を1本足すのはタダではありません。システムプロンプトが「必要に応じてドキュメントを残せ」、スキルが「コメントを付けるな」、あなたが「前と同じ感じでやって」— この3つが同じリクエストに同時に現れます。Claude はまず矛盾を調停してから動くことになります
  • TodoWrite のツール説明は約9100文字から、一文+3値の列挙型+制約1本まで圧縮されました。自分のスキルや CLAUDE.md を軽量化したいなら、セッション内で /doctor を実行してください
⚑ 素材は Anthropic の Thariq が自社プロダクトの改修過程を語ったものです。「8割以上を削除」「コーディングのベンチマークで測定可能な損失なし」は同社自身の言い方で、原文には文字数換算かトークン換算かの明示はなく、どのベンチマークかも挙げられていません。本文中の指示衝突の図は、Anthropic 自身が例示だと注記しており、実際のプロンプトの原文ではありません。
1 直感に反する数字

Claude Code のシステムプロンプトを8割削った

Anthropic の技術チームメンバー Thariq Shihipar(@trq212)が X に長文を投稿し、Claude Code で最近やったことを明かしました。Opus 5 と Fable 5 という新世代モデルに向けて、システムプロンプトを8割以上削除した。コーディングのベンチマークでは、損失は検出されなかった。

Claude Code のシステムプロンプト
削られた部分:固定された禁止事項、繰り返しの念押し、使わないときも場所を取る手順説明(本サイトが本文の6カ条から整理)
残った
削減比率は原文の「over 80%」に沿った図示です。文字数換算かトークン換算かは Anthropic は公開していません。

まず、削られたものが何かをはっきりさせます。あなたが Claude に一言送ると、Claude が読むのはその一言だけではありません。システムプロンプト、入れたスキル、プロジェクト内の CLAUDE.md、Claude 自身が保存した記憶、@ で持ち込んだファイル — 全部がひとかたまりになって送られ、あなたが打った一行はそのうちのごく一部です。この大きなかたまりをどう組み立て、いつ入れるか。Anthropic はそれをコンテキストエンジニアリングと呼んでいます。

プロンプトはあなたが頼んだ一件、コンテキストはあなたが差し出す作業台まるごとです。

プロンプトを書くこととは根本的に違います。プロンプトは一回きりで、自分が今回何を求めているか分かっている。コンテキストは汎用で、中身の分からない何千何万というリクエストに応えなければならないので、具体的には書けません。難しさはここにあります — まだ存在しない問題のために、指針を用意しておく必要があるのです。

2 ルール → 判断

かつて固定するしかなかったルールが、いまは削れる

実物のルールを1本見てみます。Claude Code 初期のシステムプロンプトでは、コメントについてこう書かれていました。

旧 · システムプロンプト原文
In code: default to writing no comments. Never write multi-paragraph docstrings or multi-line comment blocks — one short line max. Don't create planning, decision, or analysis documents unless the user asks for them — work from conversation context, not intermediate files.
コードを書くときはコメントを書かないのが既定。複数段落の docstring や複数行のコメントブロックは絶対に書かない、短い1行まで。ユーザーが求めない限り、計画・決定・分析のドキュメントは作らない。会話のコンテキストから作業し、中間ファイルを作らない。

当時、このルールは必要でした。Claude Code が出たばかりの頃、いちばん大事だったのはモデルにやらかさせないこと — たとえばファイルを消させないことです。だからかなり強い指針を出す。その指針が常に正しいわけではないとしても。コメントの件はまさに「常に正しくない」側でした。自分でドキュメントを書く習慣のあるユーザーもいるし、とても複雑なコードには複数行のコメントブロックを付けるべきです。ただ当時のモデルは、こう止めておかないと、書くコメントの大半が間違っていた。一部の人を巻き込むと分かっていても、そう決めるしかなかったのです。

新世代モデルの判断力は足りるようになったので、もう巻き込む必要はありません。同じことが、いまのシステムプロンプトでは一文だけです。

新 · システムプロンプト原文
Write code that reads like the surrounding code: match its comment density, naming, and idiom.
書くコードは周囲のコードのように読めること。コメント密度、命名、書き方をそろえる。
旧:禁止事項1本

コメントをどれだけ書くかを決めていました。決め方が固いほど、当てはまらない場面では外れが大きくなり、しかも逃げ道がありません。

新:判断基準1本

量は決めず、何を参照するかを決めています — 周囲のコードです。参照先はプロジェクトごとに変わるので、ルールを書き直す必要がありません。

当時のガードレールは、最悪のケースを避けるために立てたものです。最悪のケースが起きなくなったら、ガードレールは外し、周囲の文脈とモデル自身の判断に任せるべきです。

関連記事
Anthropic 社内対談:Harness という外殻の手順は、いま解体されつつある
3 衝突のコスト

互いに矛盾する3つの指示が、同じリクエストに同時に現れる

ルールを削るには、もっと実務的な理由もあります。自社チームが Claude Code を使った会話ログを読んで、1回のリクエストにケンカする文がいくつも同時に出てくると気づいたのです。

1回のリクエストに現れた3つの矛盾する指示:システムプロンプトは必要に応じてドキュメントを残せ、スキルはコメントを付けるな、ユーザーは前と同じ感じでやって
3つの文が同じコンテキストに詰められて送られます。この3つは Anthropic が作った例示で、実際の原文ではありません。画像出典:Thariq / X

Claude はふつう、あなたが本当は何を求めているか当てられます。ただし、この矛盾する数文をまず調停しないと、何をするか決められません。スキルに制約を1本足すのはタダだと思っているかもしれませんが、実際は1本足すたびに、どこか別の場所で別の1本とぶつかる可能性があります。そして調停には手間がかかります。

8割削っても点が落ちなかった理由もここにあります。削られたのは場所を取る文字だけでなく、それらが生み出していた矛盾もだからです。

4 6カ条の対照

時代遅れになった6つの旧作法と、その置き換え

Thariq は、長く語り継がれてきたが今は成り立たない作法を6つ挙げ、1本ずつ置き換えを示しました。

Give Claude RulesClaude にルールを与える
→
Give Claude JudgementClaude 自身に判断させる
Give Claude ExamplesClaude にサンプルを与える
→
Design Interfacesインターフェースを設計する
Put it all upfrontすべて冒頭に書く
→
Use Progressive Disclosure段階的開示
Repeat Yourself繰り返し念を押す
→
Simple Tool Descriptionsシンプルなツール説明
Memory in Claude.MDs記憶は CLAUDE.md に書く
→
Auto-memory自動記憶
Simple Specsシンプルな仕様書
→
Rich References豊かな参照物
左の取り消し線が旧作法、右がいまの作法。英語は原文の表現。出典:Thariq / X

1つ目は前で片付きました。残り3つはそれぞれ1節を取るので、まず軽い2つを済ませます。

繰り返し念を押す → シンプルなツール説明

以前の Claude モデルは、同じことを何度か言わないと覚えられないことがありました。しかもコンテキストの末尾の話は耳に入りやすく、冒頭は入りにくかった。だから昔はシステムプロンプトでツールの使い方を一度書き、ツール説明にもう一度書いていました。いまはこの重複を削り、使い方はツール説明にだけ書きます。

記憶は CLAUDE.md に書く → 自動記憶

以前は # のショートカットで、覚えてほしいことを自動的に CLAUDE.md に書き込む使い方でした。いまは Claude 自身が、今回の作業やあなた自身に関する記憶を保存します。手でファイルに詰め込む必要はありません。

5 サンプル → インターフェース

サンプルはもういい、ツール自体の設計を明快に

これまでモデルにツールを教えるとき、鉄則の1つ目はサンプルを多く見せることでした。ところが最新世代のモデルでは、サンプルがかえって探索空間を狭く縛ってしまうと分かった。いくつか使い方を挙げると、その周辺だけを回るのです。

TodoWrite のツール説明は改修前が約9100文字、改修後は一文+状態の列挙型+制約1本だけ
同じ TodoWrite ツールの説明で、左が改修前、右が改修後。右の文末は省略記号で、いまの説明には続きがあり、図は冒頭だけを示しています。画像出典:Thariq / X

サンプルに代わるのはインターフェース設計 — ツール、スクリプト、ファイルそのものを明快に設計することです。鍵はパラメータで、どんな値を取れるかが、それ自体で使い方を語るべきです。

TodoWrite がその例です。status フィールドの値は3つだけ:pending、in_progress、completed。この列挙型があるだけで、モデルに使い方が伝わります — タスクにはこの3状態があり、それ以上でも以下でもない。要件もサンプルは不要で、「同時に in_progress のタスクは1つだけ」の一文で足ります。

≈9,100
改修前の文字数。いつ使うかの一覧と実演ケースが入っていた
3値
改修後は status の列挙型で使い方を伝え、「同時に1つだけ進行中」を1本添える

この立場は1年前とは変わりました。Anthropic の2025年のコンテキストエンジニアリング記事では、サンプルについて「サンプルの提供、すなわち少数ショットプロンプティングは、我々が一貫して強く推奨する定番のベストプラクティスである」と述べていました。当時反対されていたのは、プロンプトに長いエッジケースの列を積むことだけです。モデルが1世代進んで、サンプル自体が推奨項目から制約項目に変わりました。

6 すべて冒頭 → 段階的開示

全部を冒頭に書く必要はない、使うときに読み込む

Claude Code は初期はコーディング専業だったので、システムプロンプトにコードレビューのやり方や検証のやり方の詳しい説明が詰め込まれていました。大半の場面では使いませんが、本当に必要なときは決定的な情報なので、ずっと場所を取り続けていた。

いまの解き方は、必要なときに出てくるようにすること。コードレビューと検証はそれぞれ独立したスキルに移され、Claude が必要なときに呼びに行きます。この作法を段階的開示(progressive disclosure)と呼びます。必要な部分だけを、そのときに読み込む。

すべて冒頭
システムプロンプト
コードレビューの全手順
検証の全手順
全ツールの完全な定義
使いうる全ての作法
使わないときも場所を取り、別の場所の記述とぶつかりやすい
必要時に読み込み
システムプロンプト(製品文脈のみ)
コードレビュースキル · 未呼出
検証スキル · 未呼出
遅延読み込みのツール · 名前のみ
今回ほんとうに使う部分
点線枠は名前1行だけ、完全な定義は使うときに入る

同じやり方はツールにも使われています。Claude Code が今つないでいるツールは以前よりずっと多く、一部は遅延読み込みです。ふだんコンテキストには名前が1つあるだけで、モデルはまず ToolSearch で完全な定義を検索しないと呼び出せません。検索しない間、そのツールが占めるのは名前1行分で、数千文字におよぶ完全な説明は入ってこない。入ってこないからこそ、より多くつなげるのです。

開始時のコンテキスト Bash · Read · Edit 常駐 TaskCreate 名前のみ Monitor 名前のみ WebFetch 名前のみ ToolSearch("task") 検索した後 Bash · Read · Edit 常駐 TaskCreate 完全な定義 Monitor 名前のみ WebFetch 名前のみ 点線枠のツールは名前1行だけ、完全な定義はコンテキストに入らない。使うものだけが展開される 開始時のコンテキスト Bash · Read · Edit 常駐 TaskCreate 名前のみ Monitor 名前のみ WebFetch 名前のみ ToolSearch("task") 検索した後 Bash · Read · Edit 常駐 TaskCreate 完全な定義 Monitor 名前のみ WebFetch 名前のみ 点線枠は名前1行だけ、完全な定義は入らない
遅延読み込みのツールがコンテキストに入る仕組み(本サイト作図。ツール名は Claude Code の現行の遅延読み込みツールから)

あなた自身の CLAUDE.md やスキルファイルも、こう組み立てるべきです。Thariq はよくある誤解を1つ挙げました — 使いうる作法を全部1つのファイルに積む人が多い、書かないと Claude が見つけられないから、という理由で。正しいやり方は、必要時に読み込めるファイルのツリーに分けることです。

7 仕様 → 参照物

仕様はドキュメントでなくてもいい、コードやテスト一式でもいい

まずここでの「仕様」をはっきりさせます。Claude に書いて渡す「私が欲しいものはこういう形」です。これまでは markdown のドキュメントに書くのが習慣で、プランモードの Claude Code はこの種のファイルにずっと依存してきました。仕様をコードベースに置いて長期プロジェクトの参照にするのも同類です。これらはいまも有効ですが、もう一歩進めます — Claude はいま、はるかに複雑な参照物を扱えます。

HTML artifact

計画は markdown に限りません。artifacts 機能で作った HTML ページも、Claude は参照物として使えます。

テスト一式

十分に細かく書かれたテストスイートは、それ自体が仕様です。「正しくできた状態」を文章より正確に定義します。

別のコードベースの1つの関数

欲しい挙動を誰かが実装済みなら、そのコードを指してやればいい。別の言語で書かれていても構いません。

評価基準(rubric)

「良い API 設計とは何か」を1項目ずつ照合できる基準にすれば、Claude は分身をいくつか出し、その基準で成果物があなたの好みに合うか点検できます。

コード系の参照物がなぜ効くのか。彼は『Fable フィールドガイド』(同じ人が書いた別の記事で、Anthropic が Fable 5 向けに出した公式手引き)でもっと率直に書いています — 描写できないものがある。その語彙を持っていないのかもしれないし、はっきり描写するのに時間がかかりすぎるのかもしれない。そういうときは参照物を渡すのがいちばんで、あらゆる参照物の中で最良はソースコードだ、と。この記事に戻ると、彼が挙げた例はこうです。同じデザインなら、HTML の下書きを渡すほうが、文章の説明やスクリーンショット1枚よりずっと効く。

@ でファイルを持ち込んで参照物にできます……一般にはコードの中のものを優先してください。Claude に対して明快で高忠実度の指示になり、しかも Claude がとても慣れている言語だからです。 — Thariq Shihipar『The new rules of context engineering for Claude 5 generation models』(省略記号の箇所は原文の別段落)
8 階層

コンテキストは6層でできている、各層に何を置くか

ここまでの数カ条を合わせると、階層ごとの配置指針になります。まず1回のリクエストで Claude が実際に読むものが、どう組み立てられているかを見ます。

コンテキストを構成する6層:あなたのプロンプト、参照物、システムプロンプト、CLAUDE.md、スキル、記憶
あなたが打った一言が最上段、その下は順に参照物(@ で持ち込んだファイル、仕様、デザイン案、コードベース、artifacts)、システムプロンプト、CLAUDE.md、スキル、記憶。画像出典:Thariq / X

この6層のうち、最上段の一言はあなたがその場で打つもの、最下段の記憶は Claude 自身が保存するもので、どちらも並べる必要はありません。ほんとうに手を入れるのは真ん中の4層です。

システムプロンプト

結びつくのは製品文脈です。Claude に、自分がどの製品の中で何をしているかを伝える。Claude Code を使う人はほぼ触る必要がありません。自分で Agent のフレームワークを組む人には、ここが力を入れるべき層です。

CLAUDE.md

軽量に保ち、このリポジトリが何をするものかを簡単に説明する。トークンは主にこのコードベースの罠に使います。たとえば型定義が全部1ファイルに集まっていて他の場所には一切ない、といった取り決めは書く価値があります。Claude がファイルシステムやリポジトリを一目見れば分かる自明なことは書かない。細かい話が多くなったら段階的開示を使う。たとえば検証作業に独自の要件がいくつもあるなら、検証スキルにして CLAUDE.md から指し示します。

スキル

スキルは軽量なガイドとして扱い、Claude が必要なときに情報を見つけられるようにする。固く書きすぎないこと。よほど重要な箇所は別です。長いスキルはできるだけ複数ファイルに分け、段階的開示にする。スキルにいちばん入れるべきは、あなた、あなたのチーム、あなたの製品だけに属する判断・知識・作法です。

参照物

システムプロンプトの上に位置し、あなたの一言にいちばん近い。この4層で唯一、毎回その場で差し替えられる層でもあります。今回どれを見て作業させたいか、それを持ち込むだけです。

関連記事
Claude Skill を入れたのに発動しない? まずこの2カ所を直す
9 実践

整理に取りかかるなら、まず健診コマンドを実行

Anthropic はこの一連の作法を1つのコマンドに入れました。あなたのスキルと CLAUDE.md を軽量化するためのものです。使い方について原文はこう書いています — 「これらのベストプラクティスを claude doctor に入れました。Claude Code では /doctor コマンドです」。

この2つの入口は完全に同じではありません。本サイトが Claude Code 2.1.220 で実測したところ、コマンドラインの claude doctor のヘルプには「Claude Code のインストールが健全か確認する。カレントディレクトリの設定ファイルを読み、信頼プロンプトを出さない」とあり、末尾に一文が添えられていました — 問題をその場で直せる完全な健診をするには、セッション内で /doctor を実行してください。ですからスキルと CLAUDE.md を整理してほしいなら、セッションに入ってスラッシュコマンドのほうを使います。

Claude Code はバージョンの動きが速く、手元の版では挙動が違う可能性があります。claude doctor --help を一度実行して、いまの言い方を確認してください。

この6カ条が成り立つには前提があります。「新世代モデルの判断力が上がった」ことで、原文が挙げているのは Opus 5 と Fable 5 です。あなたのワークフローがより古いモデルや他社のモデルで動いているなら、当時のガードレールが防いでいた問題はまだ残っている可能性があります。真似して削る前に、小さな範囲で試してください。この層は原文では展開されていません。

✅ 自分のコンテキストに引き算をする
本文からそのまま持っていける材料:新旧2つのシステムプロンプト原文、6つの旧作法と置き換えの対照、4層それぞれに何を置くかの配置リスト。
出典
The new rules of context engineering for Claude 5 generation modelsThariq Shihipar(Anthropic 技術チームメンバー)·X 原投稿·Anthropic 公式ブログ同日版·2026-07-24
本サイト注記
本文中の画像は原文より、作者自作。6カ条対照表の英語は原文の同じ図から取り、訳とレイアウトは本サイトで作り直しました。「すべて冒頭 vs 必要時に読み込み」の2欄図、遅延読み込みツールの仕組み図は本サイト作図。トップの「削減バー」で削られた内容の分類は、本サイトが本文の6カ条から整理したもので、原文が示しているのは80%という比率だけです。claude doctor と /doctor の使い方の違いは、本サイトが Claude Code 2.1.220 で実測して補ったもので、原文にはありません。2025年のコンテキストエンジニアリング記事のサンプルに関する記述は、関連リンクの1本目より引用。
↑ 本文ここまで
✓ この記事は全文無料です

メンバーは全文 Markdown のコピー・保存に加え、自分の AI に購読・質問させることができます。

原文を読む ↗
📮 新着解説をメールでいち早く

役に立ちましたか?メールを登録すると、新着解説を公開と同時にお届けします。解除はいつでも。