Skill Eval
Evaluate whether one skill improves the produced work. Do not award credit for headings, claimed procedure, or a report that merely looks complete.
Input
Require:
- exactly one
target: <INDEX name>orsubject_path: <path>; phase: calibrate | verify;- one
surfacewithadapter: codex | claude-code | cursor | opencode | clineand an exact model name; evals/evals.jsonand a resolvable old-skill or no-skill baseline.
Hash the complete subject package with scripts/hash-skill-package.mjs. Every
terminal result belongs only to that hash. If the package changes, re-run the
evaluation.
Safety
Keep the subject read-only. Run file-changing tasks only in disposable copies
below .skill-eval-runs/. Mock consequential boundaries such as
push, PR/issue creation, payments, migrations, or production services. If a
safe fixture is unavailable, return INCONCLUSIVE.
Do not edit the subject, commit, push, install globally, or contact live external systems.
Run
Read references/run-protocol.md, then:
- Validate the eval definition.
- For every case, create separate baseline and subject workspaces.
- Run both with the same prompt, fixture, adapter, model, permissions, and limits. Start each in a clean session.
- Use
scripts/run-harness-eval.mjs --adapter <id> .... The adapter only translates the common run into a harness command and parses its output. - Judge mechanical assertions with deterministic checks. Judge semantic quality by a blind comparison of the two produced artifacts. Store a short evidence file for every assertion and grade.
- In verify phase, build the result described in
references/evidence-contract.md and run
scripts/compute-eval-verdict.mjsagainst the current subject path.
Never compare token counts between different adapters or models. Missing token
telemetry is unavailable, not guessed and not automatically inconclusive;
artifact quality can still prove lift. Duration is reported but does not prove
lift by itself.
Calibration
Run the pairs and propose assertions, but do not issue a terminal verdict. Reject assertions that also pass on a clearly wrong artifact. A human or a separate reviewer approves the assertion set before it is added to the draft.
Trigger check
The MVP derives the trigger requirement from the package: explicit-only skills
do not require an automatic-activation check; implicit skills do. Native
trigger-trace verification is not implemented yet, so an implicit skill cannot
receive terminal PASS from this MVP. Record it as NOT_RUN and return
INCONCLUSIVE instead of trusting a claimed trigger result. Cursor also uses
explicit prompt context rather than native skill loading.
Verdict
PASS: all assertions pass, no artifact regresses, required trigger checks pass, and at least one artifact grade or observed token comparison is better than baseline.FAIL: an assertion, scope boundary, trigger check, or artifact grade fails or regresses.NO_LIFT: both configurations pass but the subject adds no measured value.INCONCLUSIVE: baseline, current hash, safe execution, required trigger, run trace, assertion evidence, or grade evidence is missing or inconsistent.
FAIL, NO_LIFT, and INCONCLUSIVE do not justify accepting or
committing the revision.
Stop
Return one calibration artifact or one terminal verdict and stop. Evaluation does not authorize fixing, committing, or accepting the result on the human's behalf.