SKILL.md の読み込み、関連リソースの取り扱い、そして会話中のコンテキスト維持までです。
実装の中核は共通ですが、詳細は次の 2 点で変わります。
- スキルをどこに置くか: ローカル実行型ならユーザーのファイルシステムを走査できます。クラウド実行やサンドボックス実行では、API、リモートレジストリ、同梱アセットなど別経路が必要です。
- モデルがスキル内容へどうアクセスするか: モデルにファイル読取能力があるなら
SKILL.mdを直接読ませられます。なければ専用ツールか、プロンプトへの注入で提供します。
Agent Skills 仕様 を把握していること。SKILL.md の形式、frontmatter、ディレクトリ規約はその仕様で定義されています。
基本原則: progressive disclosure
スキル対応エージェントは、通常次の 3 層で情報を読み込みます。| 層 | 読み込む内容 | タイミング | トークンコスト |
|---|---|---|---|
| 1. カタログ | name + description | セッション開始時 | スキルごとに約 50-100 |
| 2. 手順 | SKILL.md 本文 | スキル有効化時 | 5000 未満推奨 |
| 3. リソース | scripts / references / assets | 本文から必要になった時 | 可変 |
Step 1: スキルを検出する
ローカル実行型では、少なくとも次の 2 スコープを考えるのが一般的です。- プロジェクト単位: 作業ディレクトリ配下のスキル
- ユーザー単位: ホームディレクトリ配下の共通スキル
.agents/skills/ の両方を検討します。
| Scope | Path | Purpose |
|---|---|---|
| Project | <project>/.<your-client>/skills/ | クライアント固有の格納先 |
| Project | <project>/.agents/skills/ | クライアント間で共有しやすい格納先 |
| User | ~/.<your-client>/skills/ | クライアント固有の格納先 |
| User | ~/.agents/skills/ | クライアント間で共有しやすい格納先 |
.agents/skills/ はクロスクライアント互換の事実上の慣習です。
スキルとして見つけるべきなのは、SKILL.md を含むサブディレクトリです。
.git/やnode_modules/は除外- 必要なら
.gitignoreを考慮 - 深さや件数に上限を設ける
Step 2: SKILL.md を解析する
各 SKILL.md から frontmatter と本文を取り出します。
- 先頭の
---と終了側の---を探す - その間の YAML を解析する
nameとdescriptionを取り出す- 以降を本文として扱う
Step 3: 利用可能スキルをモデルへ伝える
モデルに、全文ではなくカタログだけを渡します。location はファイル読取型の有効化や相対パス解決に使えます。
モデル向けには、カタログだけでなく短い運用ルールも添えます。
Step 4: スキルを有効化する
有効化方法は主に次の 2 つです。- ファイル読取型: モデルが
SKILL.mdをそのまま読む - 専用ツール型:
activate_skill(name)のようなツールで本文を返す
- frontmatter を残すか除くかを制御できる
- 構造化タグで包める
- リソース一覧を一緒に返せる
- 権限制御やユーザー確認を入れられる
/skill-name や $skill-name をハーネス側で解釈して直接有効化できる設計も有効です。
Step 5: 会話中のスキル文脈を維持する
- スキル内容はコンテキスト圧縮の対象から外す
- すでに有効化済みのスキルは重複注入しない
- 必要ならサブエージェントでスキルを実行する