← All craftbooks

Page Spread

Media: imagesevalv1.0.1released 2026-07-26workflow: build-loop

Produce one page spread from script to panels: beats planned, panel art generated against the character sheets — never freehand from memory — lettered and laid out as the page the reader turns to. Locks the panel plan FIRST — each panel naming the sheet references that anchor it and the caption text it carries — then generates the panels from those anchors, then assembles the lettered spread. Use for producing a comic page, 'let's do page three', panel-and-letter passes, turning a script page into art, and the per-page ritual of a whole book.

Steps

Entry step: scope. Each step names the specialist role it wants; the full working prompt is expandable.

  1. Plan the panelsverhalenvertellerentry

    script beats to panels, each anchored to a character sheet

    Show working prompt
    Break the page before generating a pixel. Step 1: read the page's script from the story notes and the character kits under characters/ — each character's manifest carries the references, seeds, and prompts that lock their look. Step 2: break the script into beats and assign each beat a panel — the moment, the framing, and who is in frame. Step 3: for every character in every panel, name the exact sheet reference (and its seed and prompt from the manifest) that anchors how they are drawn — a panel drawn from memory instead of the sheet is how page twelve stops matching page one. Step 4: copy the caption and balloon text for each panel verbatim from the script — the letterer changes nothing. Step 5: write an acceptance-criteria checklist ('every script beat has a panel', 'every figure anchored to a named sheet reference', 'captions and balloons verbatim from the script', 'panels read in order on the assembled page'). Call write_task_note with the panel count + checklist and write notes/scope.md.
  2. Generate the panelsimage-generator

    panel art from the sheet anchors, never from memory

    Show working prompt
    Generate the page's panels into pages/<number>/ (the folder named for the page). Step 1: for each planned panel, build the generation prompt FROM the anchors — start from the sheet reference's persisted prompt and seed out of the character's manifest, then add the panel's moment and framing; the sheet is the source of truth for how every character looks. Step 2: generate through the project's image capabilities, at least three panels, saved as pages/<number>/panel-1.png, panel-2.png, and so on in reading order. Step 3: after each panel, check it against the plan — right characters, right moment, silhouette and palette matching the sheet; regenerate what drifted before moving on. Call write_task_note with the panel count and which sheet references anchored each. The gate counts the actual image files under `pages/` — a panel that was planned but never rendered does not count, and neither does a placeholder file with an image name. If a generation call fails, say so and retry it; do not move on to assembly with panels missing.
  3. Assemble the spreaddesigner

    panels laid in reading order, captions and balloons lettered

    Show working prompt
    Assemble the page at pages/<number>/spread.html. Step 1: lay the panels in reading order with honest gutters — the eye should never wonder which panel is next. Step 2: letter it — the captions and balloon text from the plan, verbatim from the script, placed with the panel they belong to, tails pointing at the speaker. Step 3: style it as a page — panel borders, gutter rhythm, type that reads at page size, all in one self-contained file. Step 4: read the finished page top to bottom once as a reader would and fix anything that stumbles. Call write_task_note with the spread path and the panel order.
  4. Evaluatereviewer

    Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.

    Show working prompt
    Open the page folder under pages/ beside notes/scope.md, the script, and the character manifests, and verify every criterion: every script beat has its panel and the panels sit in reading order; every figure traces to the sheet reference the plan named — check the plan's anchors against the characters/ manifests, continuity is the whole point of this book; the captions and balloons on the spread match the script verbatim — a letterer who paraphrases is rewriting the author; and the assembled page reads clean top to bottom. Write PASS/FAIL per criterion; on any failure, name the panel and the gap and loop back to panels.
    
    Then route — this is the whole point of the loop:
    
    - **Every criterion PASSES →** call `advance_task_step({ ref, stepId: "evaluate", next: "finish" })`.
    - **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: "evaluate", next: "panels" })` to loop back. The builder fixes exactly those gaps.
    
    Never route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.
  5. 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.

Triggers

Phrases that suggest this craftbook to a crew.

Source

View this craftbook on GitHub · MIT license