← All craftbooks

Build Loop

Build: software and codeevalv1.0.0released 2026-06-05workflow: 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.

  1. 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.
  2. 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.
  3. 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