なぜ Claude の Skills は指示を忠実に守って実行できるのか
Agent Skills が指示を忠実に守れる最大の理由は Progressive Disclosure(段階的開示) という設計にあります。 全ての指示を最初から文脈に詰め込むのではなく、「いま必要な Skill の本文だけ」をその都度ファイルから読み込むため、 指示が他の情報に薄められず、最新かつ集中した状態でモデルに渡ります。 さらに、ゆらぎを許さない処理は Markdown の指示ではなく バンドルされたスクリプト(コード) に任せることで、 「自然言語で柔軟に従う部分」と「コードで決定的に実行する部分」を分離できる点も忠実さを支えています。
Skill は 3 階層で段階的に読み込まれる
Anthropic の公式ドキュメントによれば、Skill の中身は 3 つのレベルに分かれ、それぞれ異なるタイミングで context に読み込まれます。 これが「必要なものだけを、必要なときに」を実現する仕組みです。
| レベル | 読み込まれるタイミング | トークンコスト | 内容 |
|---|---|---|---|
| Level 1: メタデータ | 常時(起動時) | 1 Skill あたり約 100 トークン | YAML frontmatter の name と description |
| Level 2: 指示本文 | Skill が発動したとき | 5k トークン未満 | SKILL.md 本文の手順・ガイダンス |
| Level 3+: リソース | 必要に応じて | 実質無制限 | バンドルされた追加ファイル(bash 経由で実行、本文は context に載らない) |
起動時には各 Skill の name と description だけが system prompt に載ります。
Claude は「どんな Skill が存在し、いつ使うべきか」だけを知っている状態で、context をほとんど消費しません。
ユーザーの依頼が description と一致したとき、初めて Claude が bash で SKILL.md をファイルから読み込み、本文の指示が context に入ります。
なぜ「段階的」だと指示に忠実になるのか
ポイントは 「指示の濃度」 です。多数の Skill をインストールしていても、起動時に常駐するのは 1 件あたり約 100 トークンの要約だけ。 実際にタスクへ着手した瞬間に、その作業に関係する SKILL.md 本文だけが読み込まれます。 無関係な指示が大量に混ざって肝心の手順が埋もれる、という事態が起きにくく、モデルは「いま守るべきルール」に集中できます。
公式ドキュメントの言葉を借りれば、「progressive disclosure は、どの瞬間にも関連するコンテンツだけが context window を占めることを保証する(Progressive disclosure ensures only relevant content occupies the context window at any given time)」ものです。 指示が常に「新鮮・近距離・低ノイズ」で渡ることが、忠実な実行の土台になっています。
「いつ使うか」を description に書くから的確に発動する
忠実な実行は、そもそも「正しいタイミングで Skill が発動すること」から始まります。
Skill の description には、何をするか(what)だけでなく いつ使うべきか(when) を書くことが推奨されています。
この一文が起動時から常駐し、ユーザーの依頼と照合されるため、関連する場面で確実にトリガーされます。
---
name: pdf-processing
description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction.
---
name は最大 64 文字・英小文字と数字とハイフンのみ、description は最大 1024 文字。
いずれも XML タグを含められず、name には予約語 "anthropic" / "claude" を使えません。
こうした制約が、発動条件をシンプルで誤動作しにくいものに保っています。
ゆらぎを許さない処理はコードに委ねる
自然言語の指示は柔軟ですが、毎回まったく同じ結果になる保証はありません。 Agent Skills はここを割り切り、決定的であるべき処理を バンドルしたスクリプト に任せられます。 Claude はスクリプトを bash で実行し、受け取るのは 出力だけ。スクリプト本体のコードは context に載りません。
公式ドキュメントは「instructions は柔軟なガイダンスに、code は信頼性に、resources は事実の参照に」と各コンテンツの役割を整理しています。 「自然言語で従う部分」と「コードで決定的に実行する部分」を分離することで、フォーマット変換や検証のような厳密さが要る工程の再現性が高まります。
まとめ:忠実さを支える 4 つの要素
- Progressive Disclosure:関連する指示だけをその都度読み込み、ノイズで薄めない
- 低ノイズな常駐情報:起動時は要約のみ。多数の Skill を入れても文脈を圧迫しない
- when を含む description:正しい場面で確実にトリガーされる
- コードへの委譲:決定的に実行すべき処理はスクリプトに任せ、再現性を確保
なお、Skill は新しい指示やコードを Claude に与える強力な仕組みであるがゆえに、
悪意ある Skill は記載された目的と異なる動作を Claude にさせうる、という点も公式に注意喚起されています。
利用は自作または Anthropic 由来の 信頼できるソース に限り、外部 URL を取得する Skill は特に慎重に扱うべきです。
参照(一次情報)