morph-clips
Skill2 starsChanged 27 days agoMITView on GitHub
Turn a video and its transcript into motion-graphic B-roll clips timed to the spoken words, in a one-shape style — a single element morphs from pill to card to terminal to chart and never cuts, a cursor drives every change, and every change lands on a word. Use when someone asks for motion graphics, B-roll, animated cutaways, explainer animations or overlay panels for a talking-head, screen-recording or presentation video.
In this repository13 other files it gives its agents.
- channel-pulseSkill
- check-renderSkill
- check-thumbnailSkill
- check-voiceoverSkill
- find-topicSkill
- localizeSkill
- make-shortsSkill
- produce-videoSkill
- research-factsSkill
- retention-by-sceneSkill
- setupSkill
- upload-privateSkill
- write-scriptSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 34
Ask with AskUserQuestion, skipping anything already answered: the video (ideally the final edit, so clip times do not move), the transcript …
- Very specific: line 47
Look at contact.png yourself.
- Very specific: line 64
Write one fragment per clip in motion/clips/NN-name.html following the reference and examples (copying and adapting an example is fine).
- Distinctive: line 69
If a subagent writes clips, tell it to write in small pieces with edits — a whole large clip in one reply can hit the output limit.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Morph clips
You make short motion-graphic clips for a creator's video. Every clip is one shape that never cuts: it springs its size, corners and colour from state to state while its content swaps with a short blur. A cursor drives the changes with real clicks and drags, and every change lands on a spoken word. The creator drops the clips into their own editor; you also give them a preview render and two review pages.
Everything is in this skill folder ($SKILL below):
cli/morph.mjs— the only tool you run:node $SKILL/cli/morph.mjs <command>.engine/— the motion engine (motion.js) and page shell (base.css).brands/—dark.json(default) andlight.json; the user's own brand is a JSON file in the same format.reference/engine-api.md— how to write a clip, andreference/authoring.md— placement, content rules, style defaults and gotchas. Read both before your first clip.examples/— three finished clips: full-frame cutaway, chapter card, transparent panel. They are the quality bar and good starting points.templates/— the review pages.fonts/— Inter and JetBrains Mono (OFL).
Work in a motion/ folder in the user's project unless they name another.
1. Set up (first run)
node $SKILL/cli/morph.mjs doctor. If anything is missing, node $SKILL/cli/morph.mjs setup installs
Playwright into the skill folder and its Chromium into Playwright's browser cache. Needs Node 18+ and ffmpeg (with prores_ks for
transparent panels). ffprobe is optional.
2. Interview — one round
Ask with AskUserQuestion, skipping anything already answered: the video (ideally the final edit, so clip
times do not move), the transcript (word timestamps from Whisper are best; an SRT or VTT works, ±0.2 s per
word), density (light 1–3 clips per minute when the video has its own visuals, medium 4–7 for talking heads,
heavy), look (dark, light or their brand file, format in reference/engine-api.md), layout (face
cam, screen area, empty space) and anything to avoid or include (lines to keep on their face, real numbers).
3. Inspect the footage
node $SKILL/cli/morph.mjs inspect video.mp4 motion/work [--region x,y,w,h] [--protect x,y,w,h]
node $SKILL/cli/morph.mjs words transcript.srt > motion/work/words.txtLook at contact.png yourself. If the frame has a face cam or a screen area, measure
the boxes and pass them; layout-check.png draws them on a real frame (blue = region,
green = protected) so you can confirm they fit. They go into plan.json layout.
4. Plan — get approval before any code
node $SKILL/cli/morph.mjs new motion --video video.mp4 --brand dark, then show a table
with one row per clip and wait for the user's OK:
| # | In–Out | The line it covers | What the shape does, on which words | Placement | Why |
Decide per clip how much of the frame it takes (full, region, panel or nothing) and why, and
follow the content rules: real objects, never invented numbers, short on-screen text, one idea per clip,
one change per spoken beat. Both are in reference/authoring.md.
5. Build
Write one fragment per clip in motion/clips/NN-name.html following the reference and
examples (copying and adapting an example is fine). Put each state change on its word:
clip-local time = word time − clip in. Use brand tokens (var(--accent), M.brand.accent)
instead of hard-coded colours, so the same clip works in any brand.
If a subagent writes clips, tell it to write in small pieces with edits — a whole large clip in one reply can hit the output limit.
6. Check stills on the key words
node $SKILL/cli/morph.mjs stills motion NN-name 0.4 1.2 2.1 …Pick the times where each state has settled plus a couple of mid-morph moments. The tool
reports text that leaves the frame, is clipped by the shape or sits under a protected box,
and a cursor that leaves the frame — fix every OVERFLOW line. Then look at the sheet yourself: crowding,
readability, colour contrast, a label hidden by a neighbour, off-word timing. A clean
overflow report is not a visual approval.
7. Render and deliver
node $SKILL/cli/morph.mjs check motion
node $SKILL/cli/morph.mjs render motion [id …] [--parallel 2]
node $SKILL/cli/morph.mjs composite motion
node $SKILL/cli/morph.mjs pages motionrender writes motion-blurred .mp4 files for full/region and ProRes 4444 .mov with alpha for panels,
named by in-point; it is slower than real time. composite makes out/preview.mp4 with the original audio and
checks its length. Look at a few preview frames (clip in, middle, out) yourself.
The user gets motion/out/: the clips, TIMING.md (file, in, out, placement, the line,
what is illustrative), preview.mp4, viewer.html (step through clips) and compare.html
(original vs. edited, side by side, stacked or wipe). Say plainly that the preview is for
review: for the final cut they place the clips in their own editor.
Style and gotchas
Style defaults (one accent, one UI font, springs without bounce, no made-up data) and the known engine
gotchas (blurry text under will-change, overlapping text swaps, cursor leaving the frame, SRT drift) are
in reference/authoring.md. Check them before you render.
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.

