Agent Skills Best Practices
agentskills.io 仕様準拠 — プロ品質スキルの設計・検証・改善ガイド
Agent Skills Best Practices は、Anthropic 公式ドキュメントを凝縮した実践ガイドと、プロ品質スキルを生成するための skill-creator スキル本体を含むリポジトリ。スキルの設計から LLM を使ったバリデーションまでを体系化している。
すべてのスキルは以下のディレクトリ構造に従う。サブフォルダのネストは 1 段のみ。
skill-name/
├── SKILL.md # Required: メタデータ + コア手順(<500 行)
├── scripts/ # Python / Bash の小さな CLI
├── references/ # API ドキュメント・スキーマ・チートシート
└── assets/ # 出力テンプレート・JSON スキーマ・静的ファイル
| フォルダ | 用途 | 禁止事項 |
|---|---|---|
SKILL.md | 高レベル手順・ナビゲーション。スキルの「脳」 | 500 行超、大きなスキーマのインライン記述 |
scripts/ | 決定論的タスク用の小さな CLI スクリプト | ライブラリコード・長期間使うロジック |
references/ | API ドキュメント・ドメイン固有ロジック・チートシート | ネストしたサブフォルダ(1 段のみ許可) |
assets/ | 出力テンプレート・JSON スキーマ・画像 | 人間向けドキュメント(README など) |
エージェントがスキルをトリガーするかどうかは、name と description だけに基づいて判断する。この 2 フィールドの最適化が最重要。
---
name: angular-vite-migrator
description: >
Migrates Angular CLI projects from Webpack to Vite and esbuild.
Use when updating builder configs or replacing webpack plugins.
Don't use for React/Vue projects or general Angular upgrades.
---
| フィールド | 制約 | ポイント |
|---|---|---|
name | 1–64 文字、小文字・数字・単一ハイフンのみ | 親ディレクトリ名と完全一致が必須 |
description | 最大 1,024 文字 | 第三者的命令形(I/you 禁止) |
| トリガー | "Use when…" を明記 | 曖昧な記述は誤トリガーの原因に |
| ネガティブトリガー | "Don't use for…" を明記 | 類似スキルとの誤区別を防ぐ |
description: "React skills."
description: "Creates React components with Tailwind. Use for UI logic. Don't use for Vue/Svelte."
SKILL.md はナビゲーションと高レベル手順のみを持つ「脳」として機能する。詳細はサブディレクトリに移し、必要なときだけ読むよう指示(Just-in-Time Loading)する。
references/auth-flow.md for specific error codes" のように、エージェントがファイルを読むタイミングを SKILL.md から明示的に指示する。指示がなければエージェントは読まない。
- 人間向けドキュメント — README.md, CHANGELOG.md, INSTALLATION_GUIDE.md
- 冗長な命令 — エージェントが既に問題なくこなすタスクへの指示
- ライブラリコード — 長期運用するコードは標準 CLI ディレクトリへ
- ネストされたサブフォルダ — references/db/v1/schema.md のような 2 段以上のパス
LLM 向けの命令は 第三者的命令形(Third-Person Imperative)で記述する。
"I will extract the text…"
"You should extract…"
"Extract the text…"
"Run the build script…"
- ステップ番号付きで時系列に並べる — 分岐がある場合は「If … run X. Otherwise skip to Step 3.」のように明示
- 具体的なテンプレートを用意 — エージェントはパターンマッチングが得意。JSON 出力の説明より
assets/にテンプレートファイルを置く - 用語を統一 — Angular なら「html」でなく「template」など、ドメイン固有の正確な語を一貫して使う
複雑なパース・反復するボイラープレートを毎回 LLM に書かせない。scripts/ にテスト済みスクリプトを配置し、エージェントに実行させる。
## Step 1: メタデータのバリデーション
python3 scripts/validate-metadata.py \
--name "skill-name" \
--description "Action-oriented description..."
# 成功: SUCCESS: Metadata is valid and optimized for discovery.
# 失敗: stderr に NAME ERROR / DESCRIPTION ERROR / STYLE WARNING
- CLI として設計 — 引数を受け取り、stdout/stderr で結果を返す
- 詳細なエラーメッセージ — エージェントが自己修正できるよう「NAME ERROR: 'foo' is 65 chars」のように具体的に
- 単一目的 — 1 スクリプト 1 タスク。複雑なロジックは標準 CLI へ
- 標準出力 — stdout = 成功、stderr = 失敗。exit code を正しく使う
スキルの品質は LLM との協働でテストするのが最も効果的。以下の 4 フェーズで回帰を防ぐ。
Phase 1: Discovery Validation
YAML フロントマターだけを新規 LLM チャットに貼り、以下を確認:
- このスキルを確実にトリガーすべきプロンプト 3 例
- 似ているが トリガーすべきでないプロンプト 3 例
- description が広すぎないか・最適化の提案
Phase 2: Logic Validation
SKILL.md 全文 + ディレクトリツリーを渡し、「自律エージェントとして実行をシミュレートせよ」と指示。各ステップで Execution Blocker(推測・幻覚が必要な箇所)を特定させる。
Act as an autonomous agent that has just triggered this skill.
Simulate step-by-step. For each step:
1. What exactly are you doing?
2. Which file/script are you reading or running?
3. Flag any Execution Blockers (lines where you must guess).
Phase 3: Edge Case Testing
「QA テスター」として役割を切り替え、スキルを「壊す」ことを目標にした 3〜5 問の質問を生成させる。修正はまだ行わず、質問に回答するだけ。
Switch roles. Act as a ruthless QA tester.
Ask 3-5 specific questions about edge cases or missing fallbacks.
Do NOT fix these issues yet. Just ask and wait for answers.
Phase 4: Architecture Refinement
回答を元に SKILL.md を書き直し、Progressive Disclosure を強制適用。大きなテンプレートや設定ファイルは references/ / assets/ に分離し、Error Handling セクションを追加。
| カテゴリ | チェック項目 |
|---|---|
| メタデータ | name が 1–64 文字・小文字英数・単一ハイフンのみ |
name と親ディレクトリ名が完全一致 | |
description が 1,024 文字以内 | |
| "Use when…" と "Don't use for…" が明記されている | |
| 第三者的語調(I, me, my, you, your が未使用) | |
| 構成 | scripts/, references/, assets/ 以外のフォルダが存在しない |
| フォルダが 1 段のみ(ネストなし) | |
| README.md 等の人間向けドキュメントがない | |
| すべてのパスが相対パス + 前向きスラッシュ | |
| SKILL.md | 500 行未満 |
| 命令形(Extract, Run, Validate 等) | |
| 番号付きで時系列に並んでいる | |
大きなスキーマ・テンプレートが references/ / assets/ に分離されている | |
| ドメイン固有の用語が一貫して使われている | |
| スクリプト | 引数付きの CLI として設計されている |
| stdout / stderr で明確なフィードバックを返す | |
| 単一目的(複雑なロジックは標準 CLI へ) | |
| エラー処理 | Error Handling セクションが存在する |
| バリデーションスクリプトの実行ステップが含まれている |
- Anthropic — Agent Skills Best Practices(公式ドキュメント)
- GitHub: mgechev/skills-best-practices — このガイドのソースリポジトリ
- GitHub: mgechev/skillgrade — スキルの回帰テスト・評価ツール
- SkillsBench(arxiv:2602.12670) — スキル評価のベンチマーク