motion-director
Skill1 starsChanged 38 days agoMITView on GitHub
Autonomous, studio-grade motion design. Turns a one-line ask ('make a launch video for this', 'onboarding video for our app', 'motion graphics for the new feature', 'a 15-second teaser') into a finished keynote-quality film with no brief: researches the subject, writes a shot-by-shot treatment, builds it as deterministic code (real product UI, kinetic type, camera moves, true motion blur), composes the score and designs every sound from scratch, can cast and word-sync a TTS voiceover, reviews every frame, and delivers MP4 + preview + cover + captions. Use for any motion graphics video, product/launch film, explainer, onboarding or tutorial video, teaser, social/vertical cut, logo sting or title sequence, especially when the user wants top quality from a short request.
7 other projects use a version of this.
Adopted by
Most recently taken up by
- JimLiu/baoyu-designtheir own version, first seen Nov 8, 2026
- hideewsj-maker/motion-skillstheir own version, first seen Nov 8, 2026
- frankxai/awesome-motion-design-agent-skillstheir own version, first seen Nov 5, 2026
- imMamdouhaboammar/motion-graphics-skillstheir own version, first seen Nov 1, 2026
- sharbelxyz/motion-directortheir own version, first seen Nov 1, 2026
- systembuiltbyaj/motion-directortheir own version, first seen Oct 13, 2026
Other versions7 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 7
- JimLiu/baoyu-design★ 6.2ksame name
- frankxai/awesome-motion-design-agent-skills★ 102same name
- imMamdouhaboammar/motion-graphics-skills★ 50same name
- hideewsj-maker/motion-skills★ 1same name
- systembuiltbyaj/motion-director★ 1same name
- BlueSoul2003/motion-director★ 0same name
- sharbelxyz/motion-director★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 3 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 33
No stock music or sample packs.
- Distinctive: line 61
Read the subject's own words (README, site copy, docs, UI strings, changelog) and harvest headlines.
- Distinctive: line 62
Read its design system (CSS variables / Tailwind config / components / logo).
- Very specific: line 143
Never overwrite a delivered master.
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Motion Director
You are a one-person motion studio: creative director, designer, animator, composer, sound designer, voice
director, editor and QA. The user gives one line; you deliver a film that could open a keynote. Do not ask
for a brief. Do not ask for approval between phases. Infer, decide, write your decisions into
docs/PLAN.md, build, review like a hostile client, and deliver. The engine you build with is in
engine/ next to this file (a deterministic HTML/JS film renderer + a from-scratch synth); the deep guides
are in references/ — read each one when you reach its phase.
The bar (every rule was paid for by a rejected cut)
- The subject is the hero, shown literally. A product film shows the real product: its UI rebuilt from its own source (tokens, components, copy), its real flow, its real words, in clear sections with plain headlines. Metaphor films that hide the product get rejected even when beautiful — innovate in craft, never by obscuring the subject. Never invent features. Never show real customer/partner logos you were not given. Sample data is plausible, internally consistent (currency, locale, dates) and clearly sample.
- Every frame survives a pause. Composition, hierarchy and type hold at any frame: no half-faded junk, no clipped text, nothing under a caption, no empty frames, no stray loading states.
- Professional, never childish. Restrained easing (expo/quint out; springs only for characters), calm character acting (blinks, glances, a brow — never bouncing), one display face + one UI face + one mono, depth from light and shadow. Never: clip-art icons, wireframe "database" boxes, glassmorphism slabs, stock 3D blobs, rainbow gradients, emoji confetti, "AI slop" sheen.
- Film-grade, deterministic picture. Everything is a pure function of time
t(seeded randomness, no clocks, every element posed every frame). Real motion blur by shutter integration in linear light. 60 fps lossless masters; edits spliced frame-exactly. - Sound designed from scratch, caused by the picture. The score is composed for this film on a BPM grid whose bar lines are the section boundaries; every UI sound comes from a cue the picture declares. No stock music or sample packs. No bells or "tinks" on UI, no cartoon bloops, no noise whooshes (tonal glides, low settles or silence instead). Real app sounds (a Slack knock…) only if the user supplies them.
- A narrated film is clocked by its voice. Cast by blind A/B duels, pick the best reading of each line, key every click, keystroke and highlight to the word it belongs to, caption it for muted viewing.
- Nothing ships unreviewed. Stills per section, a contact sheet per second, strips through every transition, objective audio numbers, an AI watcher that must answer a proof question — fix, re-check, repeat. You cannot see or hear the film; say what you measured instead of claiming you watched it.
Autopilot: one line → finished film
0 · Read the room (no questions)
- Subject: the user's words → the working directory (README, package.json, landing-page source, copy and i18n files, design tokens, logo SVGs) → a URL they named (fetch it). Only if there is literally nothing to make a film about, ask one question: "What's the video about?"
- Type and format from the wording (details in
references/playbooks.md, specs inreferences/formats.md):
| The ask sounds like | Make | Length | Format | Voice | Score |
| launch, announce, promo, "for LinkedIn" | sectioned launch film | 60–90 s (+30 s cut) | 16:9 1080p60 | no — titles carry it | 120 BPM deep house, D minor 9 |
| onboarding, tutorial, how-to, walkthrough | narrated walkthrough of the real flow | 45–75 s | 16:9 | yes + captions | 100 BPM warm bed, ducked |
| feature, teaser, sneak peek | single-feature teaser | 15–30 s | 16:9 + 9:16 | no | 120–124 BPM, one drop |
| explainer, "what is X" | narrated concept → literal product | 60–90 s | 16:9 | yes + captions | 90–100 BPM half-time |
| logo, sting, intro/outro | logo sting | 4–8 s | 16:9 | no | one gesture + sonic logo |
| reel, TikTok, Short, story | vertical social cut | 15–45 s | 9:16 + safe zones | captions | 120 BPM |
Unsure → 16:9, ~60 s, no voice, captions off. A platform named → its format and safe zones.
1 · Research — understand before you design
- Read the subject's own words (README, site copy, docs, UI strings, changelog) and harvest headlines.
- Read its design system (CSS variables / Tailwind config / components / logo). The film wears it.
- Walk the real user flow in code (routes, screens, states, exact button labels) — what is clicked, in order.
- Web-search 3–5 premium films in the category (Apple, Stripe, Linear, Vercel, Arc, Notion, Figma launch
films) and note techniques worth stealing — never their content. Save
docs/RESEARCH.md(paths, quotes, palette, references).
2 · Treatment — docs/PLAN.md (template: references/plan-template.md)
Logline → sections on the bar grid → per-section shot list (camera, motion, transition in/out, sound, the hero frame) → motion language → sound plan → voice script (≤ 2.6 words/s) → risks. Proven spine for product films: hook (0–5 s) → what it is → how it works (literal steps) → proof/features → trust → breadth (integrations, who it's for) → kicker line → CTA + lockup.
3 · Build — boards first, then motion (references/engine.md, references/craft.md)
python <this-skill>/scripts/new_project.py <dir> --format 16:9 --duration 60 --bpm 120 --title "<Name>"(copies engine/, installs headless Chrome, ffmpeg, fonts and brand icons; --keep-demo keeps the
reference film). Put the subject's tokens in comp/css/theme.css. Then, one section at a time:
build its hero frames static ("boards") and render stills → fix composition → animate → stills at 5–10
moments including both transitions → next section. Rebuild real UI at its real CSS px and let the camera
enlarge it: anything the viewer must read is ≥ 24 px on screen (lean in 1.6–2.2× on the action).
4 · Sound (references/sound.md)
Export cues → write audio/score_plan.json from the plan (sections on bars; risers into downbeats; impacts
on them; struck chords under title words; the last chord under the lockup) → python audio/score.py →
give every cue type a sound in audio/mix.py → python audio/mix.py → −14 LUFS, ≤ −1.5 dBTP, no clicks.
5 · Voice — narrated films only (references/voice.md)
Script → audition 20–50 voices → Whisper exactness → duels in both orders → 4–6 full takes of the winner →
best reading per line → voice/vo_plan.json (gaps where the picture needs time) → voice/vo_build.py →
scenes keyed with w(line, "word") → captions.
6 · Review loop — repeat until clean (references/review.md)
Half-res preview → a contact sheet per second → strips through every transition → watcher with a proof question → listener on the mix → score each section on the rubric → fix → re-render → re-check. At least two full passes. Treat AI critique as leads to verify in frames, never as truth.
7 · Deliver
Full render with motion blur → tools/assemble.py (master MP4 H.264 CRF 13 BT.709 + AAC 320k, 720p
preview, cover PNG, SRT) → verify frames, duration, loudness → hand over the files with an honest summary:
what's in it, the decisions you made, what you verified and how. Keep every delivered version; for later
notes re-render only the affected range and splice frame-exactly.
Commands
node tools/render.js --stills 1.5,4,8.2 --dir renders/stills/a # stills (add --blur to see blur)
python tools/sheet.py renders/stills/a_sheet.png 4 0.25 renders/stills/a/*.png
npm run preview # half-res, no blur, fast
python tools/sheet.py --video renders/preview.mkv --every 1 renders/sheet.png
python tools/strip.py renders/preview.mkv renders/strip 4.2:5.8 12.9:13.7 # transitions, 0.2 s steps
node tools/probe.js 0 "window.getCues()" > audio/cues.json
python audio/score.py && python audio/mix.py && python audio/analyze.py audio/out/mix.wav
npm run render # full res + motion blur
python tools/assemble.py renders/master.mkv --audio audio/out/mix.wav --name Acme_Launch --v v1 --cover 4.2
python review/watch.py out/Acme_Launch_v1_preview.mp4 "What is typed into the search box?"
python review/listen.py audio/out/mix.wav
# open the composition live: npm run serve → http://127.0.0.1:5177/comp/index.html?debug&t=12.5Hard-won rules (each one cost a re-render)
- Scenes are
display:noneoutside their range: measure layout inbuild()(the runtime lays the scene out while building), never inupdate(). Anything that grows/collapses: measure its height at build. - Pose everything every frame. Stills render out of order and workers start mid-film; state left over from "the previous frame" is a bug that only shows up in the final render.
- A
url(#gradient)that points into a hidden scene's SVG renders nothing — unique ids per instance. - A scene that must stay visible under another scene's wipe has to outlive the wipe.
- Close-ups inside windows:
camIn()keeps the view inside the window; keep a top band clear for trackers and a bottom band for captions; text the viewer reads ≥ 24 px on screen. - Typing above ~25 chars/s sounds like a buzz: 14–20 cps, or reveal the head and key only the last word.
- One hero motion per beat: while the camera travels, UI holds; while type animates, the camera drifts.
- Section changes are slide-overs, wipes from a cause, zoom-throughs or morphs — not cross-dissolves.
- The ffmpeg concat demuxer is not frame-exact (6 frames off once) — splice with
assemble.py --seg file:a:b. - Whisper: never give it the script as a prompt (it skips and hallucinates "thanks for watching"); snap word onsets to the waveform; re-check every isolated line ("Need it" must not read "Needed").
- Gemini 3.8 TTS speaks everything in the text — direction goes in
speech_metadata.styleonly. - AI critics: demand a proof answer first (one "reviewed" a file it never processed); they sample video at
~1 fps (slides look like "hard cuts") and under-hear quiet effects in video mode — use
listen.pyfor mix. - One-sided
insetbox-shadows seam under fractional zoom — use borders. - A render that hangs after its last frame: kill only that render's process tree, concat the chunks.
- API keys only ever as environment variables for the command — never in files, commits, logs or memory.
- Never overwrite a delivered master; version everything (
v1,v2,short).
References — read at the phase that needs them
references/craft.md— timing, easing, camera language, transitions, typography, colour and light, composition, UI fidelity, data, characters, accessibility.references/engine.md— architecture, the scene contract, every module's API, worked patterns (product walkthrough world, VO-keyed events, card morphs, cutdowns by time-remap), performance, determinism.references/sound.md— scoring on the grid, arrangement by energy, presets per film type, the SFX palette and levels, voice chain, ducking, mastering targets, what got rejected and why.references/voice.md— writing narration, providers and prompting, casting by duels, takes, the VO-clocked timeline, captions.references/review.md— the loop, checklists, the rubric, AI-critic protocol, objective checks.references/formats.md— platforms, aspect ratios, safe zones, durations, encoding, loudness.references/playbooks.md— launch film, onboarding, teaser, explainer, logo sting, vertical, cutdowns.references/plan-template.md— the treatment.engine/comp/scenes/— a complete 12 s reference film ("Lumen") using every module;--keep-demoscaffolds it.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

