理系学生日記

おまえはいつまで学生気分なのか

Claude Agent SkillsのProgressive Disclosureとコンテキスト、そしてその配布について

AnthropicがAgent Skillという仕組みを発表して話題になってた。

内容を見て思ったのは、これはSubAgentsと何が違うんやろ、ということだった。 あれ、これSubagentsでできることでは? みたいな。その点は未だ本質的にわかってないのだけれど、まぁClaude.aiでもAPI経由で使える。より可搬性のある、標準化された仕組みなのだろうなという理解をするようにした。いつかSubAgentsを食う気もする。

まぁそれはともかく、Progressive Disclosureという設計思想によって、コンテキストウィンドウの制約という長年の課題に対する緩和策を提示しているのは良かった。

Agent Skillsとは何か

僕にとってAgent Skillsは、Claudeに専門的なタスクを実行させるためのモジュラー型パッケージに見えている。各スキルはフォルダ構造で、中心となるSKILL.mdファイル、実行可能なスクリプト、参照資料などを含んでいる。組織固有のブランドガイドライン、メールテンプレート、プロジェクト管理規約といった知識を定義できるだけでなく、スクリプトによってExcel操作やドキュメント生成のような技術的なタスクにも対応できる。

従来のシステムプロンプトやMCPとの最大の違いは、必要な情報だけを段階的に読み込む「Progressive Disclosure」にある。この仕組みにより、Claudeは数十から数百のスキルを同時に認識しながらも、コンテキストウィンドウを圧迫しづらい構成になっている。

SKILL.mdを中心としたパッケージ構造

Agent Skillsの設計において、SKILL.mdは単なる設定ファイル以上の役割を果たす。3層のアーキテクチャの入り口というか、中心的な存在になっている。

YAMLフロントマターによるメタデータ層

SKILL.mdの先頭には、namedescriptionを含むYAMLフロントマターがある。このメタデータ層は、Claudeがセッション開始時にすべてのスキルをスキャンする際に使う。重要なのは、この段階では各スキルあたり約100トークンしか消費しないという点で。100個のスキルが利用可能であっても、わずか10,000トークン程度で全体像を把握できることになる。これはシステムプロンプトに追加される。

---
name: PDF Manipulation
description: Handle PDF operations including text extraction, form filling, and document generation
---

この軽量なメタデータによって、Claudeは膨大な専門知識のインデックスを保持できる。タスクに関連するスキルを特定するまで、詳細な情報を読み込む必要はない。この辺りが"progressive"と呼ばれる所以っぽい。

本文による指示

メタデータの下には、スキルの本文が続く。ここには具体的な指示とワークフローが記述され、通常は5,000トークン以下に抑えろとのこと。この本文は、Claudeがこのスキルを実際に使用すると判断した時点で初めて読み込まれる。

本文の役割は、タスクの大半をカバーできる汎用的な指示を提供すること。同時に、より詳細な情報が必要な場合に備えて、追加リソースへのルーティング層としても機能する。

参照ファイルによる詳細知識

SKILL.mdから参照される追加ファイルが、第3層を構成する。これらは必要に応じてオンデマンドで読み込まれ、より多くの専門知識を参照させることができる。 この場合は a.md をみろ、この場合は b.md を見ろという分岐を本文に記述しておけば、必要な方しか読み込まれない。そういう思想なんだろう。

さらに興味深いのは、実行可能なスクリプトがトークンを消費しないこと。Claudeはスクリプトの内容を読み込むことなく、bashコマンドで実行し、その出力だけを受け取る。決定論的な処理が必要なタスクでは、コードに委譲することでコンテキストを節約できる。

Progressive Disclosureによるコンテキスト効率化

Progressive Disclosureは、情報を段階的に開示するUI/UXデザインの原則。Agent Skillsはこれをコンテキスト管理に使っている感じ。

3段階のロード戦略

Agent Skillsの情報ロードは、明確な3段階を経る。

第1段階では、すべてのスキルのメタデータをスキャンする。この段階で消費されるのは、スキルの総サイズに関わらず、1スキルあたり約100トークン。Claudeは利用可能な全機能のマップを持つにとどまる。

第2段階では、タスクに関連すると判断されたスキルのSKILL.md本文を読み込む。典型的には3,000〜5,000トークンの消費となるが、これで大半のタスクは実行可能になる。

第3段階以降は、必要に応じて参照ファイルをファイルシステム操作で読み込む。

MCPとの比較:なぜコンテキスト汚染を防げるのか

Model Context Protocol (MCP)は、Claudeが外部データソースやツールにアクセスするための仕組み。リアルタイムのデータベースクエリやAPI連携に優れているが、コンテキスト管理の面では別の課題がある。

MCPを利用する際は、提供される全ツールの説明をコンテキストに含める必要がある。実際に使うツールが一部であっても、利用可能な全ツールの説明分のトークンを消費してしまう。ツールの数が増えるほど、使わないツールの説明によるコンテキスト汚染が深刻化する。

対照的に、Agent Skillsはファイルシステムを使える環境で動く。Claudeはファイルシステムアクセスができるので、スキルの内容は保存しておける。どのスキルが存在するかは常に把握しているが、その全内容をコンテキストに持つ必要はない。 さらに、Claudeは複数のスキルを自動的に識別し、それぞれから必要な部分だけをロードして連携させる。各スキルは独立して最適化されており、手動でのコンテキスト配分管理が不要となる。

例えば、データベーススキーマを扱うスキルを考えてみる。Agent Skillsでは、テーブル定義を個別のファイルに分割し、クエリで実際に使うテーブルの定義だけを読み込める。MCPの場合、ツール説明の一部としてスキーマ全体の概要を事前に提供するか、毎回同じスキーマを再取得することになりかねない。 この差はスキルの数が増えるほど大きくなる。従来のアプローチでは、機能追加が線形にコンテキスト消費を増やす。Agent Skillsでは、各スキルが追加するのは約100トークンだけになる。膨大なスキルライブラリを維持してもコンテキストの劣化は小さく抑えられる。

Marketplaceによる組織・チーム生産性の向上

Agent Skillsの真価は、その配布可能性と再利用性にある。同じスキル形式がClaudeアプリ、Claude Code、API、SDKのすべてで動作するため、「一度作成すればどこでも使える」ワークフローが実現できるっちゃできる。

組織知識の資産化

企業や組織は、長年蓄積してきた暗黙知を形式知化し、スキルとしてパッケージ化できる。 組織固有のスキルは、一度作成すれば社内全体で共有できる。新入社員はベテランと同じ専門知識にアクセスし、ベストプラクティスが自然に浸透する。AI時代、我々中堅〜ベテランはノウハウを言語化するマシンと化すわけか。

Marketplaceエコシステムの可能性

そしてさらに、Anthropicはスキルやカスタムスラッシュコマンド等を配布できるPlugin Marketplaceを構想しており、さらに可能性が広がる。 汎用的なスキルはコミュニティで開発・共有したら良いし、専門的なスキルは業界やドメインごとにパッケージ化されていく。要件定義スキルとか、設計スキルとか。

スキルの標準化された形式により、品質管理も容易になる。バージョン管理やテストもしやすいし、更新は組織全体に反映しやすくなる。 属人的だったプロンプトエンジニアリングは、体系的なスキル開発へと変わっていく。

チームでの段階的改善

スキルは最小限から始めて、段階的に成長させられる。コンテキストが足りないなら、参照ファイルを段階的に追加すれば良い。アジャイル的な感じになる。

開発者やドメインエキスパートは、複雑なAPIを学ぶ必要はなくて、人間が読み書きできるMarkdownファイルを編集するだけで、Claudeの能力を拡張できる。プログラマーでなくても、プロダクトオーナーがスキルを作成・更新できる。

Dockerコンテナとの親和性:実行環境の配布

Agent Skillsのアーキテクチャを理解すると、課題も見える。Agent Skillは実行環境と密結合してるじゃん。スクリプトが動く環境、どうやって配布するんだよ。

The skills mechanism is entirely dependent on the model having access to a filesystem, tools to navigate it and the ability to execute commands in that environment.

(略)

This requirement is the biggest difference between skills and other previous attempts at expanding the abilities of LLMs, such as MCP and ChatGPT Plugins. It’s a significant dependency, but it’s somewhat bewildering how much new capability it unlocks.

Claude Skills are awesome, maybe a bigger deal than MCP

Agent Skillsは、Claudeのコード実行環境内でbashコマンドによるファイルシステムアクセスができる前提で動く。スクリプトを実行し、依存ライブラリを呼び出し、外部ツールを利用する。つまり、スキルの動作は実行環境のセットアップに依存する。PDFスキルがpdftotextコマンドを使うなら、そのツールがインストールされている必要がある。データ分析スキルがpandasを使うなら、適切なバージョンのPythonとpandasが必要になる。

これは従来のソフトウェア配布と同じ課題に見えているし。解決策も同じになる可能性が高い。

Dockerによる再現可能な環境

Dockerコンテナは、アプリケーションとその依存関係を一緒にパッケージ化する標準的な方法となっている。Agent Skillsにおいても、スキルとDockerfileを一緒に配布することで、再現可能な実行環境を保証できる。 このようなDockerfileと共にスキルを配布すれば、ユーザーは環境構築に悩むことなく、コンテナを起動するだけで即座にスキルを利用できる。

もちろん課題もあって。Dockerコンテナのサイズ、起動時間、リソース消費や、複数のスキルを使う際のコンテナオーケストレーションも複雑化する。

まとめ

Claude Agent Skillsについて調べてみて、Progressive Disclosureという考え方が面白いなと思った。MCPが全ツールの説明を最初から持たないといけないのに対して、Agent Skillsは必要になったら読み込む方式。100個スキルがあっても、メタデータだけなら1万トークンで済むというのは効率的。

SKILL.mdを中心とした3層構造も良くできていて、メタデータ→本文→参照ファイルと段階的に情報を開示できる。スクリプトはトークンを消費しないので、決定論的な処理はコードに任せられる。

Marketplaceで配布できるようになれば、組織のノウハウをパッケージ化して共有しやすくなる。要件定義スキルとか設計スキルとか、業界ごとの専門知識がスキルとして流通していくんだろう。プロンプトエンジニアリングが属人的だった時代から、体系的なスキル開発へ移行していく感じ。

ただ、実行環境への依存は課題で。スキルがスクリプトやコマンドに依存するなら、DockerfileとセットでMarketplaceに上げる形式が標準になるんじゃないかな。Dev ContainersやCodespacesみたいに、開発環境のコンテナ化の流れとも合致する。

SubAgentsとの違いは正直まだよくわかってないけど、可搬性と標準化という点でAgent Skillsの方が広く使われそうな気はしている。今後のエコシステムの成長が楽しみ。

参考文献