AI evaluation capability pack. Gives AI agents the judgment rules for professional benchmarking, regression testing, A/B comparison, adversarial red-teaming, CI/CD evaluation pipelines, evaluation framework design, and human evaluation calibration. Research-grounded rules from promptfoo, deepeval, deepteam, ragas, and enterprise evaluation practices. Use for any LLM/agent evaluation, benchmark design, safety testing, or evaluation pipeline task.
Pro scans all 11 files and shows the line behind each finding
Scanned 10/6/2026
npx -y skills add Sheldon-92/TAD --skill ai-evaluation --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Ai Evaluation?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/sheldon-92-ai-evaluation)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: ai-evaluation
description: AI evaluation capability pack. Gives AI agents the judgment rules for professional benchmarking, regression testing, A/B comparison, adversarial red-teaming, CI/CD evaluation pipelines, evaluation framework design, and human evaluation calibration. Research-grounded rules from promptfoo, deepeval, deepteam, ragas, and enterprise evaluation practices. Use for any LLM/agent evaluation, benchmark design, safety testing, or evaluation pipeline task.
keywords: ["评估", "evaluation", "eval", "benchmark", "基准测试", "回归测试", "regression", "adversarial", "对抗", "A/B test", "自动化评估", "promptfoo", "deepeval", "红队", "red team", "rubric", "评分"]
type: reference-based
---
**CONSUMES**: User evaluation task + target agent/LLM description + optional existing eval configs
**PRODUCES**: Applied evaluation judgment rules + benchmark configs + regression baselines + safety audit results + CI/CD pipeline configs + calibrated rubrics
# AI Evaluation Capability Pack
**Version**: 0.1.0
**Compatibility**: Claude Code (Phase 1); Codex / Cursor / Gemini in Phase 3
**License**: Apache 2.0
---
## What This Pack Does
AI agents set up evaluation by copying tutorial configs. They run promptfoo once with default assertions. They skip statistical rigor — declaring a winner from n=20. They use the same model as judge and generator, hiding self-enhancement bias behind high scores. They never build regression baselines, so prompt changes break production silently.
This pack embeds the judgment rules that evaluation engineers apply automatically — rules from real evaluation frameworks, red-team tooling documentation, and statistical testing literature.
**Pack = evaluation judgment. Your workflow system = process constraints. No overlap.**
流程约束(噪声地板、held-out 标题、一轮一变)见 L2 `.tad/project-knowledge/patterns/pack-evaluation.md` 条目「Declare Improvement Only Past a Noise Floor, on a Held-Out Headline, One Variable per Round」。本包不改写成爬坡工作流。
---
## Cross-Cutting Rule: Judge ≠ Optimizer
> **When comparing or optimizing LLM outputs, the judge model MUST be a different model family from the generator.** Self-enhancement bias is one of three documented judge failure modes (position, verbosity, self-enhancement) named in the MT-Bench paper (Zheng et al., arXiv:2306.05685). If forced to use the same family, document the bias explicitly and flag results as "internally consistent only — needs cross-family validation."
**Calibration ceiling (the number to anchor on):** A strong LLM judge (GPT-4-as-judge) reaches **>80% agreement with human experts on MT-Bench — matching the inter-human agreement rate**. That is the *ceiling* a judge can claim, not a floor; do not claim your judge agrees with humans more than two humans agree with each other. Before trusting a custom judge, validate its correlation with a human-labeled set (see `references/human-eval-protocol.md` HE3/HE6).
This rule applies to: benchmark scoring, A/B testing, regression comparison, and any LLM-as-Judge workflow. It is surfaced here because burying it in one reference file causes agents to miss it.
---
## Step 0: Context Detection
When the user mentions evaluation work, detect the context and load the right reference:
| User Signal | Reference to Load |
|-------------|-------------------|
| "design eval", "evaluation framework", "rubric", "dimensions", "scoring criteria", "评估框架" | `references/eval-framework-workflow.md` |
| "benchmark", "baseline", "golden dataset", "test scenarios", "基准测试" | `references/benchmark-rules.md` |
| "regression", "drift", "golden suite", "before/after", "回归测试" | `references/regression-rules.md` |
| "A/B test", "compare prompts", "compare models", "which is better", "对比测试" | `references/ab-testing-rules.md` |
| "red team", "adversarial", "safety test", "attack", "jailbreak", "OWASP", "对抗测试" | `references/adversarial-rules.md` |
| "CI/CD", "pipeline", "automation", "GitHub Actions", "PR gate", "自动化评估" | `references/pipeline-rules.md` |
| "human eval", "annotator", "inter-rater", "calibration", "人工评估" | `references/human-eval-protocol.md` |
| "full evaluation", "complete eval setup", "evaluate everything" | Load **all references** sequentially |
---
## Step 1: Apply Rules
After loading the relevant reference file(s):
1. **Read the reference completely** — do not skim
2. **Apply each rule as a judgment check** against the user's evaluation setup, config, or request
3. **For each violated rule**: state the violation clearly, then give the specific fix
4. **Enforce the Judge ≠ Optimizer cross-cutting rule** on every LLM-as-Judge configuration
5. **Check determinismLevel annotations** — they tell the eval runner how many samples to draw:
- `deterministic`: 1 run sufficient (byte-stable output)
- `semi-deterministic`: run ≥3x to bound variance
- `non-deterministic`: run ≥10x and report distribution
Output format per finding:
```
[P0] Rule B2 (benchmark): Golden dataset has only 12 cases — minimum is 50-100 representative trajectories.
→ Expand to ≥50 trajectories (B2); ensure the B3 scenario matrix covers core/edge/error/performance (floor ≥5).
[P1] Rule 7 (ab-testing): Same model (claude-sonnet) used as both generator and judge.
→ Switch judge to a different family (e.g., gpt-4o) or document self-enhancement bias.
```
---
## Step 2: Output
If the user supplied an eval config file, first run `bash scripts/eval-config-lint.sh <config>` and merge its exit-coded findings into the report below (exit 1 → P0, exit 2 → P2). Then produce a structured evaluation report:
```
## Evaluation Review: [area reviewed]
### P0 — Blocking (must fix before running eval)
- [finding + specific fix]
### P1 — Required (fix before trusting results)
- [finding + specific fix]
### P2 — Advisory (improves eval quality)
- [finding + specific fix]
### determinismLevel Audit
[table of rubric items with their determinism classification]
### Tool Recommendation
[promptfoo / deepeval / deepteam based on user context]
```
---
## Anti-Skip Table
| Excuse | Counter |
|--------|---------|
| "We only need a quick eval" | Quick evals with n=20 have ±20pp Wilson confidence intervals (at p=0.5; ±10pp is the n=100 figure). You cannot tell a 70% from an 80% system. At minimum use n=100. |
| "We'll add regression later" | Without a golden suite today, tomorrow's prompt change breaks production silently. Baselines cost 10 minutes to establish. |
| "Same model judge is fine" | Self-enhancement bias is 10-15% documented. Your "improvement" may be the judge preferring its own style. |
| "Manual red-teaming is enough" | Manual tests are not reproducible, not CI-integrated, and miss multi-turn escalation attacks. Use deepteam or promptfoo-redteam. |
| "Our evals pass so we're good" | Are your assertions checking outcomes or steps? "Agent called the right tool" ≠ "Agent produced the right result." |
---
## Tool Quick Reference
| Tool | Install | Primary Use |
|------|---------|-------------|
| promptfoo | `npx promptfoo@latest init` | YAML-driven eval, regression, red-team |
| deepeval | `pip install deepeval` | Python pytest eval, 50+ metrics |
| deepteam | `pip install -U deepteam` (v1.0.4, 50+ vulns, 14 single-turn + 5 multi-turn attacks per docs taxonomy) | OWASP-aligned adversarial red-teaming |
| ragas | `pip install ragas` | RAG-specific evaluation (faithfulness, relevancy) |
## Validation Script
Before running any promptfoo/deepeval config, lint it for this pack's load-bearing violations:
```bash
bash scripts/eval-config-lint.sh <path-to-eval-config.{yaml,json,yml}>
# exit 0 = clean | exit 1 = P0 violation (self-enhancement bias / under-sampled / no golden floor) | exit 2 = advisory-only (missing threshold / repeat)
```
The linter is deterministic (grep/jq, no npm/pip): it flags judge==generator family, un-thresholded `llm-rubric`/`g-eval` assertions, golden test count below the B3 floor, and missing `--repeat` on non-deterministic suites. Run it in Step 2 and fold its findings into the P0/P1/P2 report — it is a smoke alarm, not a substitute for reading the rules.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!