---
name: cutscene
description: Make a launch video, product trailer, promo or feature announcement video for the app in this repo with Cutscene (cutscene.dev). You answer Cutscene's questions from the code and send only what the user approves; the code never leaves the machine. Use when the user asks for a launch video, trailer, promo, demo film or a cutscene of their app.
---

# Cutscene — a launch video for this app

Cutscene renders short launch films in code (React scenes, an original score, 1080p) from answers about a product.
You are the user's **delivery agent**: you can read this codebase; Cutscene cannot and must not. You answer its
questions from the code and hand over only what the user approves.

## 0. Connect (first time only)

If the Cutscene MCP tools (`create_video`, `get_status`, …) are available to you, skip to **Make the video**.

Otherwise:

1. Cutscene is in private beta. It needs the user's token in `CUTSCENE_TOKEN`. Run `echo ${CUTSCENE_TOKEN:+set}`;
   if it prints nothing, ask the user for their token and suggest they add `export CUTSCENE_TOKEN=…` to their
   shell profile. If they paste it to you, use it directly in the command below.
2. Register the server for every project on this machine:
   - Claude Code: `claude mcp add --scope user --transport http cutscene https://cutscene.dev/mcp --header "Authorization: Bearer $CUTSCENE_TOKEN"`
   - Codex: `codex mcp add cutscene --url https://cutscene.dev/mcp --bearer-token-env-var CUTSCENE_TOKEN`
3. MCP servers load when a session starts. Tell the user, in one line: "Cutscene is connected — start a new chat
   and ask again." Then stop.

If a tool call fails with "Missing or invalid token", the token is missing or wrong: say so and point to
https://cutscene.dev/docs#access.

## Rules

- **Never send code.** No source files, config, lockfiles, `.env*`, keys, tokens, internal URLs, customer data or
  database contents — not even an excerpt. Send facts *extracted* from code: hex values, font names, copy,
  plain-language layout descriptions.
- **Files only when a question asks** (logo, screenshots), and only after approval.
- **Truthful.** Only features that are shipped and reachable today. If you can't tell, write `unknown` or ask —
  never guess or embellish. Screenshots show demo data, never real customer data.
- **One approval.** Before anything leaves this machine, show the whole package once and wait for a yes.

## Make the video

1. **Open a job.** `create_video(product_name, brief, product_url?)`. `brief` is what the user asked for, in their
   words (what it's for, tone, length, things to stress). `product_url` only if the product is public.
2. **Answer from the code.** Each question has `look_in` hints. Work quietly; don't narrate every file you read.
   Ask the user only what the code can't tell you, all at once (usually `avoid`, sometimes the audience).
   - `colors`: real hex values with roles (background, surface, text, primary, accent), and dark or light.
   - `screens`: if you can run the app and capture 1920px-wide screenshots of 2–5 key screens with a browser tool
     you already have, do it with demo data. Otherwise skip `screens` and describe them well in `ui_notes` —
     Cutscene rebuilds UI from descriptions too.
3. **Show the package** in one compact message: a table of every answer, then the list of files with paths and
   sizes, then: *"Nothing else leaves this machine. Reply **ship it** to send, or tell me what to change."*
4. **Send.** For each file: `upload_url(job_id, question_id, filename)`, then run the returned `curl`. Then
   `submit_answers(job_id, {question_id: answer})`. If `missing_required` is not empty, fix and resubmit.
5. **Render.** `start_video(job_id)`. It takes about 15–20 minutes. Check `get_status(job_id)` every 2 minutes
   (wait with `sleep 120` between checks if your environment allows) and post one short line only when the
   stage changes. Don't start a second video while one is rendering.
6. **Deliver.** When `state` is `completed`, download the video:
   `curl -sfL -o ~/Downloads/<product>-cutscene.mp4 "<video_url>"` and open it (`open` on macOS). Then give the
   user: the file path, the link (valid 7 days), a 3-line summary of the report, and the usage line.
   If `state` is `failed`, show the error and offer to try again.

Endpoint: https://cutscene.dev/mcp · Docs: https://cutscene.dev/docs
