# Motion Showreel Skill **Stunning short videos made entirely in code: motion showreels, product films, UI motion, kinetic typography, logo stings, generative loops and era-spanning retrospectives, with optional beat-synced music.** [中文文档](./README.zh-CN.md) · [Back to collection root](../../README.md)  --- ## What Is This? `motion-showreel` turns one sentence into a finished short video (MP4 plus editable source). The kind of video it makes is mostly graphics, type or interface animation. The agent writes a web page whose picture is a pure function of time, renders it frame by frame, scores it on the same timeline and checks the result before handing it over. It is designed for: - Motion showreels and portfolio pieces - Product teasers and launch films (from the user's own facts and screenshots) - UI motion demos: morph chains, micro-interactions - Kinetic typography and beat-synced quote cards - Logo stings, title sequences and channel bumpers - Generative-art loops and data "number drops" - Era-spanning retrospectives that change medium as they go (pixel → vector → 3D …) Typical length is 5–60 s; music-driven pieces without narration can run to about 2 minutes. Out of scope: narrated explainers (use [`web-video-presentation`](../web-video-presentation)), web pages and prototypes (use [`web-design-engineer`](../web-design-engineer)), photoreal people, live footage and editing existing video. --- ## Showcase Every clip below was made by an agent with this skill from a short request. For most of them the request was just a style and "the rest is up to you". These previews are 4-second, 12 fps excerpts; the real renders are 1920×1080 at 30 fps with sound.
![]() Motion Showreel trailer · 80 s The skill's own trailer. One orange dot is redrawn in a new medium every beat (ink, paper, risograph, CRT, collage, glass, clay …), then bursts into a wall of 22 live styles. The synthesized score changes instruments with the medium. |
![]() AFTERGLOW · 19 s · synthwave-neonTitle sequence for a fictional album. The camera drives through neon gates; after the last gate there is half a beat of black, then the chrome title springs up from the horizon on the drop. |
![]() boink · 18 s · soft-3d-toyA one-take chain reaction (after Honda's "Cog"). Every domino plays a marimba note; the jelly's slam sends a squash wave through the world, and the opening ball lands as the dot of the i. |
![]() LAST STROKE · 30 s · custom "stick ink" style Trailer for a fictional game where every line you draw becomes real. The single stroke through 40 enemies is followed by the film's only beat of total silence; then the enemies burst into ink and the stroke becomes the title. |
![]() UMBRA · 27 s · cinematic-titleOpening titles for a fictional film about a total eclipse, letterboxed at 2.39:1. A beat of absolute silence, then the last Baily's bead flares into the diamond ring and the title develops inside the moon. The piano is a sampled Salamander grand (tier 2) with synthesized trailer sound design (booms, braam) layered on top. |
What you get for every piece out/final.mp4 + out/poster.pngbrief.md: a reusable structured promptindex.html / timeline.js / score.mjs: editable sourcesh build.sh: rebuild everything, or one segmentqa/: contact sheets, phone-size check, per-shot motion, text-framing marks, waveform and spectrumTechnical checks (all PASS) and an honest review log |
![]() swiss-editorial |
![]() ink-wash |
![]() risograph-print |
![]() editorial-collage |
![]() isometric-infographic |
![]() liquid-shader |
![]() data-motion |
![]() generative-geometry |
pixel-game |
![]() synthwave-neon |
![]() paper-cut |
![]() minimal-ui |
![]() comic-pop |
![]() flat-vector |
![]() guochao |
![]() painterly |
![]() glitch-digital |
![]() soft-organic |
kinetic-brutalist · dark-keynote · glass-material · soft-3d-toy · particle-field · crt-vhs · terminal-ascii · crayon-storybook · cinematic-title · mixed-media-era. See references/styles/INDEX.md for the directory, the three-direction rule and how to mix styles.
---
## Sound
| Tier | Engine | Good for |
|---|---|---|
| 1 · built-in synth (default) | `score.mjs`, zero-dependency and fully deterministic. Drums and hand percussion, bass, pads, plucks, mallets (marimba / glockenspiel / kalimba / steel pan), organ, formant choir, FM bells, ambience beds (tape, vinyl, wind, rain), swing / step rhythms, sidechain, bitcrush and tape wow | Electronic, UI, retro, abstract, handmade, lo-fi |
| 2 · Tone.js | `score.tone.js`, rendered offline in headless Chromium. Sampled instruments (Salamander grand piano, CC BY), convolution reverb, chorus / phaser / distortion | Cinematic, premium product, anything that needs a real instrument and space |
| Your track | `audio.mjs beats` detects BPM, beats, downbeats and drops (librosa when available); SFX are layered on top | Existing music |
The two tiers can be layered (Tone.js music underneath, synthesized SFX on top, mastered once). Every mix is mastered to −14 LUFS / −1 dBTP. The agent can't hear, so `audio.mjs check` reports loudness, band balance and silences, measures the "breath" before each declared drop, and draws a waveform and spectrum for the agent to look at.
---
## What It Ships
```text
skills/motion-showreel/
├── SKILL.md workflow, baseline rules, tool cheat sheet
├── README.md / README.zh-CN.md
├── manifest.json
├── references/
│ ├── formats.md 9 formats (showreel, product film, UI motion, kinetic type, logo, loop, data, era, green-screen)
│ ├── styles/ INDEX.md + _template.md + 28 style files
│ ├── craft.md rhythm, motion, transitions, camera, type, colour, texture, signature moments, default-look blocklist
│ ├── sound.md sound direction, synth API, Tone.js, arcs, groove / harmony vocabulary, mixing, audio defaults
│ ├── stack.md page contract, determinism, per-tech pitfalls, fonts, multi-format, performance
│ ├── recipes.md ready-made snippets (masked type, morph chains, particle type, seamless loops, WebGL post, canvas pseudo-3-D …)
│ ├── brief-template.md the structured prompt every piece starts from
│ ├── review.md technical checks, review sheet, independent review, common problems, delivery checklist
│ └── field-notes.md what proved to work in real pieces, with evidence (written back after each delivery)
├── scripts/
│ ├── setup.sh · check-env.mjs · scaffold.sh
│ ├── render.mjs stills, sheets, three directions, poster, determinism, text framing, proxy, master
│ ├── audio.mjs build · check · beats · samples · mux
│ ├── inspect.mjs qa · sheet · phone · strip · frames · motion · loop · grid · heat
│ ├── lib/ synth, Tone.js renderer, FFT, browser, project, frame analysis, text hook
│ └── test/ regression tests (npm test)
└── assets/starter/ index.html · motion.js · timeline.js · score.mjs · score.tone.js · score.layer.mjs · build.sh
```
---
## Quick Start
Install the skill (see the [collection README](../../README.md#install)), then run the one-time setup from the skill folder:
```bash
sh scripts/setup.sh # Playwright + Chromium + Tone.js, then an environment check
```
Requirements: **Node 18+** and **ffmpeg** on `PATH`. The setup script never installs system software for you.
Then just ask:
```text
Make a 15-second motion piece for our launch. Go all out.
Make a logo sting for "Garden", swiss-editorial style.
Turn these three screenshots into a 20-second product teaser, with music.
A 6-second seamless generative loop, no sound.
```
The agent scaffolds `