Evalpilot
Skill avnath13/evalpilot
Run the full agent-eval quality flywheel on autopilot from a goal in evalpilot.config.yaml, prepare an eval set from traces or synthetic scenarios, run inference, grade with autoraters and custom rubrics, cluster the failures, ship a targeted fix, and loop until quality targets are met. Use whenever the user wants to evaluate, benchmark, find quality bugs in, or improve an AI agent, chatbot, or LLM app, including "eval my agent", "why is my agent wrong", or "prove this fix worked".From its SKILL.md
npx -y skills add avnath13/evalpilotAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.1 KB, 958 tokens by cl100k_base, as published. Nobody here has run it
EvalPilot: the autopilot orchestrator
You run the quality flywheel end to end. The user describes the goal; you run the loop.
Agent evaluation measures a policy, does the agent reliably achieve goals across diverse, long-horizon trajectories, not the quality of a single generation. Grade the whole trace (tool calls, retrievals, steps), not just the final string.
0. Load and validate
- Read
evalpilot.config.yaml. Validate againstevalpilot/schemas/evalconfig.schema.json. If it is missing, scaffold one from the template and ask the user to fillgoal,targets, andagent_under_test, then stop. - Create
.evalpilot/for runtime state if absent. Never commit it.
1. Decide the plan (which stages to run)
data.source = traces→ run stage ①(distill) then skip stage ② for any case with asource_trace_id(the "skip if traces exist" edge).data.source = synthetic(or no traces exist) → invoke user-simulator first to bootstrapscenarios.jsonl, then stage ①.data.otel_endpointset → this is the production loop: hand off to production-monitor (grades in place, skips ① and ②).
2. Split the eval set (no overfitting)
Split cases into train / dev / test. The optimizer may see train+dev; test certifies
, the fix is never derived from it. Keep minimal-pair cases in test. A judge's few-shot
examples must never appear in dev/test (leakage). python3 -m evalpilot does this via
holdout.split3.
3. Run the loop
For iteration in 1..loop.max_iterations:
- prepare-data (iteration 1 only, unless the eval set is stale) →
evalset.jsonl. - run-inference →
runs/<runId>/*.trace.json(skips trace-origin cases; sandbox only). - grade →
runs/<runId>/verdicts.jsonl. Always runs. - validate the judge before trusting scores: TPR/TNR vs human labels, Rogan-Gladen
corrected prevalence (
python3 -m evalpilot validate). A judge below TPR/TNR>0.90 (floor 0.80) does not count toward targets. - analyze-failures → append to
report.md, writeclusters.json(root-cause clusters with afix_kind). - Fix-before-eval gate: if the top cluster's
fix_kindiscode/prompt/tool(an obvious or code-checkable fix), do that directly, do not build another judge. Reserve judges for persistent, high-frequency, high-impact subjective failures. - Compute per-rubric scores on test. Check
targets(met = the CI clears the bar; likely = only the point estimate does; unmet otherwise).- All targets met → stop. Emit final
report.md+compare.md. - Any target unmet and
iteration < max_iterations→ invoke optimize on the top-ranked cluster, then continue.
- All targets met → stop. Emit final
- After each iteration print a one-line status so a human can interrupt.
4. Honesty rules (do not violate)
- Never report a target as met without a grading run whose CI clears the bar.
- Never claim a fix worked without an A/B re-run (
compare: true) certified on test. - Never trust a judge that failed validation (report it, exclude it).
- If a fix regresses another metric, say so and do not silently keep it.
- If you cannot call the agent-under-test, stop and report the wiring problem, do not fabricate traces or verdicts.
Sub-skills you invoke
skills/prepare-data, skills/run-inference, skills/grade,
skills/analyze-failures, skills/optimize, skills/user-simulator,
skills/production-monitor. Each reads/writes a typed artifact (see evalpilot/schemas/), so any
stage can be run standalone if the user asks for just that step.
What ships with it: 84 files
253.2 KB alongside SKILL.md, 28 of them executable
.claude-plugin/
- marketplace.json290 B
- plugin.json336 B
docs/
- DEMO.md5.2 KB
- scorecard.svg3.6 KB
evalpilot/
- analyze.pyruns2.5 KB
- bootstrap.pyruns2.4 KB
- calibrate.pyruns4.6 KB
- catalog.pyruns5.0 KB
- config.pyruns5.7 KB
- grade.pyruns10.3 KB
- holdout.pyruns2.6 KB
- infer.pyruns4.2 KB
- __init__.pyruns411 B
- judge.pyruns5.8 KB
- __main__.pyruns11.0 KB
- optimize.pyruns5.5 KB
- prepare.pyruns6.6 KB
- report.pyruns2.2 KB
- review.pyruns5.1 KB
- rubrics/answer-correctness.rubric.md906 B
- rubrics/answer-relevance.rubric.md1.1 KB
- rubrics/bias.rubric.md802 B
- rubrics/coherence.rubric.md803 B
- rubrics/completeness.rubric.md768 B
- rubrics/conciseness.rubric.md820 B
- rubrics/contains.rubric.md587 B
- rubrics/context-relevance.rubric.md989 B
- rubrics/correctness.rubric.md1.0 KB
- rubrics/exact-match.rubric.md599 B
- rubrics/faithfulness.rubric.md1.2 KB
- rubrics/hallucination.rubric.md924 B
- rubrics/helpfulness.rubric.md782 B
- rubrics/instruction-following.rubric.md1.2 KB
- rubrics/jailbreak-resistance.rubric.md1.1 KB
- rubrics/json-format.rubric.md941 B
- rubrics/latency.rubric.md544 B
- rubrics/no-error.rubric.md491 B
- CASE_STUDY.md9.6 KB
- DESIGN.md17.7 KB
- evalpilot.config.yaml2.2 KB
44 more files not listed here. See all 84 in the repository.