Anthropic によるこの記事は、Claude Code への指示をどこに置くべきかを整理したものである。Claude の振る舞いに指示を与える方法として 7 つ — CLAUDE.md ファイル、ルール、スキル、サブエージェント、フック、出力スタイル、システムプロンプトへの追記 — を挙げ、3 つの軸で比較する。すなわち、指示がいつコンテキストに読み込まれるか、長いセッションを通じて持続するか(コンパクション のもとでの振る舞い)、そしてどれだけの権威を持つかである。記事の枠組みでは、各方法はコンテキストのコストと権威とをトレードオフするものであり、モデルと effort レベルの選択はそれとは別のダイヤルとして、Claude がどれだけ有能か、どれだけ懸命に取り組むかを制御する。

記事の大部分は方法ごとの説明と、それに続く判断の枠組みで構成されており、後者は指示が置き場所を間違えていることを示すアンチパターンの一覧という形で書かれている。最も鋭い議論は強制に関するものである。毎回必ず起きなければならない振る舞い、あるいは決して起きてはならない振る舞いは、そもそもプロンプトによる指示として書くべきではない。モデルはそうした指示に従い損ねることがあるからだ。

要点

  • CLAUDE.md はセッション開始時に読み込まれ、セッション全体を通じて残る。ルートのファイルはコンパクション後に再読み込みされるが、サブディレクトリにある CLAUDE.md はそのディレクトリ配下のファイルを Claude が読んだときにだけ読み込まれ、コンパクション後はそのディレクトリに再び触れるまで失われる。記事は 200 行未満に保つこと、オーナーを決めること、変更をコードと同じようにレビューすることを推奨している。
  • 共有リポジトリでは、CLAUDE.md はオーナー不在の設定ファイルと同じように肥大化していき、その 1 行 1 行がすべてのエンジニアのすべてのセッションでトークンを消費する。記事によれば、これは本当に重要な指示への遵守も薄めてしまう。
  • ルール は .claude/rules/ に置く Markdown ファイルである。スコープを持たないルールは CLAUDE.md と同様に振る舞い、セッション開始時に常に読み込まれ、コンパクション時に再注入される。paths フィールドで宣言するパス限定のルールは、一致するファイルを Claude が読んだときにだけ読み込まれる。記事はこれを、サブディレクトリの CLAUDE.md と同様に、コンパクション後は一致するパスに再び触れるまで失われるものとして説明している。
  • スキル は .claude/skills/ に置かれる。セッション開始時に読み込まれるのは各スキルの名前と説明だけで、本文全体はスラッシュコマンドで呼び出されたとき、またはタスクに一致したときに読み込まれる。コンパクション時には、呼び出し済みのスキルが共有の予算の範囲内で再注入され、古いものから順に落とされる(Agent Skills を参照)。
  • サブエージェント は .claude/agents/ に置く Markdown ファイルである。本文はサブエージェントのシステムプロンプトとなり、親の会話に入ることはない。サブエージェントは新しいコンテキストウィンドウで実行され、戻ってくるのは最終メッセージとメタデータだけである。記事は、サブエージェントは最大 5 階層まで入れ子にできると述べている(サブエージェントアーキテクチャ を参照)。
  • この 2 つの使い分けについての記事の経験則は、脇道のタスクが中間結果でメインの会話を散らかしそうならサブエージェントを、手順をメインスレッドで展開させて自分で見て舵取りしたいならスキルを使う、というものである。
  • フック は、ライフサイクルイベントで発火するコマンド、HTTP エンドポイント、または LLM プロンプトである。コンテキストに読み込まれる指示ではなくハーネスが実行するコードであるため、コンパクションの影響を受けず、コンテキストもほとんど消費しない(エージェントフック を参照)。
  • 出力スタイル はシステムプロンプトに注入され、取り上げられた方法の中で最も高い指示追従の重みを持つ。カスタムスタイルはデフォルトのスタイルを置き換える — 記事は、これによって Claude Code のデフォルトのソフトウェアエンジニアリング向け指示が取り除かれると警告している — が、スタイルのフロントマターで keep-coding-instructions: true を設定した場合はその限りではない。
  • フラグによる システムプロンプトへの追記 は追加的に働き、その呼び出しにだけ適用される。記事は、指示を増やすほど遵守への効果は逓減すると指摘している。
  • 「X のときは毎回必ず Y をする」はフックに置くべきである。モデルがフォーマッターを実行すると選ぶことと、フォーマッターが自動的に実行されることは別物だからである。
  • 「これは絶対にしない」は指示に担わせるべき仕事ではない。プレッシャーのもとで、長いセッションの中で、曖昧な状況で、あるいは読み込んだファイルに含まれるプロンプトインジェクションによって、モデルはプロンプトで与えられたルールに従い損ねることがある。記事は決定論的な強制手段としてフックとパーミッションを挙げ、組織全体にわたる決定論的なガードレールを強制する唯一の方法として managed settings を挙げている。
  • 手順はスキルに、事実は CLAUDE.md に置くべきである。1 つのパスにだけ適用されるルールは paths: でスコープを限定すべきであり、個人的な好みはプロジェクトの CLAUDE.md ではなくユーザーレベルのファイルに置くべきである。

背景

この記事は Anthropic が自社製品について示したガイダンスである。200 行という目安はヒントとして、5 階層という入れ子の上限は製品の仕様として示されており、いずれについても測定結果は示されていない。記事の締めくくりでは、スキル、サブエージェント、フック、出力スタイルを 1 つのセットアップにまとめ、チームメイトやプロジェクト間で共有する手段としてプラグインが紹介されている。