eval-harness
affaan-m/ecc
Formal evaluation framework for Claude Code sessions using eval-driven development (EDD) principles
What is eval-harness?
Eval Harness implements eval-driven development by defining pass/fail criteria before implementation, then measuring agent reliability with pass@k metrics. Use it to set up regression test suites, benchmark agent performance across model versions, and track reliability trends in AI-assisted workflows.
- Define capability and regression evals before coding to clarify success criteria
- Run code-based, model-based, and human graders to evaluate task completion
- Track pass@k and pass^k metrics to measure agent reliability over time
- Generate eval reports showing pass rates and regression status
- Store eval definitions and run history in version-controlled `.claude/evals/` directory
- Integrate eval checks into development workflow with `/eval define`, `/eval check`, and `/eval report` commands
How to install eval-harness
npx skills add null --skill eval-harnessHow to use eval-harness
- 1.Define evals before implementation by creating a `.claude/evals/feature-name.md` file with capability and regression eval criteria
- 2.Write success criteria as checklists and specify expected outputs for each eval
- 3.Choose grader types: code-based (deterministic checks), model-based (LLM-as-judge), or human-based (manual review)
- 4.Run evals during development using `/eval check feature-name` to track progress
- 5.Generate eval reports with `/eval report feature-name` showing pass rates and pass@k metrics
- 6.Store eval definitions and run logs in version control alongside code for regression tracking
Use cases
- Setting up eval-driven development for a new Claude Code feature before writing implementation code
- Creating regression test suites to ensure prompt or agent changes don't break existing functionality
- Benchmarking Claude's performance across different model versions using consistent eval criteria
- Measuring pass@3 reliability for critical authentication or security features
- Tracking eval metrics over time to identify performance regressions early in development
- AI development teams implementing eval-driven workflows
- Prompt engineers measuring agent reliability across iterations
- Engineering teams benchmarking Claude Code performance
- QA roles defining and tracking success criteria for AI-assisted tasks
- Teams managing release gates with eval-based quality thresholds
eval-harness FAQ
pass@k means "at least one success in k attempts" (e.g., pass@3 = success within 3 tries), while pass^k means "all k trials succeed" (e.g., pass^3 = 3 consecutive successes). Use pass@k for capability evals and pass^k for critical regression paths.
Use code graders (deterministic checks like grep, tests, build commands) when possible because they're reliable and fast. Use model graders only for open-ended outputs that can't be checked deterministically, and flag ambiguous cases for human review.
Define evals before coding, run them continuously during development with `/eval check`, and gate releases on eval reports showing pass@3 ≥ 90% for capability evals and pass^3 = 100% for regression evals on critical paths.
Store evals in `.claude/evals/feature-name.md` for definitions, `.claude/evals/feature-name.log` for run history, and `docs/releases/<version>/eval-summary.md` for release snapshots. Version evals with code as first-class artifacts.
Yes, eval-driven development applies to any task where you can define clear success criteria. Use model graders or human graders for subjective outputs, and track pass@k metrics the same way.
Full instructions (SKILL.md)
Source of truth, from affaan-m/ecc.
name: eval-harness description: Formal evaluation framework for Claude Code sessions implementing eval-driven development (EDD) principles metadata: origin: ECC tools: Read, Write, Edit, Bash, Grep, Glob
Eval Harness Skill
A formal evaluation framework for Claude Code sessions, implementing eval-driven development (EDD) principles.
When to Activate
- Setting up eval-driven development (EDD) for AI-assisted workflows
- Defining pass/fail criteria for Claude Code task completion
- Measuring agent reliability with pass@k metrics
- Creating regression test suites for prompt or agent changes
- Benchmarking agent performance across model versions
Philosophy
Eval-Driven Development treats evals as the "unit tests of AI development":
- Define expected behavior BEFORE implementation
- Run evals continuously during development
- Track regressions with each change
- Use pass@k metrics for reliability measurement
Eval Types
Capability Evals
Test if Claude can do something it couldn't before:
[CAPABILITY EVAL: feature-name]
Task: Description of what Claude should accomplish
Success Criteria:
- [ ] Criterion 1
- [ ] Criterion 2
- [ ] Criterion 3
Expected Output: Description of expected result
Regression Evals
Ensure changes don't break existing functionality:
[REGRESSION EVAL: feature-name]
Baseline: SHA or checkpoint name
Tests:
- existing-test-1: PASS/FAIL
- existing-test-2: PASS/FAIL
- existing-test-3: PASS/FAIL
Result: X/Y passed (previously Y/Y)
Grader Types
1. Code-Based Grader
Deterministic checks using code:
# Check if file contains expected pattern
grep -q "export function handleAuth" src/auth.ts && echo "PASS" || echo "FAIL"
# Check if tests pass
npm test -- --testPathPattern="auth" && echo "PASS" || echo "FAIL"
# Check if build succeeds
npm run build && echo "PASS" || echo "FAIL"
2. Model-Based Grader
Use Claude to evaluate open-ended outputs:
[MODEL GRADER PROMPT]
Evaluate the following code change:
1. Does it solve the stated problem?
2. Is it well-structured?
3. Are edge cases handled?
4. Is error handling appropriate?
Score: 1-5 (1=poor, 5=excellent)
Reasoning: [explanation]
3. Human Grader
Flag for manual review:
[HUMAN REVIEW REQUIRED]
Change: Description of what changed
Reason: Why human review is needed
Risk Level: LOW/MEDIUM/HIGH
Metrics
pass@k
"At least one success in k attempts"
- pass@1: First attempt success rate
- pass@3: Success within 3 attempts
- Typical target: pass@3 > 90%
pass^k
"All k trials succeed"
- Higher bar for reliability
- pass^3: 3 consecutive successes
- Use for critical paths
Eval Workflow
1. Define (Before Coding)
## EVAL DEFINITION: feature-xyz
### Capability Evals
1. Can create new user account
2. Can validate email format
3. Can hash password securely
### Regression Evals
1. Existing login still works
2. Session management unchanged
3. Logout flow intact
### Success Metrics
- pass@3 > 90% for capability evals
- pass^3 = 100% for regression evals
2. Implement
Write code to pass the defined evals.
3. Evaluate
# Run capability evals
[Run each capability eval, record PASS/FAIL]
# Run regression evals
npm test -- --testPathPattern="existing"
# Generate report
4. Report
EVAL REPORT: feature-xyz
========================
Capability Evals:
create-user: PASS (pass@1)
validate-email: PASS (pass@2)
hash-password: PASS (pass@1)
Overall: 3/3 passed
Regression Evals:
login-flow: PASS
session-mgmt: PASS
logout-flow: PASS
Overall: 3/3 passed
Metrics:
pass@1: 67% (2/3)
pass@3: 100% (3/3)
Status: READY FOR REVIEW
Integration Patterns
Pre-Implementation
/eval define feature-name
Creates eval definition file at .claude/evals/feature-name.md
During Implementation
/eval check feature-name
Runs current evals and reports status
Post-Implementation
/eval report feature-name
Generates full eval report
Eval Storage
Store evals in project:
.claude/
evals/
feature-xyz.md # Eval definition
feature-xyz.log # Eval run history
baseline.json # Regression baselines
Best Practices
- Define evals BEFORE coding - Forces clear thinking about success criteria
- Run evals frequently - Catch regressions early
- Track pass@k over time - Monitor reliability trends
- Use code graders when possible - Deterministic > probabilistic
- Human review for security - Never fully automate security checks
- Keep evals fast - Slow evals don't get run
- Version evals with code - Evals are first-class artifacts
Example: Adding Authentication
## EVAL: add-authentication
### Phase 1: Define (10 min)
Capability Evals:
- [ ] User can register with email/password
- [ ] User can login with valid credentials
- [ ] Invalid credentials rejected with proper error
- [ ] Sessions persist across page reloads
- [ ] Logout clears session
Regression Evals:
- [ ] Public routes still accessible
- [ ] API responses unchanged
- [ ] Database schema compatible
### Phase 2: Implement (varies)
[Write code]
### Phase 3: Evaluate
Run: /eval check add-authentication
### Phase 4: Report
EVAL REPORT: add-authentication
==============================
Capability: 5/5 passed (pass@3: 100%)
Regression: 3/3 passed (pass^3: 100%)
Status: SHIP IT
Product Evals (v1.8)
Use product evals when behavior quality cannot be captured by unit tests alone.
Grader Types
- Code grader (deterministic assertions)
- Rule grader (regex/schema constraints)
- Model grader (LLM-as-judge rubric)
- Human grader (manual adjudication for ambiguous outputs)
pass@k Guidance
pass@1: direct reliabilitypass@3: practical reliability under controlled retriespass^3: stability test (all 3 runs must pass)
Recommended thresholds:
- Capability evals: pass@3 >= 0.90
- Regression evals: pass^3 = 1.00 for release-critical paths
Eval Anti-Patterns
- Overfitting prompts to known eval examples
- Measuring only happy-path outputs
- Ignoring cost and latency drift while chasing pass rates
- Allowing flaky graders in release gates
Minimal Eval Artifact Layout
.claude/evals/<feature>.mddefinition.claude/evals/<feature>.logrun historydocs/releases/<version>/eval-summary.mdrelease snapshot
Related skills
More from affaan-m/ecc and the wider catalog.
everything-claude-code
Development conventions and patterns for the everything-claude-code JavaScript project.
everything-claude-code-conventions
Development conventions and patterns for the everything-claude-code JavaScript project.
evm-token-decimals
Prevent silent decimal mismatch bugs across EVM chains with runtime lookup and chain-aware caching.
exa-search
Neural search via Exa MCP for web, code, companies, and people research.
fal-ai-media
Generate images, videos, and audio with fal.ai models via MCP.
fastapi-patterns
Production-grade FastAPI patterns: project structure, Pydantic v2, dependency injection, async handlers, auth, and testing.