Skip to content
Back to skills

Mos Ski Motion Video

ASecurity

Motion Video. Make product presentations, launch reels, feature demos and event promos as motion graphics rendered from code (Remotion), from a Figma design link, a product URL or a brief. House style is simple, punchy "jitter" motion (on-twos timing, snaps, montage bursts) or calm premium. Use when the user asks for a motion video, product video, launch video, showreel, animated explainer, motion ad, or "animate this Figma".

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
designpythongobashspring

Works with

  • cursor
  • cli
  • mcp

Security analysis

A100/100

Pro scans all 16 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add Wanfeng1028/muse --skill mos-ski-motion-video --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mos Ski Motion Video?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Mos Ski Motion Video
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wanfeng1028-mos-ski-motion-video/badge)](https://www.skillsdirectory.com/skills/wanfeng1028-mos-ski-motion-video)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: mos-ski-motion-video
description: Motion Video. Make product presentations, launch reels, feature demos and event promos as motion graphics rendered from code (Remotion), from a Figma design link, a product URL or a brief. House style is simple, punchy "jitter" motion (on-twos timing, snaps, montage bursts) or calm premium. Use when the user asks for a motion video, product video, launch video, showreel, animated explainer, motion ad, or "animate this Figma".
---

# Motion Video

Builds motion graphics in code: Remotion + the motion library in `engine/src/motion/lib.ts`
(springs, tracks, the jitter kit), `figmaKit.tsx` (animate real design screens), ffmpeg, and
real sound samples (with synthesized fallbacks). Everything is a pure function
of time, so every frame can be rendered, checked and fixed on its own.

`SKILL` = this skill's folder. `M` = `.motion/venv/bin/python SKILL/scripts/motion.py`. Run
commands from the user's project folder (Remotion commands from inside `studio/`).

## Setup (first time in a project)
- If `studio/src/motion/` or `.motion/venv` is missing, run `bash SKILL/scripts/setup.sh`
  (add `--beats` to also install librosa for measuring a music track). It creates `studio/` (a
  Remotion project with the motion engine and an example reel), `references/`, `demos/`, `work/`,
  `output/`, `sfx/` and `music/`.
- Check it works: `npx remotion still src/index.ts Reel-wide ../work/test.png --frame=60 --scale=0.33`
  (in `studio/`), then look at the PNG.

## Read first
`reference/style-study.md` (how to watch the user's `references/`), `reference/motion-language.md` (the jitter kit + product patterns: the core of this skill),
`reference/patterns.md` (what strong reference pieces do), `reference/craft.md` (render contract,
brief templates, shot-list gate, critique loop), and `reference/figma.md` (when there's a Figma
link). If the project has a brand file (`brand/brand.md` or similar), read it too.

## Pipeline (`work/<name>/`)
1. **Brief.** Collect: product + Figma link or URL, the goal (launch, feature, ad, event),
   duration (default 20s), formats (default 16:9 + 9:16), energy (**jitter** by default, or calm
   premium), CTA, music (file, synthesize, or none), voiceover (none, supplied, or generated; which
   voice), and **the problem in the customer's words**. Check `references/` and `demos/`. Ask only
   for what's missing; propose defaults. If `references/` is empty, ask for 5–10 clips of the
   motion the user wants (from Pinterest, Instagram, X, ...) before planning.
2. **Style study.** Watch every clip in `references/` and write `work/<name>/style.md`
   (`style-study.md`). This sets pace, type behaviour and moves for the whole film.
3. **Assets.** Follow `figma.md` (Figma MCP → tokens + exported layers in
   `studio/public/<name>/figma/`), one named Figma frame per scene that shows the product. Copy the
   user's `demos/` recordings (Jitter, After Effects, Rive, Canva, Figma prototype captures) into
   `studio/public/<name>/demos/` and note each one's flow and length. List the assets, tokens and
   recordings found, and **map every product scene to a frame or recording**. A scene with no
   source is a question for the user, never something to design.
4. **Script.** Write `work/<name>/script.md` on the arc **problem → solution → demo → CTA**
   (roughly 15% / 15% / 55% / 15% of the runtime): the pain in the customer's words, the product
   named as the answer, the demo told through real screens and recordings, one CTA. One short line
   per beat; if there's a voiceover, this is the VO script. Show the script and a 3–5 line summary
   of `style.md` together, and wait for an OK.
   **Voiceover** (if any), right after the OK so shots are timed to it: use the user's recording,
   or generate one line per beat with the TTS they have (a service, or a local model such as
   Kokoro: `af_heart`, `af_bella`, `am_michael`, `am_adam`, `bf_emma`, `bm_george`, ...).
   **Rotate voices:** read `work/voices.md`, pick a different gender or accent from the last video
   unless the user named one, match it to the audience, and append `<date> <name> <voice>`. Save
   `work/<name>/vo.wav` and the line timings; the shot list fits the VO, not the other way round.
5. **Beat grid.** With a track: `M beats music/track.wav > work/<name>/beats.json`. Without one:
   `gridFromBpm(120, dur)` in code. If the measured BPM is half or double what you hear, fix it
   before planning.
6. **Shot list → gate.** Write `work/<name>/shotlist.md` from `SKILL/templates/shotlist.md`
   (act, time on the beat grid, what's on screen, its source frame or recording, pattern from
   `motion-language.md` or `style.md`, text, SFX). Show it to the user and wait for an OK.
7. **Build.** One composition file per film in `studio/src/motion/<Name>.tsx`, modelled on
   `ExampleReel.tsx`: shots as `{from, to, draw(s)}`, all motion from `lib.ts`, product UI from
   the real screens via `figmaKit.tsx` (`Crop`, `Field`, `Option`, `Press`, `Cursor`), the design's
   tokens for colour, type and radius, layout in `unit(format)`. Demo recordings play with
   `<OffthreadVideo>` from `public/<name>/demos/`, trimmed and cropped to the step being shown,
   and can carry the same cursor, press and zoom overlays as the Figma screens. Register each
   format in `register.tsx` (ids like `<Name>-wide`, `<Name>-vertical`).
8. **Critique loop.** Stills per beat + a fast-action strip + a phone-size sheet; score; fix the 3
   worst; repeat until everything is 8+ (`craft.md`). At least 3 rounds. Look at the frames
   every time, compare them against the reference sheets, and run the slop check (hard rules)
   on every round.
9. **Sound.** Prefer **real samples**: licensed SFX in `sfx/<type>.wav` (any type name works:
   `pop`, `click`, `sent`, `ding`, `whoosh`, `typing`, `shutter`, `riser`, `glitch`, `cash`, ...) and
   a licensed or generated bed in `music/`. The built-in synthesized sounds are only a fallback for
   drafts; if `sfx/` is empty, tell the user and suggest adding a sample pack. Keep it **sparse**:
   about 6–8 effects per 15s, on clicks, sends, marks and the outro only. Write
   `work/<name>/events.json` (see `SKILL/templates/events.example.json`), then `M sfx
   work/<name>/events.json <dur> work/<name> --samples sfx` (add `--music calm|energetic` only for
   a draft bed when there's no track). Vary the music between videos.
10. **Render + mix.** In `studio/`: `npx remotion render src/index.ts <Id>-<format>
   ../work/<name>/<format>.mp4`. Then `M mix work/<name>/<format>.mp4 output/<name>_<format>.mp4
   --music music/<track>.wav --sfx work/<name>/sfx.wav` (music-led: music −20, SFX −22,
   two-pass loudnorm to −14 LUFS, video re-encoded to yuv420p bt709). Add `--voice vo.wav` if
   there's a voiceover; the music ducks under it. `M qa output/<name>_<format>.mp4` to confirm.
11. **Deliver.** `output/<name>_<format>.mp4` per format, a poster frame (`npx remotion still …
   --frame=<best>` → `output/<name>_poster.png`), a contact sheet (`M sheet`), and a short note:
   what's in it, what to confirm, and the next improvement.

## Hard rules
- **Never design from scratch.** Every product screen comes from the user's Figma (MCP or a link
  to the exact frame), their `demos/` recordings, or a capture of the live product. No invented
  layouts, components, illustrations or "inspired by" mockups. If a scene has no source, stop and
  ask which frame or recording shows it.
- **No slop.** Banned: sparkles ✨ and star bursts, emoji, glowing orbs and blobs, AI-picked icons,
  stock "magic" gradients, robot or brain imagery for AI, lens flares. **No icons at all** unless
  they come from the user's Figma or icon set, used exactly as supplied. Typography, real UI and
  motion carry the film. Check every critique round for these and cut anything that slipped in.
- **Story arc:** problem → solution → demo → CTA, every film. No feature lists without a problem.
- **Use the real screens, never redraw the product.** Export Figma frames at 2× (or capture the
  live product at 2×), crop cards and regions in code with `Crop`, and animate on top: live text
  typed into real inputs (covering the placeholder), selection states redrawn exactly over the real
  options, presses and cursor clicks on real buttons. Rebuilt "lookalike" UI reads as AI slop.
  Never invent screens or features.
- Keep out of shot: personal data, real customers' details, and screens with outdated branding.
  Typed demo values use neutral, fictional data.
- **Copying a reference's storyboard**: same beats, same timing, same scale and motion. Swap in
  the brand's own content, and end on the brand's own outro.
- Pure function of time: no timers, no CSS transitions, no `Math.random` (use `rng`)
- One display face + one UI face (from the design), one accent colour
- Jitter goes on type, stickers and transitions; body UI text stays crisp and steady
- Banned: centred title on a gradient as the main idea, everything fading in, corner labels or
  frame borders, glows on UI chrome, generic particle bursts
- Don't copy reference pieces' logos, characters or footage. Copy the grammar.

Files in this skill

  • LICENSE1 KB
  • README.md5.9 KB
  • SKILL.md9 KB
  • engine/package.json376 B
  • engine/src/index.ts89 B
  • engine/src/motion/lib.ts5.7 KB
  • engine/tsconfig.json162 B
  • reference/craft.md3.6 KB
  • reference/figma.md2.4 KB
  • reference/motion-language.md3.7 KB
  • reference/patterns.md4.1 KB
  • reference/style-study.md2 KB
  • scripts/motion.py13.8 KB
  • scripts/setup.sh2.8 KB
  • templates/events.example.json397 B
  • templates/shotlist.md1.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.