Eval Runner
Run eval scenarios locally and iterate skill fixes until the 95% threshold is met.
Tool Split
| Tool | Use for |
|---|---|
./bin/openkata-eval |
Scoring (runs locally, same model as users) |
tessl skill review --optimize |
Instruction polish after passing |
tessl eval run |
NOT used — model mismatch makes results unreliable |
Workflow
Identify the skill — Determine which skill from the user's request. Resolve path (skills//).
Check evals exist — Verify
skills/<name>/evals/has scenario directories. If missing, activate thecreate-evalsskill first.Build the runner —
make eval-localbuilds the binary automatically if missing.Run evals — Execute:
./bin/openkata-eval skills/<name>The overall average must be 95% or above.
Report — If passing (95%+), report the score. If failing, report which scenarios/criteria failed with reasons, and suggest specific SKILL.md fixes.
Fix and retry — If the user confirms fixes, apply them to SKILL.md, then re-run. Iterate until 95%+.
Optimize — Once passing locally, run:
tessl skill review --optimize skills/<name>Apply any worthwhile suggestions, re-run local evals to confirm no regression.
Commit — Stage changes and commit.
Single Scenario Debugging
To iterate on one failing scenario without running all:
./bin/openkata-eval skills/<name>/evals/scenario-X
Single scenario mode always exits 0 (debug tool).
Boundaries
- DOES run evals, suggest and apply SKILL.md fixes
- DOES run tessl optimize for polish after passing
- Does NOT publish, tag, or release
- Does NOT use tessl eval run for scoring
Gotchas
- Only distributable skills (
skills/) have evals - Conversational skills need
"sandbox": falsein scenario.json (no Docker required) - Skills that use tools need
"sandbox": true(default) and Docker running