Communityコーディング&開発github.com

スキル評価パイプライン

構造化された評価パイプラインを使用して、Claude Codeスキルのトリガー、正確性、品質をマルチエージェントパイプラインで検証します。

スキル評価パイプライン とは?

このスキルは、Claude Codeスキル(または他のAIエージェントスキル)に対して構造化された評価パイプラインを実行するために設計されています。評価セットの定義(JSON、インラインプロンプト、自動生成)、スキルあり・なしの並列実行、アサーションに基づく採点、ベンチマークの集計と分析、結果のレポート生成、ユーザーフィードバックの収集までをカバーします。Blind Comparison機能により、スキルバージョン間のA/Bテストを公平に実施できます。主にClaude Code環境で動作し、マルチエージェントパイプライン(skill-forge-executor、skill-forge-grader、skill-forge-analyzer、skill-forge-comparator)と連携して、スキルの品質を反復的に改善します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AgriciDaniel/skill-forge/tree/main/skills/skill-forge-eval

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

スキル評価パイプライン は何をしますか?

Claude Codeスキルに対して、トリガー、正確性、品質をマルチエージェントパイプラインで検証する構造化評価を実行します。

プロセス

ステップ1: 評価セットの定義

以下のソースから評価定義を受け付けます:

  • 評価セットJSONへのパス: evals/evals.json またはユーザー指定のファイル
  • インラインプロンプト: ユーザーが評価クエリを直接提供
  • 自動生成: スキルの説明から生成 (ステップ1b参照)

評価セットJSONスキーマ:

{
  "skill_name": "my-skill",
  "skill_path": "./my-skill",
  "evals": [
    {
      "eval_id": 0,
      "eval_name": "descriptive-name",
      "prompt": "The user's task prompt",
      "input_files": [],
      "assertions": [
        {
          "name": "output-has-score",
          "check": "Output contains a numeric score between 0-100",
          "weight": 1.0
        }
      ],
      "should_trigger": true
    }
  ]
}

ステップ1b: 評価セットの自動生成

評価セットが存在しない場合は、自動生成します:

  1. スキルのSKILL.mdの説明と指示を読み取る
  2. python scripts/generate_eval_set.py <skill-path> を実行してスターターセットを生成
  3. 生成されたセットをユーザーに提示し、レビューと編集を促す
  4. ユーザーが承認または修正してから先に進む

ステップ2: ワークスペースのセットアップ

評価アーティファクトとスキルファイルを混同しないよう、評価ワークスペースをスキルディレクトリ外に作成します。兄弟ディレクトリまたは専用の場所を使用します:

eval-workspace/
  iteration-1/
    eval-0/
      eval_metadata.json        # この評価のアサーションと設定
      with_skill/
        outputs/                # スキル実行出力
        timing.json             # トークン数 + 実行時間
        grading.json            # アサーション結果 + 証拠
      baseline/
        outputs/
        timing.json
        grading.json
    eval-1/
      eval_metadata.json
      with_skill/
        outputs/
        timing.json
        grading.json
      baseline/
        outputs/
        timing.json
        grading.json
    benchmark.json              # 集計メトリクス
    benchmark.md                # 人間が読めるレポート

各評価ディレクトリに対して、評価セットエントリから eval_metadata.json を作成します:

{
  "eval_id": 0,
  "eval_name": "descriptive-name",
  "prompt": "The user's task prompt",
  "assertions": [...],
  "should_trigger": true
}

ステップ3: 評価の実行

セット内の各評価について、2つの並列実行を開始します:

スキルあり実行 (agents/skill-forge-executor.md に委譲):

Execute this task:
- Skill path: <path-to-skill>
- Task: <eval prompt>
- Input files: <eval files if any, or "none">
- Save outputs to: <workspace>/iteration-<N>/eval-<ID>/with_skill/outputs/
- Outputs to save: <what the assertions check>

ベースライン実行 (agents/skill-forge-executor.md に委譲):

  • 新しいスキルの場合: スキルをロードせずに実行
  • 改善されたスキルの場合: 以前のバージョンで実行(最初にスナップショット)

各実行ディレクトリにタイミングデータを timing.json に保存:

{
  "total_tokens": 84852,
  "duration_ms": 23332,
  "total_duration_seconds": 23.3
}

ステップ4: 結果の採点

完了した各実行について agents/skill-forge-grader.md に委譲:

  1. eval_metadata.jsonで定義されたアサーションに対して採点
  2. 各実行の grading.json に結果を保存:
{
  "eval_id": 0,
  "run_type": "with_skill",
  "assertions": [
    {
      "name": "output-has-score",
      "passed": true,
      "evidence": "Found score: 87/100 on line 14"
    }
  ],
  "pass_rate": 1.0
}

ステップ5: 集計と分析

  1. python scripts/aggregate_benchmark.py <workspace>/iteration-<N> --skill-name <name> を実行

  2. これにより benchmark.json と benchmark.md が生成され、以下が含まれます:

    • 評価ごとの合格率 (スキルあり vs ベースライン)
    • 平均時間とトークン使用量
    • 改善率 (スキルあり / ベースライン)
  3. agents/skill-forge-analyzer.md に委譲して:

    • 集計統計では隠れがちなパターンを表面化
    • 一貫して失敗するアサーションタイプを特定
    • 以前のイテレーションからの回帰をフラグ付け

ステップ6: 結果の提示

サマリーレポートを生成:

# 評価レポート: [skill-name] — イテレーション [N]

## 全体
| メトリクス | スキルあり | ベースライン | 差分 |
|--------|-----------|----------|-------|
| 合格率 | X% | Y% | +Z% |
| 平均時間 | Xs | Ys | -Zs |
| 平均トークン数 | X | Y | -Z |

## 評価ごとの結果
| 評価 | スキルあり | ベースライン | ステータス |
|------|-----------|----------|--------|
| eval-0 | PASS | FAIL | 改善 |
| eval-1 | PASS | PASS | 維持 |

## パターンと洞察
[分析エージェントから]

## 推奨事項
[失敗に基づく具体的な改善提案]

ステップ7: フィードバックの収集

ユーザーフィードバックを feedback.json に保存:

{
  "reviews": [
    {
      "run_id": "eval-0-with_skill",
      "feedback": "the chart is missing axis labels",
      "timestamp": "2026-03-06T12:00:00Z"
    }
  ],
  "status": "complete"
}

フィードバックを /skill-forge evolve に渡し、次のイテレーションに活用します。

高度: ブラインド比較

スキルバージョン間の厳密なA/Bテスト向け:

  1. agents/skill-forge-comparator.md に委譲
  2. 2つのディレクトリを渡す: eval-<ID>/with_skill/outputs/ と eval-<ID>/baseline/outputs/
  3. 比較器はランダムなラベル(バージョンA / バージョンB)を割り当て、どちらが新しいかを認識できないようにする
  4. eval_metadata.jsonのアサーション基準に基づいて各出力を評価
  5. どちらが「新しい」か「古い」かを知らずに嗜好スコアを返す

エラーハンドリング

  • 実行タイムアウト: 実行が5分を超えた場合、終了して timing.json で "timed_out": true とマークする
  • 実行失敗: 実行がクラッシュした場合、エラーを実行ディレクトリの error.txt に保存し、残りの評価を継続する
  • 採点失敗: 採点が合格/不合格を判断できない場合、アサーションを "passed": null とマークし、その理由を証拠として添付する
  • ファイル欠落: 実行後に timing.json または grading.json が見つからない場合、レポートでその評価を不完全としてフラグ付けする
  • 部分完了: 常に利用可能な結果を集計して報告する — 1つの評価の失敗で全体をブロックしない

品質ゲート

評価実行を完了とマークする前に:

  • すべての評価が実行された(スキルあり + ベースライン)
  • すべての実行でタイミングデータが取得された
  • すべてのアサーションが証拠付きで採点された
  • ベンチマークが合格率、時間、トークンで集計された
  • 分析パターンが文書化された
  • 結果がユーザーに提示された

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

関連スキル