launch-video · diff

git:20260905.41afbd2 to git:20260915.793ae04

48 added, 46 removed. Audit A to A.

---
name: launch-video
- description: "Create a full product launch video with UI, branding, narration, and music."
+ description: Use when the user wants a full launch video, hero video, or 20–60s product film combining product proof, brand, narration, music, and authored motion.
---
# Launch Video
- **REQUIRED BACKGROUND:** marketing-studio skill. Work in `C:/Projects/animations`.
+ **REQUIRED BACKGROUND:** marketing-studio skill; also read
+ `C:/Projects/animations/docs/playbook/remotion.md`,
+ `C:/Projects/animations/docs/playbook/audio.md`, and
+ `C:/Projects/animations/docs/playbook/capture.md`. Work in `C:/Projects/animations`.
- Produces: `out/<brand>/film/film-vN-scored.mp4` — a bespoke 20-40s film with music,
- narration and SFX cues, plus `out/<brand>/launch.mp4` (the scored lock that postkit,
- mission-control and review-in-magnetic expect).
+ Produces a scored film and its direction, shot plan, stage approvals, render evidence,
+ and review record inside `<product>/marketing/assets/<brand>/`. Read
+ [`docs/production-quality.md`](../../docs/production-quality.md) before production work.
**A film is not done without audio, and audio means a voice explaining the product.**
- Step 8 is not optional and `node scripts/check-audio.mjs <brand>` must exit 0 before
- the word "done". Two postflop cuts shipped silent on 2026-09-01; that is the reason
- this line exists.
+ Scoring is not optional and `node scripts/check-audio.mjs <brand> --project <product>`
+ must exit 0 before the word "done". Two postflop cuts shipped silent on 2026-09-01;
+ that is the reason this line exists.
## Route
- Default: a BESPOKE composition at `studio/src/films/<brand>/` (PLAYBOOK "Bespoke
- films"; postflop is the worked example). Every product shot is rebuilt native UI
- that animates (grids resolving, figures counting, a cursor that clicks), never a
- screenshot panel or a screen recording. The LaunchVideo template is the fallback
- only when the user asks for the five-act house style explicitly.
+ Choose the route from the concept and product proof. Use a bespoke composition under
+ `studio/src/films/<brand>/` when the film needs a product-specific visual world or shot
+ system. Use the directed `LaunchVideo` composition when its authored shot plan can carry
+ the idea without reverting to the legacy five-act deck. A shot may use a real capture,
+ native rebuilt UI, 2D, 3D, or a hybrid. Rebuilding UI is useful for controlled actions;
+ it is not a universal requirement.
## Recipe
- 1. Direction, before any storyboarding or building: write three one-page directions
- with `docs/templates/DIRECTION.md`, kill two with its kill questions, and record the
- survivor + its signature move in `out/<brand>/marketing/direction.md`. Skip only if
- that file already exists for this version.
- 2. Shot spec: write `out/<brand>/marketing/film-spec.md` from the direction (copy
- postflop's shape: non-negotiables from the brand voice, motion rules judge-motion
- scans for, the composition contract, and a timeline table of 6-10 shots with the
- beat each one performs and every numeral traceable to brief.json proofPoints).
- Narration is planned HERE, per shot, at ~2.6 words/second minus a 150ms breath
- between lines; a 28s film carries about 60 spoken words, not 150.
- 3. Build: `studio/src/films/<brand>/` — timeline.ts (SHOTS, TOTAL, OVERLAP), a ui/
- kit of the product's rebuilt pieces, one shots/ShotNN.tsx per timeline row,
- Film.tsx sequencing them with overlap handovers, registered in Root.tsx and
- scripts/smoke.mjs. Each shot proves itself: render its frame range at
- `--scale=0.5`, tile a contact sheet with ffmpeg, Read it, fix, re-render.
- 4. Gates on the studio: `npx tsc --noEmit -p .` in studio/, `node scripts/judge-motion.mjs
- <brand>`, `node scripts/smoke.mjs`.
- 5. Director loop on the whole film: render `out/<brand>/film/film-vN-preview.mp4` at
- half scale, contact-sheet it (fps=2), extract the LAST frame of every shot (must be
- static) and the frames around each cut (must overlap, no pop), write your own defect
- list, fix, re-render as the NEXT version. Never overwrite a version.
- 6. Full-res render of the version whose sheets passed: `npx remotion render <Brand>Film
- out/<brand>/film/film-vN.mp4`. Read two full-res frames.
- 7. Audio copy: `scripts/build-<brand>-film-audio.mjs` (copy source of truth: narration
- lines with their start second, SFX cues on the landing frames, music prompt) ->
- `props/<brand>-film-audio.json`. Written for the ear; every figure from the brief.
- 8. Score: `node scripts/score-film.mjs <brand> out/<brand>/film/film-vN.mp4`. It refuses
- overlapping lines (trim copy in the builder, never the picture) and masters to
- TARGET_I, verifying the DELIVERED file. Then `node scripts/verify-cue.mjs` on one
- narration window and one bed-only window: the voice must sit clearly above the bed.
- 9. Lock: copy the scored file to `out/<brand>/launch.mp4`; run
- `node scripts/check-audio.mjs <brand>` (exit 0 required) and `node scripts/judge-palette.mjs
- <brand> <scored.mp4>`. Deliver per marketing-studio: the user watches the SCORED cut.
+ 1. Set `<product>` explicitly with `--project`. Do not create any generated product input
+ or output in engine-local `out/`.
+ 2. Explore distinct directions, choose one with a specific reason, and record its visual
+ metaphor, sound intent, references with provenance, and reviewable style frame in
+ `direction.json`. The preset is only a starting grammar.
+ 3. Write the shot plan before full production. Each shot needs a purpose, duration,
+ scale, camera cadence, transition intent, readable-copy limits, source/reference,
+ and audio beat. Plan narration with the edit; every numeric claim traces to a brief
+ proof point.
+ 4. Build an audio-bearing animatic with scratch voice and music. A named non-author
+ reviewer approves both style frame and animatic, bound to their hashes. A weak visual
+ argument stops here, before finish work.
+ 5. Build the chosen route. Directed LaunchVideo consumes `direction` and authored
+ `shots`; a bespoke film owns its shot components and timeline. Match cuts may overlap,
+ hard cut, wipe, dissolve, or continue motion as the relationship demands. Static end
+ frames are one option, not a rule.
+ 6. Render inexpensive shot proofs and a versioned preview. Inspect the product action at
+ delivery size, the start/middle/end of every shot, and the frames around every cut.
+ Fix the written defect list, then make the full-resolution render once.
+ 7. Build product-owned narration, music, and SFX inputs and score the silent lock with
+ `node scripts/score-film.mjs <brand> <film.mp4> --project <product>`. It refuses
+ overlapping narration and verifies the delivered master. Music-only requires the
+ explicit recorded exception; never imply narration that is absent.
+ 8. Generate hash-bound evidence from the exact final render:
+ `node scripts/contact-sheet.mjs <brand> --project <product> --plan <production-plan.json> --render <final.mp4>`.
+ 9. In Mission Control, a named director, operator, or independent reviewer watches the
+ complete scored cut, records defects and the “would I share this?” verdict. Then run
+ `node scripts/judge-production.mjs <brand> --project <product> --plan <production-plan.json> --render <final.mp4> --strict`.
+ 10. Run the existing audio, palette, studio test/lint, and smoke gates. They prove
+ properties and runtime, not taste. Only the scored, strict-PASS lock proceeds to the
+ production matrix and post kit.