Prompt file imported from yousuf7474/demo-studio (
.claude/commands/demo-review.md). Copyright stays with the author.
/demo-review
Resolve the project: use the named slug, else the single directory under projects/, else list slugs and ask. Read projects/<slug>/gates.json.
Prerequisites. Refuse and name the exact command to run first unless ALL hold: G17 RENDER_INTEGRITY, G18 CAPTIONS, G19 LEGIBILITY_SAFE_AREA are pass and fresh (input_digest matches current render) — else "run /demo-render first"; G20 SELF_EVAL has a recorded run against the current draft — else "run /demo-verify first"; G10 CLAIM_TRACEABILITY is pass and fresh — else "the script changed since G10 last passed; run /demo-narrate or /demo-gate G10 first."
Round cap. Count existing projects/<slug>/review/review-*.md files. If this would be round 4, do not proceed — write review/ESCALATION.md ending in a small, costed, enumerated choice set (never "what should I do?") and stop.
Assemble the packet as projects/<slug>/review/review-NNN.md (zero-padded, next number):
- Draft video:
edit/preview.mp4. verify/contact/composites intoqc/contact_sheet.png— one tile per scene at its 40% point, labeled scene id / beat / timecode / primary claim.verify/timeline/composites intoqc/timeline_view.png— filmstrip + waveform + word labels + shaded silences + scene rules + claim ribbon + red bands at advisory timecodes.- The G10 traceability TSV: read the
evidencepath of the latest passing G10 run ingates.jsonand cite it directly — never regenerate a summary. - Checklist items, each derived (never freehand): one line per beat (from
plan.md/storyboard.jsonscenes), one perfacts.jsonclaim withrisk:"high"orconfidence:"low", one per open advisory (non-blocking WARNs across the ledger, e.g. G09/G11/G20 items under 3), one perbrief.jsonassumptions[]entry, plus the 6 fixed items ending in "would you send this to a customer?"
Present the packet and ask for the human's response in prose. Translate it into proposed feedback.schema.json items — {id, timecode, scene, beat, kind, severity, note, proposed_fix, repair_class, affects[]} — using the remediator subagent to assign each repair_class when not obvious (it may never propose skip/waive). Show the human this structured proposal and get explicit confirmation before writing anything — that confirmation is the gate record.
Write review/feedback-NNN.json ({review_id, draft, reviewer, at, verdict, items[], accepted_advisories[], checklist{}}), validate it, then append the G21 run to gates.json: pass if verdict has no blocking items, else fail with the item list. Report the round number, packet paths, feedback path, and the next command — /demo-rerun --feedback review/feedback-NNN.json if items exist, /demo-ship if clean.
