eval-spec-vs-build
Compare a recorded run's app against the spec snapshot it was built from.
Spec fidelity only. Course alignment is /eval-materials-vs-build.
Steps
- Verify cwd is a course folder. Confirm
spec.md,materials/,builds/,evals/exist. Refuse otherwise: "Run /eval-spec-vs-build from inside a course folder." - Require a run. If
$ARGUMENTSis empty:
List those runs and ask the user: "Which run should I evaluate? Pick one — I won't default to the latest." Stop until they answer.ls -1 builds/ 2>/dev/null | grep -E '^run-[0-9]+$' | sort - Validate the run. Confirm
evals/$ARGUMENTS/spec.md(the snapshot) exists andbuilds/$ARGUMENTS/is a non-empty directory. Refuse otherwise. The report reflects whatever the build folder contains — evaluating an in-progress run is fine; just re-run after the build finishes for a clean score. - Read the inputs.
- Snapshot spec:
evals/$ARGUMENTS/spec.md(NOT the top-levelspec.md— that may have been regenerated since this run). - Build: walk
builds/$ARGUMENTS/(skip node_modules, .venv, dist, build, .git, and anything matching its own .gitignore).
- Snapshot spec:
- Produce the report at
evals/$ARGUMENTS/spec-vs-build.mdwith sections:- Summary — one-paragraph verdict.
- Coverage matrix — each spec section → present / partial / missing,
with file references into
builds/$ARGUMENTS/. - Divergences — things the build did that the spec did not specify.
- Missing — things the spec specified that the build did not do.
- Score — your judgment on a 0–10 scale, with reasoning.
- Report the path written, then hand off. After echoing the report path, tell the user: "Spec-fidelity report written. The companion eval is /eval-materials-vs-build $ARGUMENTS — different reference, different question (course alignment, not spec fidelity). Say 'go ahead' to run it next, or skip if you've already done it."
Don't
- Don't read
materials/— that's the other eval. Mixing them defeats the point of having two. - Don't read the top-level
spec.md— always the per-run snapshot. - Don't pick a default run. List the runs in
builds/and ask the user which one.