skill-eval-builder について
Skill Eval Builderは、実際のケースを使ってSkillの起動、出力の妥当性、実行時間を測る小規模な評価を作成します。大規模なフレームワークではなく、実行可能な評価フォルダーとスコアカードを求めるSkill作者向けです。
主な機能
- 01Skillの隣に評価ファイルを作成
- 02起動するケースと起動しないケースを検査
- 03出力と時間予算を検証
- 04分類ゲートを採点
活用シーン
- 01Skillが意図どおり起動するか確認
- 02コマンドでSkillの出力を検証
- 03基準時間とSkillの実行時間を比較
- 04Skillの分類ゲートを評価
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ devclarityai/ devclarity-marketplace --skill skill-eval-builderインストール後、Claude Code で/skill-eval-builderを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/eval-anatomy.mdeval-dimensions.mdscripts/classify-evals.pyrun-evals.pyscaffold-evals.py詳細
スキル評価ビルダー
概要
スキル向けの小規模で実用的な評価をセットアップします。スキルと同じ場所に evals/ フォルダーを作成し、実際のケースをいくつか、実行可能なスクリプト、スコアカードを用意します。スクリプトだけでは判断できない点、つまり、スキルが必要なときに発動し(不要なときは静かにしている)、出力が有効であり、所要時間の上限内に収まるかを測定します。
基本原則: 評価はフレームワークではなく、フォルダーです。小さく保ちましょう。
入力
- 対象スキル — パスまたは名前(
SKILL.mdがあるディレクトリ)。 - 実際のケースをいくつか — 発動すべきプロンプトと発動すべきでないプロンプト、および実際の入力。必要に応じて、ユーザーが見つけるのを手伝います。
- 重要な評価軸 — デフォルトは発動と検証です。適していれば所要時間などを追加します。
手順
- 対象スキルを読む —
SKILL.md、参照資料、スクリプトを確認し、その動作と生成物を把握します。 references/eval-dimensions.mdから、スキルに適した評価軸を選びます。ワークフロースキルなら発動+所要時間、機能スキルなら検証を重視します。- 実際のケースを3~5件集める — 発動すべきプロンプトと発動すべきでないプロンプト、および実際の入力を用意します。発動すべきでないケースを必ず1件以上含めてください。
- ケースごとに「良好」の基準を定義する —
fired_whenに副作用の確認、validateに検証コマンド、budget_sに実際のベースラインに基づく値を設定します(references/eval-anatomy.mdを参照)。 - 成果物をスキルの隣に作成します:
次に、手順3~4のケースをpython3 "${CLAUDE_SKILL_DIR}/scripts/scaffold-evals.py" <target-skill-dir>evals/cases.mdに記入します。 - 確認してから、ベースラインを実行します:
python3 <target-skill-dir>/evals/run.py --dry-run # cases parse? python3 <target-skill-dir>/evals/run.py # real run (calls claude -p) - 報告します — スコアカードと保存先を示します。
分類ゲートのテスト
スキルの冒頭に分類器(機能とバグを振り分ける、または続行するかどうかを判断するもの)がある場合は、そのゲートをテストします。
python3 "${CLAUDE_SKILL_DIR}/scripts/scaffold-evals.py" <target> --classify- ラベル、ゲート独自の指示、実際のラベル付き例(例:直近10件のトラッカーチケットと、正解データとしての既存ラベル)を
evals/classify-cases.mdに記入します。references/eval-anatomy.mdを参照してください。 python3 <target>/evals/classify.py→ 正解率と混同行列のスコアカードを出力します。
出力形式
スコアカード(評価軸 × ケース)と保存した成果物のパス:
┌───────────────────────────────┬──────────┬────────┬────────────────────┐
│ Case │ Fires? │ Valid? │ Duration vs budget │
├───────────────────────────────┼──────────┼────────┼────────────────────┤
│ "add tests for X" │ ✅ │ ✅ │ 40s / 60s ✅ │
│ "refactor Y" (shouldn't fire) │ ✅ quiet │ – │ – │
└───────────────────────────────┴──────────┴────────┴────────────────────┘
<target-skill>/evals/ に保存されます(cases.md、run.py、results.md)。
ガイドライン
- 発動の確認には、文章の検索よりも、スキルが生成するファイルなどの観測可能な副作用を優先します。
- 実行結果はバイト単位で同一にはなりません。スキルの評価ではモデルを実行するため、そのばらつき自体が測定対象です。決定性を偽装せず、決定的なスクリプトがすでに保証している内容は評価しないでください(代わりにスクリプトを単体テストします)。
- 実際のケースを3~5件用意し、発動すべきでないケースを少なくとも1件含めます。
references/eval-anatomy.mdを参照してください。
ファイル
scripts/scaffold-evals.py—evals/{cases.md, run.py, results.md}、または--classifyを指定してclassify-*一式を作成します。scripts/run-evals.py—claude -pを使ってケースを実行し、各ケースの所要時間を計測して、発動と検証を確認し、スコアカードを表示・保存します。--dry-runはトークンを消費せずに解析します。scripts/classify-evals.py— ラベル付き例をclaude -pで分類し、正解率と混同行列を報告します。--dry-runはトークンを消費せずに解析します。references/eval-dimensions.md— 評価軸の一覧と、それぞれが適用される場面。references/eval-anatomy.md— ケースの形式、副作用のパターン、アンチパターン。
スクリプトをここで実行できない場合(python3 と claude CLI が必要な場合、またはOSが異なる場合)でも、作業を中断しないでください。評価に必要なのは cases.md と小さなランナーだけです。利用可能なツールでケースを実行し、スコアカードを集計してください。
コメント
Markdown 対応