Skip to main content
skill CX Codex

launch-video · iart-ai — Claude Code skill: what it does, how to install

Helps agents construct 15–60s product launch videos timed to music cues. Generates Remotion and GSAP structures with multi-aspect exports for 16:9, 9:16, and 1:1.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add iart-ai/ad-video-skills --skill launch-video -a claude-code
Open on GitHub

What launch-video does

The skill establishes a clear timeline arc for high-tempo promotional videos: a 3-second hook, beat-synced teaser, instant brand reveal on the drop, rapid feature montage, and a still end card holding for at least two seconds. Sound design strictly dictates visual cuts. Editors lock the audio first, marking transients and kick/snare hits before cutting video frames to match those points.

Video rendering patterns rely on Remotion compositions driven strictly by useCurrentFrame(). Beat and drop timestamps must be baked into composition properties, because GSAP timelines, Date.now(), and audio event listeners fail during deterministic offline rendering. Verification happens frame by frame with npx remotion still at key moments before triggering full encodes.

Key visuals must sit inside the 1:1 center square safe zone. Without this constraint, vertical crops for Reels or TikTok cut off crucial headlines or place call-to-action buttons underneath platform UI elements.

What it helps with

  • structure a 15–60s product teaser with a brand reveal timed directly to a music drop
  • build a kinetic feature montage with hard cuts at 0.6–1.0s intervals per benefit
  • compose scenes within a 1:1 safe zone for simultaneous 16:9, 9:16, and 1:1 video exports
  • inspect keyframe stills via npx remotion still to spot layout bugs before encoding

Example prompts for the agent

  • Generate a 30s product launch video script with the drop at 9 seconds
  • Set up a Remotion composition for a kinetic feature montage in 16:9 and 9:16
  • Verify the reveal and end-card stills using npx remotion still props

How to install launch-video

1Skills CLI (Vercel)

npx skills add iart-ai/ad-video-skills --skill launch-video -a claude-code

2Manually: put the files in place

~/.claude/skills/launch-video/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/launch-video/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about launch-video

How to install launch-video in Claude Code?

Run npx skills add iart-ai/ad-video-skills --skill launch-video -a claude-code. Alternatively, place the file directly at ~/.claude/skills/launch-video/SKILL.md.

What does launch-video do?

It guides the assistant through structuring beat-synced launch films, organizing Remotion scenes, and keeping graphic elements within cross-platform safe zones.

Why are audio event callbacks prohibited during Remotion renders?

Offline video rendering requires deterministic output from useCurrentFrame(). Browser audio events and Date.now() do not fire frame-accurately in headless renders, so beat timestamps must be passed as static props.

Source text

SKILL.md · MIT
---
name: launch-video
description: This skill should be used when the user asks to "make a launch video", "create a product hype/sizzle film", "build a teaser/trailer for a drop", "do a reveal montage with an end-card CTA", "cut a hero video to the beat", or "export a launch film in 16:9/9:16/1:1". Covers the hook→tease→reveal→feature-montage→end-card arc and multi-aspect export.
version: 0.1.0
---

# Launch Video

Make a premium, high-energy 15–60s launch film that stops the scroll and converts. Build the classic arc — hook → tease → reveal → feature montage → end-card CTA — cut to the music, and export for every platform aspect.

## When to use

- Product drops, feature announcements, trailers, hype reels (15–60s).
- "Sizzle" hero videos for a landing page.
- Beat-synced reveals where the brand moment lands on the drop.

## The arc

| Beat | Job | Typical share (of 30s) |
|---|---|---|
| Hook (0–3s) | A striking frame/motion that stops the scroll | 0–3s |
| Tease | Hint the product; build curiosity, beat-synced | 3–9s |
| Reveal | Product/logo hits on the music drop | 9–13s |
| Feature montage | Fast, kinetic, one benefit per shot | 13–25s |
| End card | Logo + tagline + CTA, clean hold | 25–30s |

Scale the same proportions for 15s (tighter) or 60s (longer montage, never a longer hook).

## Two non-negotiable rules

1. **Sound design leads picture.** Lock the track first, mark the beats and the drop, then cut visuals to those marks. Never score a finished cut — the reveal lands on the drop, not near it.
2. **Quality over quantity.** A few flawless shots beat many mediocre ones. Cut any shot that isn't premium.

## Beat-synced reveal on the drop

Find the drop's exact timecode in the audio, then time the reveal so the brand mark snaps to full at that frame, with a micro-overshoot for impact.

```js
import gsap from "gsap";
const DROP = 9.0; // seconds, measured from the track
const tl = gsap.timeline({ paused: true });
// tease builds tension up to the drop
tl.to(".tease", { opacity: 1, scale: 1.05, duration: DROP, ease: "power1.in" })
// reveal SNAPS on the drop frame
  .set(".logo", { opacity: 1 }, DROP)
  .fromTo(".logo", { scale: 1.18 }, { scale: 1.0, duration: .18, ease: "power3.out" }, DROP)
  .fromTo(".flash", { opacity: .9 }, { opacity: 0, duration: .25 }, DROP); // white hit
audio.addEventListener("play", () => tl.play());
```

Cut on transients, not on a fixed grid: the hardest cuts go on kick/snare hits; ramp speed (time-remap) into the drop, then hard-cut out of it.

## Kinetic feature montage

One benefit per shot, ~0.6–1.0s each, hard cuts on the beat. Each shot = a bold keyword + a single supporting visual.

```css
.feature { opacity:0; }
.feature.in .kw   { animation: pop .35s cubic-bezier(.22,1,.36,1) forwards; }
.feature.in .word { display:inline-block; }
@keyframes pop { from { opacity:0; transform:translateY(24px) } to { opacity:1; transform:none } }
```

```js
// drive shots off beat marks measured from the track
const beats = [13.0, 13.8, 14.6, 15.4, 16.2]; // seconds
beats.forEach((t, i) => scheduleAt(t, () => showFeature(i)));
```

Keep one motion language across the montage (same enter curve, same exit) so speed reads as confidence, not chaos.

## End card

Hold the logo + tagline + CTA still and clean for ≥2s. No busy motion competing with the CTA; let the brand settle. Land the brand moment on the strongest remaining beat, then a crisp button/URL.

## Multi-aspect export

Compose with a center safe zone so one master crops cleanly to all aspects.

| Aspect | Use | Resolution | Safe zone |
|---|---|---|---|
| 16:9 | YouTube, landing hero, X | 1920×1080 | keep key content within center 90% |
| 9:16 | Reels, TikTok, Shorts, Stories | 1080×1920 | text within center 80% h; avoid top 12% / bottom 18% (UI) |
| 1:1 | Feed posts | 1080×1080 | center square of the 16:9 frame |

Design the hero/logo/CTA inside the **1:1 center square** so it survives every crop. Render the 16:9 master, then reframe (don't just letterbox) 9:16 and 1:1 from the same project.

## Output checklist

- Track locked first; reveal lands exactly on the drop.
- Hook earns the first 3 seconds.
- Montage: one benefit per shot, hard cuts on beats, consistent motion language.
- End card holds ≥2s with one clear CTA.
- 16:9 + 9:16 + 1:1 exports, key content in the center safe zone.
- Premium-only shots — nothing mediocre survives the cut.

## Deliver & verify (rendered stills → MP4)

> **Packaged helper** (`scripts/`): tile your stills with `scripts/contact-sheet.sh sheet.png f-hook.png f-mid.png f-end.png`, then assert the encode with `scripts/probe-mp4.sh out.mp4 [WxH] [fps]`. See `scripts/README.md`.

If the launch film is built/rendered in Remotion, treat it as the heavy tier: register a `<Composition>` (+ zod `schema` + `defaultProps`), drive every value off `useCurrentFrame()` — no GSAP timelines / audio-event callbacks / `Date.now()` / `Math.random()` at render time (bake beat + drop timecodes into props). Deliverable = the rendered `out/*.mp4` per aspect (plus the project).

**Verify loop — render stills → inspect → encode.** Sample the arc, with the **shipped** props (real headline/tagline/CTA), not just `defaultProps`.

```bash
# Frame-exact stills across hook → reveal → end-card
npx remotion still Launch out/f-hook.png   --frame=24  --props=props/launch.json   # hook earns first 3s
npx remotion still Launch out/f-reveal.png --frame=270 --props=props/launch.json   # logo SNAPS on the drop frame
npx remotion still Launch out/f-end.png    --frame=899 --props=props/launch.json   # end card: logo+tagline+CTA, clean hold
# inspect each: fidelity (product/logo, tagline, CTA text exact, brand colors right, reveal at the drop frame)
#   AND artifacts (text overflow, off-canvas, CTA in the 9:16 bottom third, missing font, flash frame stuck on)
```

**Multi-aspect — verify the master in EACH aspect before encoding all of them.** A reframe bug (hero pushed off the safe zone) repeats across every aspect; catch it once.

```bash
for ar in 16x9 9x16 1x1; do                                 # check reveal + end card per aspect
  npx remotion still Launch "out/reveal-${ar}.png" --frame=270 \
    --props=props/launch.json --props-merge="{\"aspect\":\"${ar}\"}"
done
# stills clean in all aspects? → then encode each:
for ar in 16x9 9x16 1x1; do
  npx remotion render Launch "out/launch-${ar}.mp4" --props=props/launch.json --props-merge="{\"aspect\":\"${ar}\"}"
done
npx remotion render Launch out/demo.gif --codec=gif --props=props/launch.json   # README demo
```

**Before you finish:**
1. `npx remotion still` renders cleanly at hook / reveal / end card — no errors, no missing fonts/assets.
2. Logo/tagline/CTA text exact, brand colors right; reveal lands on the drop frame; key content inside the center safe zone, clear of the 9:16 bottom third.
3. Frame-driven only — no GSAP/audio-callback timing, `Date.now()`, or `Math.random()` (beats/drop baked into props).
4. Shipped props render correctly (not just `defaultProps`); the end card holds ≥2s with one CTA.
5. Master verified in 16:9 + 9:16 + 1:1 before encoding; MP4s play; (optional) GIF for the README.

## Reference files

- `references/launch-structure.md` — a full shot-by-shot template with timecodes for a 30s film (scalable to 15–60s), beat-synced reveal timing, kinetic-montage shot recipes, the sound-design-leads-picture workflow, and detailed multi-aspect safe-area maps for 16:9 / 9:16 / 1:1.

© iart-ai · MIT · iart-ai/ad-video-skills

Similar skills

Everything for Marketing and content →

launch-video by other authors comes first.

launch-video charlie947 Builds 30-45 second product launch promo videos as self-contained HTML files with deterministic frame seeking for MP4 export. Useful for SaaS launches and course announcements. CX Codex +1 1,500installs seo-audit coreyhaines31 This skill runs a technical and on-page SEO audit: crawling, indexing, Core Web Vitals, meta tags, hreflang. Useful when traffic drops or pages stall on page two. CX Codex +1 237,600installs programmatic-seo coreyhaines31 Guides the creation of search-driven pages at scale using templates and structured data. Helps prevent thin content penalties on large directories. CX Codex +1 149,700installs copy-editing coreyhaines31 Edits marketing copy you already have: strips AI tells, tightens wordy lines, refreshes stale pages. Not for writing from scratch. CX Codex +1 149,100installs marketing-ideas coreyhaines31 This skill suggests marketing ideas for SaaS and software products based on their stage and available resources. Use it when you need a place to start with growth. CX Codex +1 146,900installs sales-enablement coreyhaines31 A skill that turns your coding agent into a B2B sales enablement writer: decks, one-pagers, demo scripts and objection docs. Useful when reps keep asking for materials you never have time to build. CX Codex +1 118,800installs revops coreyhaines31 This skill helps design RevOps workflows for lead stages, scoring, routing, and marketing-to-sales handoffs. Use it when CRM processes need clear rules. CX Codex +1 113,500installs

From the same set2

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor