Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Audit an LLM evaluation pipeline for correctness, coverage, and reliability. 6 diagnostic areas with structured Check/Finding output. Produces prioritized findings by severity and recommends next skills to run. Catches common eval pitfalls before they corrupt your metrics. Triggers on: "eval audit", "audit evals", "evaluation audit", "check eval pipeline", "eval health"
.claude/skills/miosa-osa-eval-audit/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -13% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 2021% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 32% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 45% | 0% |
> Audit an LLM evaluation pipeline for correctness and reliability.
Systematically audit an LLM evaluation pipeline across 6 diagnostic areas: data quality, metric validity, judge reliability, coverage gaps, statistical rigor, and pipeline integrity. Each area produces structured Check/Finding pairs with severity ratings. The audit catches common eval pitfalls — label leakage, metric gaming, distribution mismatch, underpowered samples, and judge bias — before they corrupt decision-making. Outputs prioritized recommendations and suggests follow-up skills.
bash# Full audit of an eval pipeline /eval-audit --pipeline evals/ # Audit specific diagnostic area /eval-audit --pipeline evals/ --area judge-reliability # Audit with custom severity threshold /eval-audit --pipeline evals/ --min-severity major # Audit from eval config file /eval-audit --config evals/config.yaml # Quick scan (skip deep statistical checks) /eval-audit --pipeline evals/ --quick
| Flag | Type | Default | Description | |------|------|---------|-------------| | --pipeline | string | required | Path to evaluation pipeline directory | | --config | string | — | Path to eval config file (alternative to --pipeline) | | --area | enum | all | Diagnostic area: data, metrics, judges, coverage, statistics, integrity, all | | --min-severity | enum | minor | Minimum severity to report: critical, major, minor | | --quick | flag | false | Quick scan (skip computationally expensive checks) | | --output | string | stdout | Write report to file | | --format | enum | markdown | Output format: markdown, json |
/eval-audit --pipeline evals/summarization/
## Eval Audit — evals/summarization/
### Area 1: Data Quality
| Check | Finding | Severity |
|-------|---------|----------|
| Label balance | 73% positive, 27% negative — skewed | MAJOR |
| Duplicates | 12 duplicate entries found (4.8%) | MINOR |
| Staleness | 40% of examples from pre-2024 data | MAJOR |
| Leakage | No leakage detected | PASS |
### Area 3: Judge Reliability
| Check | Finding | Severity |
|-------|---------|----------|
| Position bias | Judge prefers response A 61% of the time | CRITICAL |
| Verbosity bias | Longer responses scored 0.8 points higher on average | MAJOR |
| Human agreement | Cohen's kappa = 0.42 (moderate) — below 0.6 threshold | MAJOR |
### Recommendations
1. [CRITICAL] Fix position bias — use `/validate-evaluator` to calibrate
2. [MAJOR] Rebalance dataset — use `/synthetic-data` to generate minority class
3. [MAJOR] Update stale examples — 40% of eval data predates current model behaviormarkdown## Eval Audit Report ### Pipeline: <path> ### Date: <date> ### Overall Health: RED | YELLOW | GREEN ### Findings Summary - Critical: N - Major: N - Minor: N - Passing checks: N ### [Diagnostic Area Sections with Check/Finding tables...] ### Recommended Next Skills 1. `/validate-evaluator` — Calibrate judge against human labels 2. `/synthetic-data` — Generate balanced eval data 3. `/error-analysis` — Deep-dive on failure patterns ### Priority Actions 1. [Action + owner + deadline suggestion] 2. ...
/validate-evaluator — Recommended follow-up for judge issues/synthetic-data — Recommended follow-up for data gaps/error-analysis — Recommended follow-up for failure patterns--quick mode)| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 36,985 | 34,332 | -7% | 1 | 1 | 0% | 6,668 | 6,528 | -2% | 0 | 0 | — |
case-02 | fail→pass | 24,523 | 14,181 | -42% | 1 | 1 | 0% | 4,304 | 3,755 | -13% | 0 | 0 | — |
case-03 | fail→fail | 32,874 | 15,405 | -53% | 1 | 1 | 0% | 5,551 | 3,992 | -28% | 0 | 0 | — |
case-04 | fail→pass | 4,882 | 30,896 | +533% | 1 | 1 | 0% | 314 | 6,659 | +2021% | 0 | 0 | — |
case-05 | pass→pass | 45,603 | 53,179 | +17% | 1 | 1 | 0% | 8,242 | 9,426 | +14% | 0 | 0 | — |
case-06 | fail→fail | 5,976 | 6,376 | +7% | 1 | 1 | 0% | 1,086 | 1,518 | +40% | 0 | 0 | — |
case-07 | fail→fail | 8,750 | 3,047 | -65% | 1 | 1 | 0% | 1,453 | 1,737 | +20% | 0 | 0 | — |
case-08 | pass→pass | 16,051 | 2,600 | -84% | 1 | 1 | 0% | 2,893 | 1,610 | -44% | 0 | 0 | — |
case-09 | pass→pass | 13,931 | 2,205 | -84% | 1 | 1 | 0% | 2,487 | 1,568 | -37% | 0 | 0 | — |
case-10 | fail→pass | 6,822 | 2,809 | -59% | 1 | 1 | 0% | 1,255 | 1,658 | +32% | 0 | 0 | — |
case-11 | pass→pass | 12,373 | 2,625 | -79% | 1 | 1 | 0% | 1,799 | 1,633 | -9% | 0 | 0 | — |
case-12 | fail→fail | 15,277 | 13,693 | -10% | 1 | 1 | 0% | 2,460 | 3,411 | +39% | 0 | 0 | — |
case-13 | fail→pass | 17,091 | 16,510 | -3% | 1 | 1 | 0% | 2,540 | 3,694 | +45% | 0 | 0 | — |
case-14 | pass→pass | 17,032 | 16,516 | -3% | 1 | 1 | 0% | 2,747 | 3,946 | +44% | 0 | 0 | — |
case-15 | pass→pass | 15,734 | 11,399 | -28% | 1 | 1 | 0% | 2,616 | 2,914 | +11% | 0 | 0 | — |
case-16 | pass→pass | 26,826 | 20,579 | -23% | 1 | 1 | 0% | 4,597 | 4,500 | -2% | 0 | 0 | — |
case-17 | pass→pass | 18,418 | 21,110 | +15% | 1 | 1 | 0% | 3,084 | 4,283 | +39% | 0 | 0 | — |
case-18 | pass→pass | 12,271 | 3,332 | -73% | 1 | 1 | 0% | 2,000 | 1,682 | -16% | 0 | 0 | — |
case-19 | pass→fail | 16,707 | 15,570 | -7% | 1 | 1 | 0% | 2,760 | 3,732 | +35% | 0 | 0 | — |
case-20 | fail→pass | 16,380 | 5,008 | -69% | 1 | 1 | 0% | 3,069 | 2,130 | -31% | 0 | 0 | — |
case-21 | fail→pass | 8,970 | 3,512 | -61% | 1 | 1 | 0% | 1,366 | 1,661 | +22% | 0 | 0 | — |
case-22 | fail→pass | 39,715 | 2,034 | -95% | 1 | 1 | 0% | 3,040 | 1,464 | -52% | 0 | 0 | — |
case-23 | fail→pass | 8,746 | 1,886 | -78% | 1 | 1 | 0% | 1,533 | 1,417 | -8% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 21 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +35 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.