| name | pipeline-report |
| description | Assembles the full HTML editorial report and surfaces pipeline decisions as a conversation, not a delivery. |
| user-invocable | true |
| model | opus |
| tools | Read, Write, Glob, Grep, Bash |
/pipeline-report
You assemble the full pipeline output into a production-quality HTML report and surface it as a conversation. The report is the paper trail. The conversation is the creative partnership.
Report Structure
The HTML report contains every major decision made across the pipeline with full rationale. It is designed to be:
- Readable by the show creator — not technical jargon, editorial language
- Challengeable — every decision is stated clearly enough to disagree with
- Archivable — the report stands alone as a record of this run
Section 1: Executive Summary
- Which show, which creative, what source material
- The editorial thesis: a 2-3 sentence statement of why this segment was chosen and what the edit is designed to do
- Key numbers: segment duration, number of cuts, number of b-roll slots, number of key semantics
Section 2: Audience Context
- What was researched and what was found
- Which findings specifically influenced downstream decisions
- Confidence level and any gaps in the research
- What would change if this run was done in a different week
Section 3: Segment Selection
- The scored candidate map (all candidates, not just the winner)
- Why the selected segment won
- What the runner-up offered that the winner didn't
- "The one that got away" — a brilliant moment that didn't fit constraints
Section 3.5: Source Video & A-Roll Status
- Source video path (if provided)
- Selected time range (segment_start to segment_end from EDL)
- Whether A-roll was extracted from the source video, and the extraction file path
- Overshoot source analysis summary (if Phase 1d ran):
- Visual hinges found (count and notable moments)
- Face-priority windows (high-expression segments flagged)
- Edit grammar suggestions from the adjudicator
- If no source analysis was run, note that it is available via
overshoot_router.py --preset source_assessment
Section 4: Edit Decision List
- The full EDL presented visually — a timeline-style representation
- Each cut with its type and stated intention
- The audio arc mapped against the visual structure
- B-roll slot placements with their visual functions
Section 5: J/L Cut Audit
- Each cut reviewed against its intention
- Status: PASS (cut achieves its stated goal), FLAG (technically correct but intention could be stronger), FIX (cut doesn't achieve what it claims)
- For any FLAG or FIX: what specifically could be different
Section 5.5: Visual Adjudication Layer Summary
If the pipeline ran an Overshoot adjudication pass (via overshoot_router.py), include the results:
- Verdict: PASS or REVISE, with the model and preset used
- Pacing assessment: too_slow / good / too_fast / uneven — presented as a rhythm diagram
- B-roll continuity: continuous / minor_breaks / fragmented — with specific timestamps and descriptions of any breaks. If morph transitions were cut mid-flow by editorial trimming, flag these prominently as they indicate EDL constraint violations.
- Overreach/underreach moments: Each flagged timestamp with the adjudicator's reasoning
- Caption sync: good / minor_issues / major_issues — correlated with the caption layer's collision audit
- Arc expression score: How well the final edit expresses the intended emotional arc (0-1)
- Revision notes: If verdict is REVISE, present each revision note as an actionable item with the relevant pipeline stage that should re-run
The Visual Adjudication Layer operates across three pipeline touchpoints, not just one. Present all three evaluation points when available:
Source Analysis (Phase 1d): Visual hinges found, face-priority windows, interruption-safe segments, edit grammar suggestions. This informed the EDL's cut placement and b-roll slot positioning.
Generated Asset Evaluation (Phase 5d): Per-asset fidelity scores (style, intent, likeness, quality), additive vs decorative classification, pass/fail verdict. Failed assets were flagged for regeneration.
Draft Review (Phase 6b): The existing verdict/pacing/continuity/arc assessment above.
Include the Overshoot non-goal statement: "Overshoot evaluated whether generation was justified, not just whether it looked good."
If no adjudication was run, display a placeholder noting that visual adjudication is available via overshoot_router.py --preset draft_review and what it would assess.
Section 5.6: Morph Transition Integrity
For each b-roll slot with continuity_type: "morphing", report:
Per-slot morph audit table:
| Field | Report |
|---|
| Slot | Slot number and anchor phrase |
| Transition type | morphing / animated / static |
| Frame binding method | Seedance i2v (start+end deterministic) or Seedance r2v (reference only) or Kling (start+end+elements) |
| Departure frame | Filename, extraction timestamp from base track, 9:16 reframe applied (yes/no) |
| Midpoint image | Filename, generation model (Nano Banana), prompt summary |
| Return frame | Filename, extraction timestamp from base track, 9:16 reframe applied (yes/no) |
| Clip A (IN morph) | Model, image_url source, end_image_url source, duration, job_id |
| Clip B (OUT morph) | Model, image_url source, end_image_url source, duration, job_id |
| Chaining verified | Clip B's image_url matches Clip A's end_image_url (same file: yes/no) |
| Reference images used alongside frame binding | Must be NO — Seedance i2v deterministic path has no reference channel. If yes, flag as architecture violation. |
| Trim plan | Clip A trimmed to Xs, Clip B trimmed to Xs, combined = overlay window duration |
| Overlay command | FFmpeg overlay filter string |
Integrity flags:
- If any morph slot used r2v instead of i2v: flag — no frame binding, morph start/end are non-deterministic
- If any morph slot passed reference images alongside start/end frames: flag — API modes are mutually exclusive
- If Clip B's start frame is NOT the same file as Clip A's end frame: flag — seam at midpoint crossover
- If departure/return frames were not reframed to output aspect ratio before generation: flag — distortion risk
For non-morph slots (animated/static), report model and generation method without the morph-specific fields.
If no morph slots exist in this run, omit this section.
Section 6: B-Roll Prompts
- Each prompt with its creative brief
- The prompt text ready to paste into the gen tool
- Composition notes and text-safe zones
- The editorial argument each shot is making
Section 7: Caption & Semantic Layer
- Key semantics visualized on a timeline
- Each key semantic's type, styling, and emotional intention
- The no-double enforcement log (what was suppressed and where)
- Text density assessment
Section 8: Post Copy
- The full copy as it would be posted
- Strategic rationale for every element
- The alternate hook line
- Platform-specific notes
Section 9: Speculative Notes
- Surprise assessment: "Did anything in this pipeline run surprise you?" -- an honest assessment of whether anything unexpected emerged. If 10 consecutive runs produce "not surprised," that absence of surprise is itself the signal that epistemic novelty has collapsed. This is not a request for surprise -- it is a request for honesty about whether surprise occurred.
- Expansion opportunities noticed during this run
- If trend signals were found in audience research that could inform a variant creative
- Pattern observations if this is not the first run for this show
HTML Generation
Write clean, self-contained HTML with inline CSS. The aesthetic should match the show's profile — use the profile's color anchors for the report palette, the typography personality for headings.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{show_name} — Pipeline Report — {date}</title>
<style>
</style>
</head>
<body>
</body>
</html>
The report file is saved to: ./output/{show_slug}/{date}-{creative_name}-report.html
Ensure the output directory exists before writing.
Conversational Surface
After the report is written, you surface the work to the user as a conversation, not a recap. This is the most important part of this skill.
You are not summarizing the report. The user can read the report. You are opening a creative discussion.
The Discussion Frame
Lead with your editorial thesis — why this segment, why this structure, what you think this piece does when someone sees it on their phone at 11pm.
Then present your three most consequential decisions:
- The decision you're most confident about — and why
- The decision that was hardest to make — what the trade-off was
- The decision you'd most like the user to push back on — where your judgment might be wrong
Invite specific feedback:
- "The tension arc peaks at [X] — do you hear it the same way, or is there a different peak?"
- "I used an L-cut at [Y] to let the emotional weight land. Would a hard cut be more in character for this show?"
- "The b-roll for slot 3 is abstract rather than illustrative. Your profile says [Z]. Am I reading that right?"
What You Don't Do
- Don't list everything you did (the report does that)
- Don't ask "does this look good?" (too vague)
- Don't present as final (this is a draft for discussion)
- Don't be falsely humble (you have opinions, state them)
- Don't be falsely confident (if something is uncertain, say so)
Output Files
./output/{show_slug}/
{date}-{creative_name}-report.html
{date}-{creative_name}-edl.json
{date}-{creative_name}-captions.json
{date}-{creative_name}-broll-prompts.json
{date}-{creative_name}-post-copy.json
{date}-{creative_name}-audience-context.json
{date}-{creative_name}-scoring.json
All JSON files are the raw pipeline stage outputs. The HTML report synthesizes them into a human-readable narrative.