はじめに
Claude Codeのスキルを「勘」で作る時代は終わりました。Anthropic公式の skill-creator を使えば、対話的にスキルを作成し、テストで品質を測定し、自動ループで最適化できます。
🤔 そもそもskill-creatorとは?
Claude Codeには「スキル」という仕組みがあります。SKILL.mdファイルにプロンプトを書けば、特定のタスクに対してClaudeの振る舞いをカスタマイズできます。
ただし、良いスキルを書くのは意外と難しいものです。
- descriptionが曖昧だと、関係ないクエリでトリガーされてしまいます 😱
- 指示が不明確だと、Claudeが自己流で動いてしまいます 🤷
- 「良さそう」と思って公開したら、実は半分のケースで失敗していた…なんてことも 💀
skill-creator は、この問題をまるっと解決するAnthropicの公式ツールです。
📦 anthropics/skills リポジトリ
└── skills/skill-creator/ ← これ!
🏗️ skill-creatorの全体像
skill-creatorは単なるスキル生成ツールではありません。eval(評価)駆動の反復改善フレームワークです。
7つのステップ
| Step | やること | ポイント |
|---|---|---|
| 1️⃣ | 意図の把握 | 何をすべきか、いつトリガーされるか、期待出力は何か |
| 2️⃣ | ヒアリング | エッジケース、フォーマット、成功基準を深掘り |
| 3️⃣ | スキル作成 | SKILL.mdをドラフト(500行以下推奨) |
| 4️⃣ | テスト | 2-3個の現実的なテストプロンプトを作成 |
| 5️⃣ | 評価 | graderエージェントが定量的にpass/fail判定 |
| 6️⃣ | 改善 | フィードバックに基づきリファクタリング |
| 7️⃣ | description最適化 | トリガー精度を自動ループで微調整 |
📁 リポジトリ構造を覗いてみよう
skill-creator/
├── 📄 SKILL.md # スキル本体
├── 🤖 agents/ # サブエージェント(3体)
│ ├── analyzer.md # 事後分析「なぜ勝ったか?」
│ ├── comparator.md # ブラインド比較「どっちが良い?」
│ └── grader.md # 評価「合格?不合格?」
├── 🖥️ eval-viewer/ # ブラウザで結果を確認
│ ├── generate_review.py
│ └── viewer.html
├── 📚 references/
│ └── schemas.md # 全JSONスキーマ定義
└── 🔧 scripts/ # ユーティリティ群
├── run_eval.py # トリガー評価
├── run_loop.py # eval+改善ループ
├── improve_description.py # description自動改善
├── aggregate_benchmark.py # ベンチマーク集計
├── generate_report.py # HTMLレポート生成
├── package_skill.py # .skillパッケージ作成
├── quick_validate.py # 構造バリデーション
└── utils.py # 共通ユーティリティ
🤖 3体のサブエージェントが品質を守る
skill-creatorの真骨頂は、3つの専門エージェントによる多角的な評価です。
🎯 Grader(評価エージェント)
各テストケースの出力を証拠ベースでpass/fail判定します。
{
"text": "出力にJohn Smithの名前が含まれる",
"passed": true,
"evidence": "Transcript Step 3: 'Extracted names: John Smith, Sarah Johnson'"
}
🔑 ポイント: 「ファイルが存在する」だけでは合格になりません。中身が正しいかまで検証します。表面的な合格を排除する設計思想が光ります。
さらに、evalフィードバック機能でテストケース自体の改善も提案してくれます:
「このアサーション、ハルシネーションでも合格してしまいますよ。入力データとの一致確認を追加しましょう」
⚖️ Comparator(ブラインド比較エージェント)
2つの出力をA/Bの匿名状態で比較します。どちらのスキルが出力したか知らないため、バイアスなしに純粋な品質で判定できます。
| 評価軸 | 項目 | スケール |
|---|---|---|
| Content | correctness, completeness, accuracy | 各1-5点 |
| Structure | organization, formatting, usability | 各1-5点 |
| 総合 | 上記の平均 | 1-10点 |
🔍 Analyzer(事後分析エージェント)
比較結果を「unblind」して、なぜ勝者が勝ったかを構造的に分析します。
出力例:
- 🏆 勝者の強み: 「明確な5ステップの手順により、一貫した実行パターンを実現」
- 💔 敗者の弱み: 「'適切に処理してください'という曖昧な指示が、不安定な動作の原因」
- 📝 改善提案: priority: high — 「曖昧な指示を具体的な手順に置き換える」
🔄 description最適化ループ — 最大の目玉機能
スキルのdescription(説明文)は、Claude Codeがスキルを呼び出すかどうかの判定に直接使われます。つまり、descriptionの質 = トリガー精度です。
run_loop.py はこれを自動で最適化してくれます。
🛡️ 過学習防止のtrain/testスプリット
「テストに合格するためだけのdescription」にならないよう、40%のテストケースを評価時に隠す仕組みがあります。
全テストケース(10問)
├── 📘 Train: 6問 → 改善に使う
└── 📕 Test: 4問 → 改善モデルには見せない(汎化性能の検証用)
改善モデルにはtrainスコアしか見せず、testスコアは「最良のiterationを選ぶ」ためだけに使います。機械学習のベストプラクティスがスキル開発にも適用されています。
🚀 導入方法(3分でできる)
Step 1: プラグイン登録
Claude Codeで /plugin → Manage plugins → Marketplace タブ
Step 2: リポジトリ追加
anthropics/skills を指定して Add
Step 3: インストール
Plugins タブ → example-skills → Install
Step 4: 使ってみる
/skill-creator my-awesome-skill
⚡ Tips: インストール後、表示に少し遅延がある場合があります。エディタを再起動すると確実です。
📈 実績:合格率78% → 100%への改善事例
あるarticle-reviewスキルの改善事例を紹介します。
😢 Before(改善前)
| 問題点 | 詳細 |
|---|---|
| ❌ パス不明確 | 記事ファイルの場所が曖昧 |
| ❌ ツール未活用 | textlint MCPを使っていない |
| ❌ 設定漏れ | allowed-toolsにtextlintが未登録 |
| ❌ description曖昧 | トリガーが不安定 |
🎉 After(改善後)
- ✅ 「textlintによる自動校正と誤字脱字・文法的な誤りの指摘を行う」と明示
- ✅ 手順を4段階で整理
- ✅ allowed-toolsに必要なツールを全て登録
- ✅ 合格率100% を達成
📐 SKILL.mdの書き方ベストプラクティス
skill-creatorが教えてくれる設計原則をまとめます。
✍️ frontmatter(必須部分)
---
name: my-skill-name # kebab-case、64文字以内
description: | # 1024文字以内、トリガー判定に使われる
このスキルは○○を行います。
△△のときに起動し、□□を出力します。
---
📏 3つの制約
| 項目 | 制限 | 理由 |
|---|---|---|
name |
64文字 | kebab-case、ハイフン始終不可 |
description |
1,024文字 | トリガー判定で常時読み込まれるため |
| 本文 | 500行推奨 | コンテキストウィンドウの節約 |
🧠 4つの設計原則
- WHYを説明する — MUST/NEVERの羅列ではなく、指示の理由を書く
- フィードバックから汎化する — テストケースへの過学習を避ける
- プロンプトを簡潔に — 非生産的な要素は削除
- 繰り返し作業をスクリプトに — 類似ヘルパーを集約
🗂️ 評価で使われるJSONスキーマ一覧
skill-creatorは多数のJSONファイルを使ってデータを管理します。主要なものを一覧にまとめました。
| ファイル | 場所 | 用途 |
|---|---|---|
evals.json |
evals/ |
テストケース定義(prompt + expectations) |
grading.json |
<run>/ |
Graderの出力(pass/fail + evidence) |
metrics.json |
<run>/outputs/ |
実行メトリクス(tool_calls, 出力文字数等) |
timing.json |
<run>/ |
実行時間(executor + grader) |
history.json |
ワークスペースルート | バージョン進行追跡(v0→v1→v2...) |
benchmark.json |
benchmarks/<ts>/ |
ベンチマーク統計(mean, stddev, delta) |
comparison.json |
<grading>/ |
Comparatorの出力(ルブリック + 勝者) |
analysis.json |
<grading>/ |
Analyzerの出力(改善提案) |
🎯 まとめ:なぜskill-creatorを使うべきなのか
3行で言うと
- 🎵 勘で作るな、テストで測れ — eval駆動でスキル品質を定量化
- 🎵 手動で直すな、ループで回せ — run_loop.pyでdescription自動最適化
- 🎵 一人で判断するな、3体に任せろ — Grader / Comparator / Analyzerの分業体制
🎶 スキル作成時はskill-creatorを使おう♪
テストなき改善は、ただの思い込みです。