6.1 KiB
Agent Skills サポート
背景
agentskills.io で公開されているオープン標準 "Agent Skills" は、エージェントに手続き的知識・ドメイン能力をフォルダ単位で供給する形式。Anthropic 発で Claude Code / Cursor / OpenCode / Gemini CLI / Goose / OpenHands など主要な coding agent 群が採用しつつあり、ユーザーが既に書いた skill を insomnia に持ち込める/他ツールと共有できる価値が明確になっている。
docs/ref/memory-systems.md でも Hermes Agent の "Skill Library" が agentskills.io 互換として言及済みで、将来のセルフ生成メモリ経路 (procedural memory) の受け皿としてもこのフォーマットに合わせておく利がある。
Skill の骨格 (仕様要旨)
skill-name/
├── SKILL.md # 必須: YAML frontmatter + Markdown 本体
├── scripts/ # 任意: 実行コード
├── references/ # 任意: 詳細ドキュメント
└── assets/ # 任意: テンプレート等の静的資産
SKILL.md frontmatter:
| フィールド | 必須 | 制約 |
|---|---|---|
name |
○ | 1-64 chars, [a-z0-9-]+, 先頭末尾 - 不可, -- 連続不可, ディレクトリ名と一致 |
description |
○ | 1-1024 chars, 非空 |
license |
自由文 | |
compatibility |
1-500 chars | |
metadata |
任意の key-value map | |
allowed-tools |
experimental (空白区切りのツールリスト) |
仕様の肝は progressive disclosure:
- メタデータ (
name+description) — セッション開始時に全 skill 分をプロンプトに載せる (~100 tokens/skill) - 指示本体 (SKILL.md body) — skill が必要になった時点で agent 側が読みに行く
- リソース (
scripts//references//assets/) — さらに on-demand
既存機構との関係
insomnia のシステムプロンプトは現状、instruction (テンプレ本体) + scope summary + AGENTS.md (trailing section) の 3 要素構成。Skill はこの並びに任意個のオプショナル能力資産として追加する位置取り。instruction / AGENTS.md を置き換えない。
配置は既存の prefix addressing と同じ軸:
$XDG_CONFIG_HOME/insomnia/skills/<name>/SKILL.md<project>/.insomnia/skills/<name>/SKILL.md$insomnia/skills/(ビルトイン) は不要になるまで作らない
方針
MVP スコープ
-
Skill ディスカバリと検証
- 上記 2 経路のサブディレクトリを走査して
SKILL.mdを読む - frontmatter を仕様通り検証。name 不一致・必須欠落・制約違反は hard error (Pod 起動失敗)
- 未知フィールドは
tracing::warn!して無視 (pod-factory と同方針) - 重複 name は workspace 層優先で user 層を上書き + ユーザー向け notification 発行
- 上記 2 経路のサブディレクトリを走査して
-
システムプロンプトへの注入 (progressive disclosure 準拠)
SystemPromptContextにskills: Vec<SkillSummary>を追加 (name,description, 絶対パス)- ビルトイン
$insomnia/default.mdに skill 列挙ブロックを追加 (空なら一切出力しない) - ユーザーテンプレートからも
{{ skills }}で参照可能 - 本体は注入しない。description の末尾に絶対パスを併記し、agent が Read ツールで取れるようにする
-
本体への agent アクセス
- skill ディレクトリを
Scopeにpermission = readで自動 allow scripts/の実行は将来 Bash ツール + Permission 層で成立するまで Read 経由での閲覧に留める
- skill ディレクトリを
範囲外
allowed-toolsフィールドの実効化 —permission-extension-point.mdが Permission 層を整備するまで受信して無視- skill 専用の実行機構 —
scripts/は Bash / Read で自然に扱う - skill の自動生成 (Hermes 風 Skill Library) — memory 系チケットで別途。本チケットで作る ingest 経路を再利用する側
- ビルトイン skill (
$insomnia/skills/) — 必要になるまで追加しない - skill 間依存の解決 — 独立単位、相互参照は本体の Markdown リンクで
完了条件
$user/skills/と$workspace/skills/の両方から skill をロードし、frontmatter 違反は Pod 起動エラーになる- ビルトインの
$insomnia/default.mdをレンダした結果、存在する skill の name + description + 絶対パスがシステムプロンプトに列挙される - skill が 0 件のとき、既存の出力 (AGENTS.md / scope summary) が全く変わらない
- skill ディレクトリが scope の readable に含まれ、agent が Read ツールで
SKILL.md本体・scripts/・references/にアクセスできる - 単体テストで frontmatter 検証の正常 / 異常系、progressive disclosure レンダリング、user/workspace 重複解決が verify される
実装順序
manifestまたは新設skillクレートにSkill構造体とSkillDirectoryLoaderを置く。SKILL.md パースと検証のみでテスト完結pod::SystemPromptContextにskillsを生やし、ensure_system_prompt_materializedで loader を呼ぶresources/prompts/default.mdに skills ブロックを追加、Pod::from_manifestで skill ディレクトリを scope readable に union- 重複 name 解決と notification 発行を乗せる
各ステップ終了時点でビルド通過・既存テスト合格を維持する。skill 0 件時の後方互換は Phase 2 で確認する。
参照
- 仕様本体: https://agentskills.io/specification
- 採用状況: https://agentskills.io/home
- Anthropic 公式サンプル: https://github.com/anthropics/skills
- 検証 CLI: https://github.com/agentskills/agentskills/tree/main/skills-ref (将来
pod skills validate相当を作るなら参考) - 類似機構:
crates/pod/src/prompt_loader.rs(prefix addressing),crates/pod/src/agents_md.rs(cwd-relative ingest),crates/pod/src/system_prompt.rs(render pipeline) - 後続接続先:
docs/ref/memory-systems.mdの Skill Library (自動生成 skill の保存先)