eval-harness
Use when building, running, or debugging evaluations for LLM or agent components: golden sets, regression evals, LLM-as-judge, rubric scoring…
Skill by KSriki
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/ksriki-eval-harness
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: ml, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/eval-harness
What's inside
- Skill name
eval-harness- Description
- Use when building, running, or debugging evaluations for LLM or agent components: golden sets, regression evals, LLM-as-judge, rubric scoring, human-in-the-loop review gates, or agent trajectory/decision-path evaluation. Triggers on "eval", "judge", "golden set", "the agent got worse", "how do we know the prompt change helped", "HITL", "score the outputs". Do NOT use for deterministic code — that's `run-tests`. Tests assert; evals score.
- License
- MIT
- Instructions
- 184 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Evals: the test suite for non-deterministic components
## When to use this
Any component whose output is **not deterministic** — an LLM call, an agent, an
SLM worker, a retrieval step, a CV model. You cannot `assertEqual` these, but you
absolutely can regression-test them. Evals **are** the tests here, and they get
the same rigor: written as you go, run in CI, block the merge.
**Not this skill if:** the thing under test is deterministic → `run-tests`.
---
## STEP 0 — Make it deterministic first
> **The cheapest eval is the one you don't need.** Before scoring model output,
> check whether the logic could be *in code* instead.
Push as much control flow as possible into deterministic code and reserve the
model for what genuinely needs judgment. Every branch you move out of the model
is a branch you can unit-test for free and never has to be scored again.
Ask: is the model *deciding*, or just *formatting*? If it's routing, validating,
or parsing — that's often code.
---
## STEP 1 — Build the golden set before you tune anything
Without a fixed eval set, "the prompt is better now" is a vibe. This is the
single highest-leverage artifact in the loop.
- **Seed it from reality.** Real inputs, real failures. Every production bug
becomes a golden case — that's how the set earns its coverage.
- **Cover the edges deliberately:** the happy path, the ambiguous case, the
adversarial/injection case, the empty/malformed input, the long input.
- **Freeze it and version it.** 〈`evals/golden/*.jsonl`〉, in git. If the set
moves under you, your regressions are meaningless.
- **Size:** start at 〈20–50〉 cases. Small and honest beats large and synthetic.
```
〈evals/
golden/ # frozen cases, versioned {input, expected|rubric, tags}
judges/ # judge prompts + rubrics
runners/ # execution + scoring
results/ # scored runs, timestamped, committed for trend
run.py〉
```
---
## STEP 2 — Choose the scorer (cheapest that works)
Escalate only when the cheaper one can't express the criterion.
| Scorer | Use when | Notes |
|---|---|---|
| **Exact / regex / schema** | Structured output, valid JSON, required field | Free, instant, no drift — **always try first** |
| **Programmatic check** | Code compiles, SQL runs, tool call is well-formed, output validates | Deterministic and cheap. Prefer over a judge. |
| **Deterministic metric** | Retrieval (recall@k), CV (IoU, mAP), classification (P/R/F1) | Use the real metric, not a judge |
| **LLM-as-judge** | Genuine qualitative judgment — is it faithful, helpful, grounded? | Last resort. It is a *model*, so it has error too. |
| **Human (HITL)** | High-stakes, or you're validating the judge itself | Expensive. Spend it where it counts. |
**Do not reach for a judge when a schema check would do.** That's the most common
waste in eval harnesses.
---
## STEP 3 — LLM-as-judge, done properly
The judge is a component under test too. Treat it as one.
**Rules:**
- **Rubric, not vibes.** Concrete criteria with named levels. "Rate 1–5" without
anchors produces noise.
- **Binary or low-cardinality beats a 1–10 scale.** Models are far more reliable
at "is this grounded in the source: yes/no" than at "7 vs 8."
- **Ask for the reason before the score.** Reasoning-then-verdict is more
reliable than verdict-then-justification.
- **Pairwise > absolute** when comparing two prompt/model versions — "which is
better, A or B" is an easier judgment than scoring each alone.
- **Control position bias** — randomize A/B order; judges favor the first (or
last) slot.
- **A different model than the one under test**, where feasible. Self-judging
inflates.
- **Give the judge a way out** — an explicit "Unknown / not enough information"
verdict. A judge forced to score everything scores noise confidently.
- **One judge per rubric dimension**, isolated — a single judge scoring all
dimensions at once bleeds them into each other (a fluent answer scores
"grounded" better than it should).
**Validate the judge against humans — this is the step people skip.** Score
〈30–50〉 cases by hand, compare to the judge, measure agreement (κ or raw). If the
judge doesn't agree with you, it isn't measuring the thing you care about, and
every number downstream is decoration. Re-validate whenever the rubric changes.
---
## STEP 4 — Human-in-the-loop gates
Decide *deliberately* where a human sits in the loop, and write it down:
| Gate | Where | Blocking? |
|---|---|---|
| **Pre-deploy** | Judge-vs-human agreement on the golden set | Yes — blocks release |
| **Pre-action** | Before an irreversible/expensive agent action (write, send, spend, delete) | Yes |
| **Sampled review** | 〈N%〉 of production traffic, reviewed async | No — feeds the golden set |
| **Escalation** | Low model confidence, or a guardrail fires | Yes, for that request |
**Design rule:** a human gate belongs anywhere the action is **irreversible** —
same penalty-for-being-wrong filter as the design doc. Reversible action, high
confidence → let it run. Irreversible → gate it.
**Every human decision at a gate is a free golden case.** Capture it. That's the
flywheel: the loop generates its own test set.
---
## STEP 5 — Evaluate the trajectory, not just the outputFrom KSriki/agent-harness-template, MIT.
More from KSriki/agent-harness-template
- 0.565score
evolve-harness
KSriki
Use to turn a repeated correction, a recurring failure, or a researched new practice/trend into a durable change to the AGENT LAYER — a new or edited skill…
SkillAFreshness: AClaude Code +9 - 0.524score
grill-me
KSriki
Use to grill the user relentlessly about a plan, decision, or idea — a frontier-batched interview down the design tree (rounds of ready questions, each with a…
SkillBFreshness: BClaude Code +9 - 0.524score
ci-cd
KSriki
Use when setting up or debugging a CI pipeline, adding a workflow or gate, promoting a build through environments, deploying, cutting a versioned release, or…
SkillBFreshness: BClaude Code +9 - 0.524score
observability
KSriki
Use when instrumenting a service (structured logs, metrics, traces), defining SLOs or alerts, building a dashboard, or triaging a live production incident /…
SkillBFreshness: BClaude Code +9 - 0.524score
orchestrate-agents
KSriki
Use to ship a multi-part change by running several agents IN PARALLEL — fan-out across subagents, each isolated in its own git worktree, then verify-and-merge.
SkillBFreshness: BClaude Code +9 - 0.524score
review-pr
KSriki
Use when preparing your own change for review (self-review, commit hygiene, writing the PR description) or when reviewing someone else's pull request for…
SkillBFreshness: BClaude Code +9 - 0.524score
codebase-design
KSriki
Use to design or improve a single MODULE's interface — deciding where a seam goes, making code more testable / AI-navigable, or judging whether a module is…
SkillBFreshness: BClaude Code +9 - 0.524score
prd-to-issues
KSriki
Use to break a plan, spec/PRD, or the current conversation into a set of tracer-bullet tickets — each a narrow-but-complete vertical slice, declaring its…
SkillBFreshness: BClaude Code +9 - 0.520score
graphify
KSriki
Use for STRUCTURE and relationship questions about a codebase/corpus — how X reaches Y, what depends on what, blast radius, architectural hubs — and to build…
SkillBFreshness: BClaude Code +9 - 0.499score
harness-help
KSriki
Use when the user asks how to customize the harness or where something goes: "how do I add a rule / gotcha / skill", "where do I change the gate", "what file…
SkillBFreshness: BClaude Code +9 - 0.474score
run-tests
KSriki
Use when running, writing, debugging, or adding tests; when a test fails; when a CI quality gate fails (SonarQube, coverage threshold, lint, typecheck); or…
SkillCFreshness: CClaude Code +9 - 0.474score
debug-research
KSriki
Use when the answer likely lives OUTSIDE this repo: debugging an error from a library/framework/API, checking whether an SDK signature is current, evaluating…
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Aug 20, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/KSriki/agent-harness-template
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from KSriki
- 0.565score
evolve-harness
KSriki
Use to turn a repeated correction, a recurring failure, or a researched new practice/trend into a durable change to the AGENT LAYER — a new or edited skill…
SkillAFreshness: AClaude Code +9 - 0.524score
grill-me
KSriki
Use to grill the user relentlessly about a plan, decision, or idea — a frontier-batched interview down the design tree (rounds of ready questions, each with a…
SkillBFreshness: BClaude Code +9 - 0.524score
review-pr
KSriki
Use when preparing your own change for review (self-review, commit hygiene, writing the PR description) or when reviewing someone else's pull request for…
SkillBFreshness: BClaude Code +9 - 0.524score
observability
KSriki
Use when instrumenting a service (structured logs, metrics, traces), defining SLOs or alerts, building a dashboard, or triaging a live production incident /…
SkillBFreshness: BClaude Code +9 - 0.524score
orchestrate-agents
KSriki
Use to ship a multi-part change by running several agents IN PARALLEL — fan-out across subagents, each isolated in its own git worktree, then verify-and-merge.
SkillBFreshness: BClaude Code +9 - 0.524score
ci-cd
KSriki
Use when setting up or debugging a CI pipeline, adding a workflow or gate, promoting a build through environments, deploying, cutting a versioned release, or…
SkillBFreshness: BClaude Code +9
Cite this page
eval-harness skill. Agent Mart. https://agentmart.dev/skills/ksriki-eval-harness (last updated 2026-10-24)