Skill Tracer
Skills › BMAD Method › bmad-toolsmith › eval-loop.md

eval-loop.md

27 lines · skills/bmad-toolsmith/approaches/eval-loop.md at bd70c64

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Eval loop
2
3The shared loop that `approaches/eval-first.md` and `approaches/skill-creator-loop.md` load after their own opening. Its outcome: a skill whose cases pass because of what the skill adds, with the evidence on record. Every run here is "invoke the `bmad-eval` skill" on `{target}`; this file never runs a skill itself.
4

Eval loop

The shared loop that approaches/eval-first.md and approaches/skill-creator-loop.md load after their own opening. Its outcome: a skill whose cases pass because of what the skill adds, with the evidence on record. Every run here is "invoke the bmad-eval skill" on {target}; this file never runs a skill itself.

Raw lines 1 to 4
Names a skill bmad-eval :3
5## Cases
6
7Cases live at `{target}/evals/cases.json` as `{id, input, rubric[], state_prefix, files[]}`. Seed them from real requests and transcripts before inventing any, because invented cases come out homogeneous and easy. Two or three realistic, messy inputs to start, with no rubric yet. A `state_prefix` places a case mid-flow without a multi-turn harness.
8

Cases

Cases live at {target}/evals/cases.json as {id, input, rubric[], state_prefix, files[]}. Seed them from real requests and transcripts before inventing any, because invented cases come out homogeneous and easy. Two or three realistic, messy inputs to start, with no rubric yet. A state_prefix places a case mid-flow without a multi-turn harness.

Raw lines 5 to 8
9## One round
111. Run with and without. Invoke the `bmad-eval` skill in baseline mode, so the skill and the bare model see the same inputs in parallel. Runs land in bmad-eval's reports folder, by default `{output_folder}/eval-reports`; bmad-eval writes them.
122. Write the rubric after the first outputs. Each entry is binary and names one failure mode you saw; prefer graders computed from the transcript and files, and keep a model judge for short outputs only, per the `bmad-eval` skill's eval-format reference. An assertion that passes in both arms tests nothing the skill adds: sharpen it or drop it.
133. Grade. Three runs per case, because output varies run to run. Invoke the `bmad-eval` skill in quality mode for the rubric and read the delta between arms, never the with-skill score alone.
144. Read the transcripts, not just the grades. Several approaches tried before one works: an instruction is too vague. An instruction followed where it does not apply: too broad. Stalling between alternatives: no default named. The same helper rewritten every run: bundle a script.
155. Change one thing, with its why, and cut any line whose removal did not change results.
166. Rerun. A variant run (invoke the `bmad-eval` skill in variant mode against the prior snapshot) says whether the change, not chance, moved the score.

One round

  1. Run with and without. Invoke the bmad-eval skill in baseline mode, so the skill and the bare model see the same inputs in parallel. Runs land in bmad-eval's reports folder, by default {output_folder}/eval-reports; bmad-eval writes them.
  2. Write the rubric after the first outputs. Each entry is binary and names one failure mode you saw; prefer graders computed from the transcript and files, and keep a model judge for short outputs only, per the bmad-eval skill's eval-format reference. An assertion that passes in both arms tests nothing the skill adds: sharpen it or drop it.
  3. Grade. Three runs per case, because output varies run to run. Invoke the bmad-eval skill in quality mode for the rubric and read the delta between arms, never the with-skill score alone.
  4. Read the transcripts, not just the grades. Several approaches tried before one works: an instruction is too vague. An instruction followed where it does not apply: too broad. Stalling between alternatives: no default named. The same helper rewritten every run: bundle a script.
  5. Change one thing, with its why, and cut any line whose removal did not change results.
  6. Rerun. A variant run (invoke the bmad-eval skill in variant mode against the prior snapshot) says whether the change, not chance, moved the score.
Raw lines 9 to 17
Names a skill bmad-eval :11
18## When to stop
20- Every grader passes three runs: done.
21- The user says it is good enough: done, and tell them which cases still fail.
22- Two rounds move nothing: the cases are the problem, not the words. Re-examine them for weak assertions, inputs too tidy to fail, or a rubric grading what the bare model already does.
23- The with-skill arm loses to the bare model and stays behind: the model has caught up. Say so plainly and propose retiring the skill, not patching it.

When to stop

  • Every grader passes three runs: done.
  • The user says it is good enough: done, and tell them which cases still fail.
  • Two rounds move nothing: the cases are the problem, not the words. Re-examine them for weak assertions, inputs too tidy to fail, or a rubric grading what the bare model already does.
  • The with-skill arm loses to the bare model and stays behind: the model has caught up. Say so plainly and propose retiring the skill, not patching it.
Raw lines 18 to 24
25## The honest check
27Before leaving the loop, say in one line what the cases do not cover and whether any assertion passed for a trivial reason. A passing run on easy cases is not proof; the user decides whether to add harder ones.

The honest check

Before leaving the loop, say in one line what the cases do not cover and whether any assertion passed for a trivial reason. A passing run on easy cases is not proof; the user decides whether to add harder ones.

Raw lines 25 to 27