Eval
Eval-Driven Development (EDD) for AI workflows. pass@k metrics, capability evals, regression evals. Triggers: eval, edd, pass@k, capability, regression, benchmark.From its SKILL.md
npx -y skills add ariaxhan/kernel-claude --skill evalAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 12 stars12 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.7 KB, as published. Nobody here has run it
<core_principles>
- DEFINE BEFORE CODE: Evals written first force clear thinking about success criteria.
- CODE GRADERS > MODEL GRADERS: Deterministic checks beat probabilistic judgments.
- STRUCTURAL SEPARATION FOR HIGH-STAKES: When stakes are real (security, payments, eval-of-evals, agent quality scoring), use the blind-evaluator agent — never self-score. Self-scoring inflates results ~36% structurally; procedural separation ("I won't peek") does not fix it.
- TRACK PASS@K: pass@1 (first attempt), pass@3 (within 3 attempts). Target pass@3 > 90%.
- REGRESSION BEFORE SHIP: Every change must pass existing evals before merge.
- FAST EVALS GET RUN: Slow evals get skipped. Keep evaluation fast. </core_principles>
<blind_evaluation_protocol> Use when implementing agent would otherwise score its own output (high-stakes: security, payments, agent quality):
- Spawn
agents/blind-evaluator.mdas a fresh agent. - Pass ONLY: problem statement, rubric (3-7 criteria with PASS conditions + weights), artifact path.
- Do NOT pass: implementer's checkpoint, summary, commit message, prompt, or expected solution.
- (gate: blind evaluator runs contamination check — if forbidden inputs detected, returns INVALID; clean inputs and retry)
- (gate: confidence < 0.7 from blind evaluator → escalate to human grader)
Two-phase eval protocol:
- Run 1: implementing agent solves cold, no eval feedback. Blind evaluator scores. This is the externally-reportable number.
- Run 2: implementing agent gets Run 1 score + rubric breakdown, then optimizes. For iteration only. </blind_evaluation_protocol>
pass^k: "All k trials succeed"
- pass^3: 3 consecutive successes
- Use for critical paths (auth, payments)
See reference for calculation formula and worked examples. </metrics>
<grader_selection>
- Code-based (preferred): grep, test suite, build, type-check — deterministic, fast.
- Model-based: for open-ended outputs that can't be checked deterministically. Run multiple times, take majority.
- Human: required for security-sensitive changes, UX evaluation, legal/compliance.
See reference for full grader templates and examples. </grader_selection>
<anti_patterns> <block id="eval_after_code">Writing evals after implementation tests existing bugs, not requirements.</block> <block id="model_grader_overuse">Model-based grading is slow and probabilistic. Prefer code graders.</block> <block id="skip_regression">Every change must pass regression evals. No exceptions.</block> <block id="slow_evals">Evals that take > 30s get skipped. Keep them fast.</block> <block id="no_tracking">Track pass@k over time. Declining reliability is a signal.</block> <block id="self_score">For any user-facing or high-stakes eval, the implementing agent scoring its own work inflates results ~36%. Spawn blind-evaluator instead.</block> <block id="post_merge_eval">Evaluating against a codebase that already contains the canonical solution = answer key in the eval set. Use pre-merge snapshots or a separate fixture.</block> <block id="greenfield_in_golden_dataset">Greenfield tickets in the golden eval set collapse to self=10, blind=3. Greenfields are not evaluable as solved tasks — exclude them from the dataset.</block> <block id="context_breadth_before_baseline">Optimizing how much context the evaluator gets before establishing a baseline score = can't distinguish signal from noise. Run minimal-context baseline first, then test additions one at a time.</block> </anti_patterns>
<on_complete> agentdb write-end '{"skill":"eval","eval_type":"capability|regression","pass_at_1":"<X%>","pass_at_3":"<Y%>","failures":["<list>"]}'
Record eval type, pass rates, and any failures for future reference. </on_complete>
</skill>