Eval Harness スキル
Claude Codeセッション用の形式的評価フレームワーク。評価駆動開発(EDD)の原則を実装します。
アクティベーション条件
- AI支援ワークフロー向けの評価駆動開発(EDD)のセットアップ
- Claude Codeタスク完了のパス/フェイル基準の定義
- pass@kメトリクスによるエージェント信頼性の測定
- プロンプトまたはエージェント変更の回帰テストスイートの作成
- モデルバージョン間のエージェントパフォーマンスのベンチマーク
哲学
評価駆動開発は、評価を「AI開発の単体テスト」として扱います:
- 実装前に期待される動作を定義する
- 開発中は継続的に評価を実行する
- 各変更でリグレッションを追跡する
- 信頼性測定にpass@kメトリクスを使用する
評価タイプ
機能評価
Claudeが以前できなかったことをできるかテストします:
[機能評価: 機能名]
タスク: Claudeが達成すべきことの説明
成功基準:
- [ ] 基準1
- [ ] 基準2
- [ ] 基準3
期待される出力: 期待される結果の説明
回帰評価
変更が既存機能を壊していないことを確認します:
[回帰評価: 機能名]
ベースライン: SHAまたはチェックポイント名
テスト:
- 既存テスト1: PASS/FAIL
- 既存テスト2: PASS/FAIL
- 既存テスト3: PASS/FAIL
結果: X/Y パス (以前は Y/Y)
グレーダータイプ
1. コードベースグレーダー
コードを使った決定論的チェック:
# ファイルに期待されるパターンが含まれているか確認
grep -q "export function handleAuth" src/auth.ts && echo "PASS" || echo "FAIL"
# テストがパスするか確認
npm test -- --testPathPattern="auth" && echo "PASS" || echo "FAIL"
# ビルドが成功するか確認
npm run build && echo "PASS" || echo "FAIL"
2. モデルベースグレーダー
Claudeを使ってオープンな出力を評価します:
[モデルグレーダープロンプト]
以下のコード変更を評価してください:
1. 記述された問題を解決していますか?
2. 構造は適切ですか?
3. エッジケースは処理されていますか?
4. エラーハンドリングは適切ですか?
スコア: 1-5 (1=不良、5=優良)
理由: [説明]
3. 人間グレーダー
手動レビュー用にフラグを立てます:
[人間レビュー必須]
変更: 変更内容の説明
理由: 人間のレビューが必要な理由
リスクレベル: 低/中/高
メトリクス
pass@k
「k回の試行で少なくとも1回成功」
- pass@1: 初回試行成功率
- pass@3: 3回の試行以内に成功
- 典型的な目標: pass@3 > 90%
pass^k
「k回すべての試行が成功」
- 信頼性に対するより高いハードル
- pass^3: 3回連続成功
- クリティカルパスに使用
評価ワークフロー
1. 定義(コーディング前)
## 評価定義: 機能-xyz
### 機能評価
1. 新しいユーザーアカウントを作成できる
2. メール形式を検証できる
3. パスワードを安全にハッシュ化できる
### 回帰評価
1. 既存のログインが動作する
2. セッション管理が変更されていない
3. ログアウトフローがそのまま
### 成功メトリクス
- 機能評価の pass@3 > 90%
- 回帰評価の pass^3 = 100%
2. 実装
定義された評価をパスするコードを記述します。
3. 評価
# 機能評価を実行
[各機能評価を実行し、PASS/FAILを記録]
# 回帰評価を実行
npm test -- --testPathPattern="existing"
# レポートを生成
4. 報告
評価レポート: 機能-xyz
========================
機能評価:
ユーザー作成: PASS (pass@1)
メール検証: PASS (pass@2)
パスワードハッシュ: PASS (pass@1)
全体: 3/3 パス
回帰評価:
ログインフロー: PASS
セッション管理: PASS
ログアウトフロー: PASS
全体: 3/3 パス
メトリクス:
pass@1: 67% (2/3)
pass@3: 100% (3/3)
ステータス: レビュー準備完了
統合パターン
実装前
/eval define 機能名
.claude/evals/機能名.mdに評価定義ファイルを作成します
実装中
/eval check 機能名
現在の評価を実行し、ステータスを報告します
実装後
/eval report 機能名
完全な評価レポートを生成します
評価ストレージ
プロジェクトに評価を保存:
.claude/
evals/
機能-xyz.md # 評価定義
機能-xyz.log # 評価実行履歴
baseline.json # 回帰ベースライン
ベストプラクティス
- コーディング前に評価を定義 - 成功基準について明確な思考を強制
- 頻繁に評価を実行 - 早期にリグレッションをキャッチ
- pass@kを経時的に追跡 - 信頼性の傾向を監視
- 可能な場合はコードグレーダーを使用 - 確率的より決定論的が優れる
- セキュリティは人間がレビュー - セキュリティチェックを完全に自動化しない
- 評価を高速に保つ - 遅い評価は実行されない
- 評価をコードとバージョン管理 - 評価は第一級の成果物
例:認証機能の追加
## 評価: 認証機能追加
### フェーズ1: 定義(10分)
機能評価:
- [ ] ユーザーがメール/パスワードで登録できる
- [ ] ユーザーが有効な認証情報でログインできる
- [ ] 無効な認証情報は適切なエラーで拒否される
- [ ] セッションがページリロード後も持続する
- [ ] ログアウトでセッションがクリアされる
回帰評価:
- [ ] 公開ルートが引き続きアクセス可能
- [ ] APIレスポンスが変更されていない
- [ ] データベーススキーマに互換性がある
### フェーズ2: 実装(変動)
[コードを記述]
### フェーズ3: 評価
実行: /eval check 認証機能追加
### フェーズ4: 報告
評価レポート: 認証機能追加
==============================
機能: 5/5 パス (pass@3: 100%)
回帰: 3/3 パス (pass^3: 100%)
ステータス: リリース可能
ローカルフレームワークユーティリティ
機械的なユーティリティは scripts/lib/eval-harness/ に同梱されています:
node scripts/eval-harness.js example
- カプセル: 5つの系統とローカル整合性チェックを備えたハッシュリンクジャーナル。
- 検査: ソースダイジェスト、検証済みバリアントパス、構文警告。
- リプレイ: 宣言されたツールとコンテンツアドレス指定のフィクスチャ。欠落したフィクスチャはフェイルクローズド。SE3以上はリプレイで拒否されます。レコードモードは登録された実装を呼び出すため、信頼できる関数のみを登録してください。
- 領収書: カプセルとアーティファクトのバイトをオフライン検証し、名前付きチェックを備えます。
- レトロスペクティブ準備:
node scripts/eval-harness.js capsule group <dir> [<dir> ...]で、1つのタスクファミリーから宣言されたハーネスバージョンにより、明示的に選択された1〜100の検証済みローカルカプセルスナップショットをグループ化します。重複スナップショットは1回カウント。競合するIDや無効なカプセルはレポート全体を拒否します。これは読み取り専用のレコードカウントであり、新しいロールアウト、スコア、プロモーションは含まれません。小さく静的なカプセルを使用してください。ペイロード、ディレクトリ引数、生の実行/カプセルIDは省略されますが、タスクファミリー/バージョンラベルはそのまま、ダイジェスト参照はリンク可能です。共有する前にレビューしてください。運用上の検証は保留中です。
検証済みのOSコンテインメントバックエンドが実装されていないため、全OSで候補実行が無効になっています。gate run、runGate、runVariant、直接の子プロセス起動、および廃止されたエフェクトプリロードは gate.isolation_required で拒否されます。信頼フラグや呼び出し元が提供するエグゼキューターでこの拒否をバイパスすることはできません。この例はその拒否を記録し、実行やスコアリングを行わずにソースを検査します。
静的な警告、カプセルの領収書、または成功したユーティリティテストを候補のコンテインメントやプロモーションの証拠として提示しないでください。将来のゲートには、独立してレビューされたOS境界、保護されたチェッカーと監査チャネル、および致命的なベースライン拒否が必要です。docs/architecture/eval-harness-frameworks.md を参照してください。
製品評価 (v1.8)
動作の品質が単体テストだけでは捉えられない場合に製品評価を使用します。
グレーダータイプ
- コードグレーダー(決定論的アサーション)
- ルールグレーダー(正規表現/スキーマ制約)
- モデルグレーダー(LLM-as-judgeルーブリック)
- 人間グレーダー(曖昧な出力の手動判定)
pass@k ガイダンス
pass@1: 直接的な信頼性pass@3: 制御されたリトライ下での実用的な信頼性pass^3: 安定性テスト(3回すべての実行がパスする必要あり)
推奨しきい値:
- 機能評価: pass@3 >= 0.90
- 回帰評価: リリースクリティカルパスでは pass^3 = 1.00
評価アンチパターン
- 既知の評価例にプロンプトを過適合させる
- ハッピーパス出力のみを測定する
- パス率を追いかける一方でコストとレイテンシの変動を無視する
- リリースゲートに不安定なグレーダーを許可する
最小限の評価アーティファクト構成
.claude/evals/<機能>.md定義.claude/evals/<機能>.log実行履歴docs/releases/<バージョン>/eval-summary.mdリリーススナップショット