
Build Loop
Generic make-something procedure: scope the work and lock concrete acceptance criteria, build it, evaluate the result against those criteria, and loop back to building until every criterion is met — then finish. The fallback structure when no domain-specific craftbook fits.
Steps
Entry step: build. Each step names the specialist role it wants; the full working prompt is expandable.
- Builddeveloperentry
Lock concrete acceptance criteria, then build the deliverable to meet them. The workflow advances to Evaluate automatically when the deliverable lands.
Show working prompt
**Two things, in order.** 1. **Lock the bar.** Write an **acceptance-criteria checklist** to task notes via `write_task_note` — 4-8 concrete, checkable statements that define "good enough" (e.g. "clicking Start begins play", "score increments on a hit", "page loads with no console error"). This is the contract Evaluate grades against; without it the loop has no target. 2. **Build it.** Create the real deliverable with your file-writing capability, to satisfy every criterion. For a web build that's `index.html` (inline CSS + JS, no build step). On a loop-back from Evaluate, read the gaps in notes and fix ONLY those — don't regress criteria that already passed. **Advancing:** the workflow moves you to Evaluate automatically when you actually WRITE `index.html` this turn — you do NOT need to call `advance_task_step`. On a loop-back, narrating the gaps is not enough: the step holds until you make a real edit to `index.html`. For any other deliverable path, write the file, then call `advance_task_step({ ref, stepId: "build", next: "evaluate" })` yourself. - Evaluatereviewer
Grade the deliverable against EVERY acceptance criterion. All pass → finish. Any fail → write the gaps and loop back to Build.
Show working prompt
**You are the gate. Judge, then route — do not build here.** 1. `read_task_notes({ ref })` for the acceptance-criteria checklist + the deliverable path. 2. Open the deliverable and check it against each criterion (exercise it in a browser/with a test capability if the project has one — don't grade from source alone when you can observe behavior). Write a PASS/FAIL per criterion to notes. Then route: - **Every criterion PASSES →** `advance_task_step({ ref, stepId: "evaluate", next: "finish" })`. - **Any criterion FAILS →** write the specific gaps to notes, then `advance_task_step({ ref, stepId: "evaluate", next: "build" })` to loop back. Never route to `finish` with an unmet criterion — under-delivering is the failure this gate exists to catch. After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in. - Finishdeveloper
All acceptance criteria met. Stamp a short summary and report DONE.
Show working prompt
Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.
Source
View this craftbook on GitHub · MIT license