Anthropic、Claude Code のシステムプロンプトを8割削減 — 新しいコンテキストの書き方6カ条
- あなたが CLAUDE.md やスキルに書いた「絶対に〜するな」は、今はむしろ足を引っぱっている可能性があります。Anthropic は Claude Code のシステムプロンプトを8割以上削りましたが、コーディングのベンチマークでは損失は検出されませんでした
- かつてルールを固定したのは、旧世代モデルの判断力が足りなかったからです。一部のケースでは間違うと分かっていても、そうするしかなかった。あの「コメントは書かないのが既定」は、いま一文のガイドに置き換わっています — 書くコードは、周囲のコードのように読めること
- 制約を1本足すのはタダではありません。システムプロンプトが「必要に応じてドキュメントを残せ」、スキルが「コメントを付けるな」、あなたが「前と同じ感じでやって」— この3つが同じリクエストに同時に現れます。Claude はまず矛盾を調停してから動くことになります
- TodoWrite のツール説明は約9100文字から、一文+3値の列挙型+制約1本まで圧縮されました。自分のスキルや CLAUDE.md を軽量化したいなら、セッション内で
/doctorを実行してください
Claude Code のシステムプロンプトを8割削った
Anthropic の技術チームメンバー Thariq Shihipar(@trq212)が X に長文を投稿し、Claude Code で最近やったことを明かしました。Opus 5 と Fable 5 という新世代モデルに向けて、システムプロンプトを8割以上削除した。コーディングのベンチマークでは、損失は検出されなかった。
まず、削られたものが何かをはっきりさせます。あなたが Claude に一言送ると、Claude が読むのはその一言だけではありません。システムプロンプト、入れたスキル、プロジェクト内の CLAUDE.md、Claude 自身が保存した記憶、@ で持ち込んだファイル — 全部がひとかたまりになって送られ、あなたが打った一行はそのうちのごく一部です。この大きなかたまりをどう組み立て、いつ入れるか。Anthropic はそれをコンテキストエンジニアリングと呼んでいます。
プロンプトはあなたが頼んだ一件、コンテキストはあなたが差し出す作業台まるごとです。
プロンプトを書くこととは根本的に違います。プロンプトは一回きりで、自分が今回何を求めているか分かっている。コンテキストは汎用で、中身の分からない何千何万というリクエストに応えなければならないので、具体的には書けません。難しさはここにあります — まだ存在しない問題のために、指針を用意しておく必要があるのです。
かつて固定するしかなかったルールが、いまは削れる
実物のルールを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.
当時、このルールは必要でした。Claude Code が出たばかりの頃、いちばん大事だったのはモデルにやらかさせないこと — たとえばファイルを消させないことです。だからかなり強い指針を出す。その指針が常に正しいわけではないとしても。コメントの件はまさに「常に正しくない」側でした。自分でドキュメントを書く習慣のあるユーザーもいるし、とても複雑なコードには複数行のコメントブロックを付けるべきです。ただ当時のモデルは、こう止めておかないと、書くコメントの大半が間違っていた。一部の人を巻き込むと分かっていても、そう決めるしかなかったのです。
新世代モデルの判断力は足りるようになったので、もう巻き込む必要はありません。同じことが、いまのシステムプロンプトでは一文だけです。
Write code that reads like the surrounding code: match its comment density, naming, and idiom.
コメントをどれだけ書くかを決めていました。決め方が固いほど、当てはまらない場面では外れが大きくなり、しかも逃げ道がありません。
量は決めず、何を参照するかを決めています — 周囲のコードです。参照先はプロジェクトごとに変わるので、ルールを書き直す必要がありません。
当時のガードレールは、最悪のケースを避けるために立てたものです。最悪のケースが起きなくなったら、ガードレールは外し、周囲の文脈とモデル自身の判断に任せるべきです。
互いに矛盾する3つの指示が、同じリクエストに同時に現れる
ルールを削るには、もっと実務的な理由もあります。自社チームが Claude Code を使った会話ログを読んで、1回のリクエストにケンカする文がいくつも同時に出てくると気づいたのです。
Claude はふつう、あなたが本当は何を求めているか当てられます。ただし、この矛盾する数文をまず調停しないと、何をするか決められません。スキルに制約を1本足すのはタダだと思っているかもしれませんが、実際は1本足すたびに、どこか別の場所で別の1本とぶつかる可能性があります。そして調停には手間がかかります。
8割削っても点が落ちなかった理由もここにあります。削られたのは場所を取る文字だけでなく、それらが生み出していた矛盾もだからです。
時代遅れになった6つの旧作法と、その置き換え
Thariq は、長く語り継がれてきたが今は成り立たない作法を6つ挙げ、1本ずつ置き換えを示しました。
1つ目は前で片付きました。残り3つはそれぞれ1節を取るので、まず軽い2つを済ませます。
繰り返し念を押す → シンプルなツール説明
以前の Claude モデルは、同じことを何度か言わないと覚えられないことがありました。しかもコンテキストの末尾の話は耳に入りやすく、冒頭は入りにくかった。だから昔はシステムプロンプトでツールの使い方を一度書き、ツール説明にもう一度書いていました。いまはこの重複を削り、使い方はツール説明にだけ書きます。
記憶は CLAUDE.md に書く → 自動記憶
以前は # のショートカットで、覚えてほしいことを自動的に CLAUDE.md に書き込む使い方でした。いまは Claude 自身が、今回の作業やあなた自身に関する記憶を保存します。手でファイルに詰め込む必要はありません。
サンプルはもういい、ツール自体の設計を明快に
これまでモデルにツールを教えるとき、鉄則の1つ目はサンプルを多く見せることでした。ところが最新世代のモデルでは、サンプルがかえって探索空間を狭く縛ってしまうと分かった。いくつか使い方を挙げると、その周辺だけを回るのです。
サンプルに代わるのはインターフェース設計 — ツール、スクリプト、ファイルそのものを明快に設計することです。鍵はパラメータで、どんな値を取れるかが、それ自体で使い方を語るべきです。
TodoWrite がその例です。status フィールドの値は3つだけ:pending、in_progress、completed。この列挙型があるだけで、モデルに使い方が伝わります — タスクにはこの3状態があり、それ以上でも以下でもない。要件もサンプルは不要で、「同時に in_progress のタスクは1つだけ」の一文で足ります。
この立場は1年前とは変わりました。Anthropic の2025年のコンテキストエンジニアリング記事では、サンプルについて「サンプルの提供、すなわち少数ショットプロンプティングは、我々が一貫して強く推奨する定番のベストプラクティスである」と述べていました。当時反対されていたのは、プロンプトに長いエッジケースの列を積むことだけです。モデルが1世代進んで、サンプル自体が推奨項目から制約項目に変わりました。
全部を冒頭に書く必要はない、使うときに読み込む
Claude Code は初期はコーディング専業だったので、システムプロンプトにコードレビューのやり方や検証のやり方の詳しい説明が詰め込まれていました。大半の場面では使いませんが、本当に必要なときは決定的な情報なので、ずっと場所を取り続けていた。
いまの解き方は、必要なときに出てくるようにすること。コードレビューと検証はそれぞれ独立したスキルに移され、Claude が必要なときに呼びに行きます。この作法を段階的開示(progressive disclosure)と呼びます。必要な部分だけを、そのときに読み込む。
同じやり方はツールにも使われています。Claude Code が今つないでいるツールは以前よりずっと多く、一部は遅延読み込みです。ふだんコンテキストには名前が1つあるだけで、モデルはまず ToolSearch で完全な定義を検索しないと呼び出せません。検索しない間、そのツールが占めるのは名前1行分で、数千文字におよぶ完全な説明は入ってこない。入ってこないからこそ、より多くつなげるのです。
あなた自身の CLAUDE.md やスキルファイルも、こう組み立てるべきです。Thariq はよくある誤解を1つ挙げました — 使いうる作法を全部1つのファイルに積む人が多い、書かないと Claude が見つけられないから、という理由で。正しいやり方は、必要時に読み込めるファイルのツリーに分けることです。
仕様はドキュメントでなくてもいい、コードやテスト一式でもいい
まずここでの「仕様」をはっきりさせます。Claude に書いて渡す「私が欲しいものはこういう形」です。これまでは markdown のドキュメントに書くのが習慣で、プランモードの Claude Code はこの種のファイルにずっと依存してきました。仕様をコードベースに置いて長期プロジェクトの参照にするのも同類です。これらはいまも有効ですが、もう一歩進めます — Claude はいま、はるかに複雑な参照物を扱えます。
計画は markdown に限りません。artifacts 機能で作った HTML ページも、Claude は参照物として使えます。
十分に細かく書かれたテストスイートは、それ自体が仕様です。「正しくできた状態」を文章より正確に定義します。
欲しい挙動を誰かが実装済みなら、そのコードを指してやればいい。別の言語で書かれていても構いません。
「良い API 設計とは何か」を1項目ずつ照合できる基準にすれば、Claude は分身をいくつか出し、その基準で成果物があなたの好みに合うか点検できます。
コード系の参照物がなぜ効くのか。彼は『Fable フィールドガイド』(同じ人が書いた別の記事で、Anthropic が Fable 5 向けに出した公式手引き)でもっと率直に書いています — 描写できないものがある。その語彙を持っていないのかもしれないし、はっきり描写するのに時間がかかりすぎるのかもしれない。そういうときは参照物を渡すのがいちばんで、あらゆる参照物の中で最良はソースコードだ、と。この記事に戻ると、彼が挙げた例はこうです。同じデザインなら、HTML の下書きを渡すほうが、文章の説明やスクリーンショット1枚よりずっと効く。
@ でファイルを持ち込んで参照物にできます……一般にはコードの中のものを優先してください。Claude に対して明快で高忠実度の指示になり、しかも Claude がとても慣れている言語だからです。 — Thariq Shihipar『The new rules of context engineering for Claude 5 generation models』(省略記号の箇所は原文の別段落)
コンテキストは6層でできている、各層に何を置くか
ここまでの数カ条を合わせると、階層ごとの配置指針になります。まず1回のリクエストで Claude が実際に読むものが、どう組み立てられているかを見ます。
この6層のうち、最上段の一言はあなたがその場で打つもの、最下段の記憶は Claude 自身が保存するもので、どちらも並べる必要はありません。ほんとうに手を入れるのは真ん中の4層です。
結びつくのは製品文脈です。Claude に、自分がどの製品の中で何をしているかを伝える。Claude Code を使う人はほぼ触る必要がありません。自分で Agent のフレームワークを組む人には、ここが力を入れるべき層です。
軽量に保ち、このリポジトリが何をするものかを簡単に説明する。トークンは主にこのコードベースの罠に使います。たとえば型定義が全部1ファイルに集まっていて他の場所には一切ない、といった取り決めは書く価値があります。Claude がファイルシステムやリポジトリを一目見れば分かる自明なことは書かない。細かい話が多くなったら段階的開示を使う。たとえば検証作業に独自の要件がいくつもあるなら、検証スキルにして CLAUDE.md から指し示します。
スキルは軽量なガイドとして扱い、Claude が必要なときに情報を見つけられるようにする。固く書きすぎないこと。よほど重要な箇所は別です。長いスキルはできるだけ複数ファイルに分け、段階的開示にする。スキルにいちばん入れるべきは、あなた、あなたのチーム、あなたの製品だけに属する判断・知識・作法です。
システムプロンプトの上に位置し、あなたの一言にいちばん近い。この4層で唯一、毎回その場で差し替えられる層でもあります。今回どれを見て作業させたいか、それを持ち込むだけです。
整理に取りかかるなら、まず健診コマンドを実行
Anthropic はこの一連の作法を1つのコマンドに入れました。あなたのスキルと CLAUDE.md を軽量化するためのものです。使い方について原文はこう書いています — 「これらのベストプラクティスを claude doctor に入れました。Claude Code では /doctor コマンドです」。
この2つの入口は完全に同じではありません。本サイトが Claude Code 2.1.220 で実測したところ、コマンドラインの claude doctor のヘルプには「Claude Code のインストールが健全か確認する。カレントディレクトリの設定ファイルを読み、信頼プロンプトを出さない」とあり、末尾に一文が添えられていました — 問題をその場で直せる完全な健診をするには、セッション内で /doctor を実行してください。ですからスキルと CLAUDE.md を整理してほしいなら、セッションに入ってスラッシュコマンドのほうを使います。
claude doctor --help を一度実行して、いまの言い方を確認してください。この6カ条が成り立つには前提があります。「新世代モデルの判断力が上がった」ことで、原文が挙げているのは Opus 5 と Fable 5 です。あなたのワークフローがより古いモデルや他社のモデルで動いているなら、当時のガードレールが防いでいた問題はまだ残っている可能性があります。真似して削る前に、小さな範囲で試してください。この層は原文では展開されていません。
claude doctor と /doctor の使い方の違いは、本サイトが Claude Code 2.1.220 で実測して補ったもので、原文にはありません。2025年のコンテキストエンジニアリング記事のサンプルに関する記述は、関連リンクの1本目より引用。Anthropic、Claude Code の出荷時マニュアルを8割削除 — モデル自身の判断に委ねる
Claude Code チームの Thariq が語った引き算の中身と、旧作法を置き換えた6つの新しい書き方を、図つきで一枚に
↓ 一枚で読み切り · 動く図が1つあります
Anthropic の Thariq は Claude Code チームの一員です。彼が長文で語ったのは最近やったこと。Opus 5、Fable 5 という新世代モデルに向けて、Claude Code のシステムプロンプト — 出荷時からソフトに書き込まれ、毎回の会話で最初に読まれるマニュアル — を8割以上削り、コーディングのベンチマーク(標準の試験問題一式)では損失が検出されなかった。
削られたのは何か。あなたが打った一行は、モデルに送られるもののごく一部です。システムプロンプト、入れたスキル(用意された操作手引きで、必要なときに開く)、プロジェクト内の CLAUDE.md(コードのフォルダに置き、毎回読まれる説明ファイル)、Claude が保存した記憶、持ち込んだファイル。これがひとかたまりになって、はじめて Claude が実際に読むものになります。このかたまりをどう組み立て、いつ入れるか。Anthropic はそれをコンテキストエンジニアリングと呼んでいます。
Claude Code が出たばかりの頃、最優先はやらかさせないことでした。だからルールはかなり固く書かれた。一部の人が巻き込まれると分かっていても、です。コメントの件がまさにそれ。自分でドキュメントを書く習慣の人もいるし、複雑なコードには本来複数行のコメントを付けるべきですが、当時のモデルは止めておかないと間違ったコメントを大量に書いた。一律にするしかなかったのです。
コードを書くときはコメントを書かないのが既定。複数段落の docstring や複数行のコメントブロックは絶対に書かない、短い1行まで。
書くコードは周囲のコードのように読めること。コメント密度、命名、書き方をそろえる。
新しい一文は、参照先を周囲のコードに委ねました。コメント密度、命名、書き方は隣に合わせる。参照先はプロジェクトごとに変わるので、このルールをプロジェクトごとに書き直す必要はありません。
ルールを削るもっと実務的な理由もあります。自社チームが Claude Code を使った会話ログを見て、1回のリクエストにケンカする文が同時に何本も出ることに気づいたのです。
Thariq は、長く語り継がれてきたが今は成り立たない作法を6つ挙げ、1本ずつ置き換えを示しました。
Claude にルールを書く
例を挙げてやる
思いつく限り冒頭に書く
同じことを何度も言う
覚えることは CLAUDE.md に書く
仕様は1つの文書にする
自分で判断させる
ツール自体の設計を明快に
使う部分だけ読み込む
ツール説明で一度だけ言う
Claude が自動で記憶を保存
コードを参照物として渡す
ここまでを合わせると、配置の指針になります。6層のうち最上段の一言はその場で打つもの、最下段の記憶は Claude が自分で保存するもの。ほんとうに手を入れるのは真ん中です。
取りかかるならまず健診を。Claude Code のセッションで /doctor と入力すると、この一連の基準であなたのスキルと CLAUDE.md の整理案を出してくれます。本サイトは 2.1.220 版で試しました。コマンドラインの claude doctor はインストールの確認だけで、完全な健診はセッション内で実行します。
X で目に入った。
出荷時マニュアルを8割カット
複数行のコメントは絶対禁止
書くコメントの多くが誤り
周囲のコードのように
隣に合わせる
一律にするしかなかった
1回のリクエストへ
ようやく着手
利用ログで発見
ずらりと出た
- × 一目見れば分かる話
- × 同じことを三度言う
- × 実演用法の山
9100文字から一文へ
どこか別の場所で別の1本とぶつかる