Quick start

Install the package in a product repo, or work from a checkout of this repo, and ask Claude for a video.

Install

You need Node 22 or later and ffmpeg. uv is only needed for beat detection. Requirements has the full list and what it has been tested on.

sh
brew install ffmpeg uv

The packages are on npm, so a product repo installs them like any dev dependency (next section). To change the skills or the engine for your team, fork this repo and work from your fork instead (see Work from a checkout).

Ways to work

The way we work: the product runs locally (its dev server, in its demo or seeded mode), and its source repo is on the same machine. Claude reads the source, looks at the running product with pnpm launch look <url>, records it with capture scripts against the local dev server, and saves snapshots of the real UI. Every shot is built from those, in the product's own components, data and look.

The videos can live in either of two places:

SetupWhere the videos liveGood for
In the product repolaunch/ in the product, with the packages as a dev dependency.Recurring videos (each release, each feature): they are versioned with the product and import its components and data directly.
In a checkout of this repovideos/ in your clone or fork, with the product linked in launch.config.ts.One-off videos, and several products from one place.

Set up a product repo

Run these from the product repo's root:

sh
npx @intentface-launch/core init
pnpm launch setup
pnpm launch dev
  • init adds @intentface-launch/core as a dev dependency, creates launch/ with a config, a videos/ folder and a CLAUDE.md for Claude, adds a launch script to package.json, and installs the skills into .claude/skills/. In a pnpm repo, pnpm dlx @intentface-launch/core init does the same.
  • setup downloads the browser that renders use, once per machine.
  • dev opens the studio at http://localhost:4400.

The commands here are written for pnpm. In an npm repo, run them as npx intentface-launch setup, in yarn as yarn launch setup, in bun as bun run launch setup.

Add-ons install the same way when a video needs them:

sh
pnpm launch add three              # 3D
pnpm launch add shaders            # WebGPU shader effects
pnpm launch add <package>          # a brand package, for videos in that brand

Work from a checkout

This repo is a launch folder itself: launch.config.ts at its root and its videos in videos/. To make videos for a product from here, link the product in launch.config.ts. Paths are relative to the checkout:

ts
import { defineConfig } from "@intentface-launch/core/config";

export default defineConfig({
  product: { path: "../my-app", public: "public" },
  products: { site: { path: "../my-site" } },
});
  • product is the main product. Its tsconfig paths (@/…) resolve in videos, so its components and data import as they do in the app.
  • products links other repos, imported as @product/<name>/….
  • public, on either, is the repo's static folder, served so its code finds its assets at the usual URLs.

Clone the repo (or your fork) and install it first:

sh
git clone https://github.com/Intentface/intentface-launch.git
cd intentface-launch && pnpm install

Then, from the checkout's root:

sh
pnpm launch setup
pnpm launch new demo --title "Demo"
pnpm dev

The skills are already in .claude/skills/, so open Claude Code in the checkout and ask for a video as below.

A product repo can also use a checkout's packages, including changes not yet released: run node /path/to/intentface-launch/packages/core/bin/launch.mjs init there instead of npx. init and add then install the packages as link: dependencies on the checkout. LAUNCH_SOURCE=/path/to/checkout picks the checkout explicitly.

Ask for a video

Start the product's dev server first, then open Claude Code where the videos live and describe the video, for example:

Look at my app and make a feature release video about our scheduling feature, 30 seconds.

The product-launch-video skill takes it from there. Claude asks what sets the product apart, writes a brief and a script with you, and shows a storyboard before it builds anything heavy. See How it works.

Intentface Launch does not make music, but it cuts the video to a track, so the track comes before the storyboard. If you have music for the product, have the file ready. If not, Claude writes a brief from the script for you to generate one with a music generator such as Suno or ElevenLabs Music.

Recipes has other ways to start: screenshots of what to highlight, your own images and clips, sound with ElevenLabs, and ideas such as a weekly update scripted once.

Keep it up to date

Update the package like any other dev dependency (pnpm update @intentface-launch/core, and the add-ons you use), then run pnpm launch update to refresh the skills and guides. A product repo linked to a checkout updates when you pull the checkout. In a fork, merge from this repo when you want its changes.