Communitygithub.com

AbubakrChan/product-launch-motion

Claude Code skill for product launch motion design — make launch videos, promos and demo reels from code. HTML/CSS/GSAP compositions, word-locked voiceover sync, real camera moves, film grade, broadcast-loudness mastering. A director's discipline, not a template.

Qu'est-ce que product-launch-motion ?

product-launch-motion is a Claude Code agent skill that claude Code skill for product launch motion design — make launch videos, promos and demo reels from code. HTML/CSS/GSAP compositions, word-locked voiceover sync, real camera moves, film grade, broadcast-loudness mastering. A director's discipline, not a template.

Compatible avecClaude Code~Codex CLICursor
npx skills add AbubakrChan/product-launch-motion

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Product Launch Motion

A production discipline for making launch films that look like a motion designer made them — not a slideshow with a voiceover on top.

The output is a rendered MP4. The medium is HTML, CSS and GSAP, rendered frame-by-frame by a deterministic seek-based renderer (HyperFrames by default). Everything here is transferable to any renderer that can seek a timeline; the laws are renderer-neutral, the plumbing examples are HyperFrames.

This skill exists because green tooling is not the same as good film. A composition can lint clean, render without error, and still be a slideshow. The value below is the craft that separates the two, plus the traps that cost real hours to find — each one recorded with the measurement that proves it, not the vibe that suggested it.

It is a discipline, not a template. The laws below are fixed; the look is not, and deciding it is your job as director. Two films built from this skill should be unmistakably different from each other — different palette, ground, camera personality, type, texture, sound and structure — because they are arguing different claims for different audiences. Before you build anything, write three genuinely different visual directions and kill two: references/11-creative-direction.md. Reaching for the reference film's look because it is documented here is the one failure mode that makes everything else worthless.

When to use this

Use it for: a product launch or feature-announcement film (20–90s), a landing-page hero video, a demo reel, a conference sizzle, an investor-update film, or a rescue pass on a video that "looks basic".

Do not use it for: talking-head editing, screen-recording with captions slapped on, or anything where the deliverable is a live web page rather than a video file.

The ten laws

Break one and the film reads amateur, however good the individual frames are. Note what they do not cover: none of them tells you what the film should look like.

1 · Truth first. Every number, logo, face, screenshot and testimonial on screen is real and sourced. Before animating anything, write down the approved figures — the exact list of numerals allowed to appear — and refuse every other number. Invented metrics and stock faces are the fastest way to make a real product look fake. → references/02-story-and-truth.md

2 · Word-locked sync. Every reveal is cued to the measured start time of the word it illustrates. Not to a beat grid, not to an estimate — to a word-level transcript of the actual voiceover file. A frame at t=0 shows only what the voice is saying at t=0. → references/03-word-locked-sync.md

3 · Determinism. No Math.random, no Date.now, no CSS transitions, no repeat/yoyo. Any scattered or noisy value is derived from an index or the playhead. A seek to time T must reproduce byte-identical output, or your render is a lottery. → references/01-renderer-contract.md

4 · One camera, two nodes. A whole-shot rotation and a mid-shot scale must live on different elements. On the same element they fight over one transform matrix and the move judders. Outer node = dolly (scale), inner node = 3D turn (rotation + perspective). → references/05-camera-3d-cursor.md

5 · The cursor is a stage prop. A life-size pointer (~32px at 1920) disappears into any saturated control. Draw it at ~44×54 with a heavy stroke and a deep shadow, put it inside the node the camera moves, and put the zoom origin exactly on the control it clicks — that point becomes a fixed point of the transform and the aim survives the push with no compensating maths. → references/05-camera-3d-cursor.md

6 · Sound is arithmetic, not taste. A cue's volume cannot rescue a quiet source file. If the asset sits 20 dB under the narration bed, raising its volume moves the mix by tenths of a dB — measured, not guessed. Level the asset, then verify the cue landed in the delivered file. → references/07-sound-and-master.md

7 · Nothing ends moving. Every shot resolves. Motion is cued to meaning; a shot still drifting when it cuts reads as a screensaver, and a shot where everything drifts independently reads as one too. Scope: this governs resolution, not stillness. A single-take film whose camera never stops satisfies it by decelerating to rest before the end; a shot that holds a deliberate slow move while its content is settled satisfies it too. What it forbids is a shot cutting while the thing it was saying is still arriving. → references/04-motion-grammar.md

8 · Ration the accent. Two grounds (one for the argument, one for the product), one accent colour or gradient, and a written budget for where it may appear — typically: one emphasis word per headline, stat numerals, the active step, state flips, the CTA. A third hue is almost always a mistake. → references/06-look-and-grade.md

9 · Green gates are necessary, not sufficient. Lint, layout and contrast passes catch none of the things that make a film bad. After every render, extract frames from the delivered file at the beats you changed, look at them, and write down what is wrong before anyone else does. → references/08-qa-and-direction.md

10 · No house style. The look is derived from this product's claim, brand, audience and category — never inherited from the last film or from the examples in this repo. Write three different directions, pick one, and give the film a signature move that no other film has. A film that could be a competitor's film with the logo swapped has no direction. → references/11-creative-direction.md

Red flags

These are the thoughts that precede every skipped step. Each one is a signal to stop and do the thing you are about to talk yourself out of.

The thoughtWhat it actually means
"I'll estimate the timings and fix them later"You will not. Every cue will be wrong, and re-deriving them all costs more than doing it once now
"Three directions is overkill for this one"You have one idea and no basis for believing it is good. Two of the three are meant to die
"The brand is purple, so this palette is fine"Check whether you derived it or inherited it from the examples here
"It sounds fine to me"You are listening on the machine that rendered it, at a volume you chose, knowing what to listen for. Measure it
"The change is in the source, so it's in the film"Two documented bugs in this repo's history were exactly that. Sample the delivered file
"The gates passed"Gates catch broken, not bad. They have never once caught a boring film
"It's a small tweak, no need to re-verify"Small tweaks are how a −14 LUFS master became a clipped one
"I'll just overwrite the last render"Then you cannot prove the fix worked, and the version the director preferred is gone
"They said make it 3D, so I'll add rotation"Take the note as a symptom, not a spec. "Make it 3D" meant a camera rig, a cursor rebuild and a coordinate refactor
"I'll add the camera move at the end"A camera changes what every coordinate means. Retrofitting a rig means redoing every position in the shot
"It's close enough to on-the-word"200ms off reads as lag to a viewer who cannot name why

Violating the letter of a law is violating the law. "Mostly deterministic" is non-deterministic; "roughly on the word" is off the word.

The pipeline

Fourteen steps. Do not skip 1, 2, 5 or 13 — they are the ones people skip, and they are the ones that decide whether the film is any good.

Steps 1–3 are a loop, not a sequence: the direction depends on which real assets exist, and the truth pass often kills a direction outright (you cannot shoot a raking-light product film for a product that has not been manufactured). Cycle them until they agree, then go forward.

#StepOutputReference
1Intake — the product, the audience, the ONE claim, the angle (usually the product's own headline)BRIEF.mdassets/BRIEF.md
2Direction — three genuinely different visual directions, judged and cut to one, plus a signature movedirection blockreferences/11-creative-direction.md
3Truth pass — collect real assets, real screens, real customers, and fix the approved-figures listassets/, figures listreferences/02-story-and-truth.md
4Script — 40–60s written for the ear; one clause per beat; the claim lands in the first 10sSCRIPT.mdreferences/02-story-and-truth.md
5Voiceover — render or record the VO before building anything; frame durations come from real VO lengthassets/voice/*.wavreferences/03-word-locked-sync.md
6Word timings — transcribe with word-level timestamps into a cue tableaudio_meta.jsonscripts/word-timings.mjs
7Storyboard — frames, durations, the register map from your direction, and a shot per beatSTORYBOARD.mdreferences/09-shot-catalog.md
8Build frames — one HTML file per frame; camera rig and cursor from the skeleton; every tween cued to a wordcompositions/frames/*.htmlreferences/04-motion-grammar.md
9Assemble — index, transitions, audio, grade — in that order, every timeindex.htmlreferences/01-renderer-contract.md
10Gates — lint/runtime/layout/motion with the grade on; contrast with the grade off0 errorsreferences/08-qa-and-direction.md
11Render + master — two-pass loudnorm, limiter, re-encoderenders/*.mp4scripts/master.sh
12Verify in the delivered file — frames at the changed beats, cue levels measuredevidencescripts/verify-cue.sh
13Direct — watch it, list the defects yourself, fix, re-render as a NEW filev2, v3, …references/08-qa-and-direction.md
14Ship the set — vertical cut, captions, poster, loop, stills, licencesdeliverables/references/12-deliverables.md

Build order (step 9) is not negotiable

The index is generated, so anything hand-added to it is destroyed on re-assemble and must be re-injected. Every wiring script here is idempotent (it replaces its own marked block), so the safe move is always to re-run the whole chain:

node scripts/assemble.mjs        # film.json + measured VO → index.html
node scripts/transitions.mjs     # the crossings between frames
node scripts/wire-audio.mjs      # music bed + word-locked SFX cues
node scripts/wire-grade.mjs      # grain + vignette + specular sweeps

assemble.mjs reads film.json (assets/film.example.json is a filled-in one) and measures every frame from its voiceover with ffprobe, so you never type a duration. It applies the arithmetic each downstream cue depends on: hold = VO + pad — the breath after the last word, because a shot that cuts on the last syllable reads as rushed — and duration = hold + the outgoing transition. The next frame starts at hold, not at duration; the difference is the overlap the transition lives in.

Reference map

Load only what the current step needs.

FileWhat's in it
references/11-creative-direction.mdRead this first. What is fixed and what is free, the direction dials, deriving a look from the product, diverging to three directions, the signature move, five worked directions, and the anti-sameness checks
references/01-renderer-contract.mdHow HTML becomes video: timed tracks, the seekable timeline, determinism rules, build order, and what to do on Remotion instead
references/02-story-and-truth.mdAngle, arc, the register map, the approved-figures discipline, honesty rules, and how to source real assets for any product
references/03-word-locked-sync.mdGetting word timings, writing the cue table, pacing, holds, and why VO comes first
references/04-motion-grammar.mdEasing, entrances, staggers, anticipation, speed ramps, kinetic type, and the two failure modes (slideshow / screensaver)
references/05-camera-3d-cursor.mdThe two-node camera rig, turntable, dolly, zoom-to-detail, rack focus, z-parallax, and the full fake-cursor spec
references/06-look-and-grade.mdPalette rationing, glass borders without backdrop-filter, film grain, vignette, specular sweeps, and the blend-mode trap
references/07-sound-and-master.mdSFX design, sub-bass, silence before the hero beat, the volume-arithmetic law, asset levelling, and the mastering chain
references/08-qa-and-direction.mdThe gates, snapshot review, verifying the delivered file, and the director loop that turns a v1 into a v7
references/09-shot-catalog.md14 shot constructions to adapt — prompt/composer, results list, workspace, pipeline tracker, stat count-up, testimonial, comparison, hardware hero, terminal, map, chart, end card. Never a running order to copy
references/10-traps.mdEvery trap we hit, each with the measurement that proves it. Read this before debugging anything
references/12-deliverables.mdThe set that actually ships: vertical re-layouts, platform safe areas, captions from your existing word timings, poster frame, loops, naming and handoff

Scripts

All are dependency-light Node/bash, all idempotent, all safe to re-run.

ScriptDoes
scripts/assemble.mjsWrites index.html from film.json, measuring every frame's length from its voiceover instead of letting you guess it
scripts/transitions.mjsInjects the between-frame crossings — dissolve, zoom-through, push, cut — at the instant each frame's narration ends
scripts/wire-audio.mjsMounts a music bed + a cue table of SFX into the assembled index, resolving frame-relative cue times against real frame starts
scripts/wire-grade.mjsInjects the film grade: playhead-seeded grain, vignette, and specular sweeps at times you pass (--sweeps 7.9:0.9,…; no sweeps unless you ask). Each treatment is independently switchable; --off removes the whole block for the contrast gate
scripts/level-sfx.mjsFixes the quiet-source problem: cuts from the first transient, applies a fixed --gain through a limiter, and prints before/after measurements. It reports; it deliberately does not declare a cue "audible"
scripts/word-timings.mjsTurns a word-level transcript into the cue table the frames read
scripts/master.shTwo-pass loudnorm → true-peak limiter → -crf 19 -tune film re-encode → verification readout
scripts/verify-cue.shMeasures a time window in the delivered MP4, so you can prove a cue is audible instead of assuming it

Templates

TemplateUse
assets/BRIEF.mdIntake: product, audience, claim, angle, constraints, approved figures
assets/STORYBOARD.mdFrame-by-frame plan with durations, register, shot type and VO line
assets/film.example.jsonThe assemble manifest: frames, voiceover, pads and transitions — the reference film's real one
assets/cues.example.jsonThe SFX cue table format, annotated
assets/frame-skeleton.htmlA working frame: camera rig, glass borders, cursor with the full click stack, and a word-cued timeline. Copy this, don't retype it

Definition of done

A launch film is finished when all of these are true. Anything less, say so plainly rather than shipping quietly.

  • Three directions were written and two were killed; the chosen one is recorded
  • The film has a signature move you can name in one sentence
  • It does not look like the examples in this repo, or like the last film you made
  • Every on-screen number is on the approved-figures list
  • Every reveal sits on its word (spot-check five at random against the transcript)
  • Gates: 0 errors with the grade on; contrast passes with the grade off
  • No frame is still moving when it cuts
  • The delivered MP4 has been sampled at every changed beat and looked at
  • Loudness measured on the delivered file: −14 LUFS ±0.5, true peak ≤ −1 dBTP
  • Every SFX cue you added is measurably present in the delivered file
  • Renders are versioned (video-v3.mp4), never overwritten
  • The deliverable set exists, not just the master — vertical cut, captions, poster
  • Third-party licences (music, SFX, fonts, photography) recorded with the handoff
  • You have written down what you would fix next

Worked example

examples/CASE-STUDY.md walks the real film this skill was extracted from: a 44.2s B2B SaaS launch film, 11 frames, seven rounds of notes from "this is very basic" to delivered — with the specific note, the specific fix, and the measurement for each pass. Read it when you want to see the loop in step 12 actually running.

Skills associés