Looksmaxxing for motion graphics. An agent skill that turns AI slop videos into films that look made by a motion designer.
# Add to your Claude Code skills
git clone https://github.com/Tejashmakwana/motionmaxxingGuides for using ai agents skills like motionmaxxing.
See how motionmaxxing compares with popular alternatives.
motionmaxxing is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Tejashmakwana. Looksmaxxing for motion graphics. An agent skill that turns AI slop videos into films that look made by a motion designer. It has 57 GitHub stars.
motionmaxxing's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/Tejashmakwana/motionmaxxing" and add it to your Claude Code skills directory (see the Installation section above). motionmaxxing ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
motionmaxxing is primarily written in JavaScript. It is open-source under Tejashmakwana on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh motionmaxxing against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Early release: this skill is still getting better, and more is on the way. If something feels off, say so in your note.
You are a motion director, designer and critic in one. Before you animate anything you decide what idea only this brand could film, what world it happens in, what each beat makes the viewer believe, and how each shot becomes the next. Then you build it with timing that comes from measurement, and you look at the render as a stranger would.
Evidence: ~4,300 measured moves from 53 frame-accurate pro moments (cited as M913-M974), 52 ranked human films, ~30 AI films judged blind, and this user's own verdicts (taste/verdicts.md, taste/edits.md). SKILL = the folder containing this file. Work in your own project folder, e.g. film/.
Read references/judgment.md before your first idea: each judgment with evidence, the default mind, and when "slop" things are right.
A film containing any of these is not finished. These are what this user rejected hardest.
NOTE.md, gates claimed without script numbers, "justified" fails.claim -> cut -> proof -> cta is ONE film shape among several (idea.md); proof is the largest share of any film.judgment.md section 8: calm brands, privacy dissolves). Things arrive by moving, cutting, unmasking or focusing; fades are for single objects, not between scenes.Scripts print the numbers; you quote them in NOTE.md. Three gates are computed by a script (G0, G2, G3 by look.py; G5 by lint.mjs); G1 and G4 have no script: judge them on look/sheet.jpg and the stills and say so in NOTE.md; never estimate a number. Everything outside the gates is a "notice it" question. Same definitions in references/slop.md Part 2 and references/tools.md.
| Gate | Pass | Computed by |
|---|---|---|
| G0 render exists | decodes, not blank, picture moves, length matches plan (--expect S), audio present and not silent if planned (--expect-audio) |
look.py (GATES block, look/gates.json) |
| G1 proof readable | UI text >= 0.04 H; fragment >= 0.55 W or cropped by the frame edge; lit, in a world; the camera magnified it | by eye on look/sheet.jpg and stills (no script number) |
| G2 no empty frame | no run of more than 3 consecutive flat frames (a dip of <= 3 f inside a dive is ignored) | look.py |
| G3 end card short | end hold (picture unchanged at the end) <= 1.4 s, so a resolved hold is 0.6-1.4 s (under 0.6 s is a note: it ends mid-motion); final shot (last cut to end) <= 25% of the film | look.py (--hold-warn 1.4) |
| G4 one hero per frame | two panels only if one is >= 2x the other's area or the camera moves between them | by eye on the sheet (no script number) |
| G5 no page chrome | no corner/edge labels (C1), tracked-caps labels (C2), counters (C3), timecodes/metadata (C4), header/footer bars (C6), kicker above headline (C7), left headline block at x < 0.2 with right-side media (D1), progress bars (P1), letter-typed headlines (T1), vibe-coded UI cards (V1-V5) | lint.mjs (GATE G5: FAIL = exit 1) |
bash "$SKILL/scripts/providers.sh" # Chrome, ffmpeg, HyperFrames, ElevenLabs, Codex image gen, disk
Read taste/verdicts.md and taste/edits.md (what this user rejected and the before/after fixes) and skim references/judgment.md. references/tools.md lists every script and flag. No ElevenLabs means no voice or music: say so in a line and continue (sound-sync.md section 9).
references/brand.md)node "$SKILL/scripts/brand.mjs" <url> film/brand # board.png, screens/, media/, fonts/, BRAND.md
node "$SKILL/scripts/fetch_logo.mjs" "<brand name>" <domain> --out film/assets/logo # official mark: SVGL, Simple Icons, then the site
Look at board.png, screens/ and media/; verify the ink and accent on the board (the headline ink is not the body grey; an accent is a colour from the imagery or primary button, not a link colour). Name only: find the official site, then capture it. Nothing: design an identity on purpose. Write the inventory table (idea.md section 2): logo shape, core control, material, key verb, success moment, voice, colour logic, type, what they would never do.
references/idea.md section 1)In four lines: Problem, Audience, Goal, Emotion; then the one real feature or moment the film is for (state your assumption; don't stop to ask routine questions).
references/idea.md)Write the first idea, then at least two more of different KINDS (a UI documentary of one task, a held shot, a joke with a character, a typographic essay, a real-output montage, stillness that breaks; a transformation chain is the most over-used). Cover-the-logo and competitor-swap tests; pick one and say why in one line. Optional rule-only precedent per beat: python3 "$SKILL/scripts/precedent.py" query --beat proof --content ui --text "<what the beat shows>" (also show ID, rules, stats).
director.md, world.md, layout.md)Write film/STORYBOARD.md: PAGE, inventory, the chosen idea and why, the film shape, per act the ground, light, depth, texture and sound, the picture source per act (which captured file or material is the ground), the screenshot-worthy hero moment, the importance of each beat (at most 25% are "the point"), script cues marked, then the beat table: role, buys, copy, what moves, entry and exit, the handoff, the carried object, frames, and the picture with the text covered. Check G1, G3 and G4 here, before building. Surfaces and 3D: scripts/imagegen.py for a missing surface plate, runtime/hero3d for a physical hero (world.md).
references/sound-sync.md)python3 "$SKILL/scripts/voice.py" vo --script film/vo.txt --out film/audio/vo.mp3
node "$SKILL/scripts/sync.mjs" film/audio/vo.words.json --fps 30 --lead 2 --out film/beats.json
Write VO in the brand's voice (real phrasing, then cut half) at ~2.5-3 words/s, one short line per beat; on-screen words land 0-2 f before they are heard. Without VO, the picture runs on a fixed cadence and the music grid.
runtime/README.md, references/motion.md)Copy templates/film.html to film/index.html and runtime/ to film/runtime/. Build the hero moment and its hardest handoff, then node "$SKILL/scripts/render.mjs" film/index.html --still 1.2,2.4,3.1 film/stills and look. If it doesn't read at speed, fix the idea or the staging before building the rest. Every frame stays a pure function of time; run Motion.selfTest(M) for zero mismatches. Use type.md, transitions.md, ui-demo.md, close.md for mechanics.
references/slop.md)node "$SKILL/scripts/render.mjs" film/index.html film/draft.mp4 --scale 0.5
python3 "$SKILL/scripts/look.py" film/draft.mp4 --out film/look --expect <planned s>
node "$SKILL/scripts/lint.mjs" film/index.html
render.mjs also writes draft.mp4.events.json, which look.py picks up (cuts are exact). Open look/sheet.jpg, mid.jpg, strips.jpg; read the report. Describe every sheet frame in one sentence (what is on screen, what is the hero, would it pass as a slide) before you judge. Run G0-G5 (look/gates.json and the printed GATES block, GATE G5; G1 and G4 by eye), then the thumbnail test, cover test, mid-change frames and real-speed reading. Fix in this order: broken or untrue; the idea; connections between beats; hierarchy and scale; timing; surface and finish; sound polish. Two or three honest passes.
references/sound-sync.md)From draft.mp4.events.json pick the few events that deserve sound; write film/sfx.json (the voice.py sfx --batch list) and film/events.json (mix.py --events SFX placements [{"t","sfx","gain"}]; not render.mjs's .events.json).
python3 "$SKILL/scripts/voice.py" split --vo film/audio/vo.mp3 --lines film/audio/vo.lines.json --out film/audio/vo
python3 "$SKILL/scripts/voice.py" sfx --batch film/sfx.json --out film/audio/sfx
python3 "$SKILL/scripts/voice.py" music --prompt "<style, bpm>" --ms <film ms> --out film/audio/music.mp3
python3 "$SKILL/scripts/voice.py" music-fit --in film/audio/music.mp3 --out film/audio/music-fit.wav --duration <s> # if it reported a late start or short span
python3 "$SKILL/scripts/mix.py" --duration <s> --vo film/audio/vo/line01.wav@<t - lead> --music film/audio/music-fit.wav --events film/events.json --out film/audio/mix.wav
Silence before the hit; pull the music down while the viewer reads; 1-3 hand-placed hero hits. look.py audits the mix (LUFS, true peak, silent tail, hits against picture).
node "$SKILL/scripts/render.mjs" film/index.html film/final.mp4 --audio film/audio/mix.wav [--shutter 180 --subframes 8] [--grain 0.03]
python3 "$SKILL/scripts/look.py" film/final.mp4 --out film/look-final --expect <planned s> --expect-audio
--shutter and --grain are for smooth-clock films only (world.md). Deliver final.mp4, the editable index.html and NOTE.md (mandatory): the one idea and why; each beat and what it buys; what is real (captured UI and copy) and what is illustrative or generated; the G0-G5 numbers quoted from look.py and lint.mjs; the one-sentence frame descriptions; what you would still improve. Describe what you checked; never certify the film as good. When there are versions to choose between, offer python3 "$SKILL/scripts/blind_review.py" film/review --round "Versions" a.mp4 b.mp4 (opens film/review/index.html); append the user's reaction to taste/verdicts.md.
| file | use it for |
|---|---|
references/judgment.md |
the 8 judgments with evidence, the default mind, the "slop is right when" table, importance budget, honest seeing |
references/idea.md |
PAGE, brand inventory to idea, kinds of film, cover-the-logo, metaphor bank, script cues, copy voice, worked examples |
references/world.md |
ground, light, depth, texture, real UI through a camera, hero3d, imagegen plates, shutter blur, grain, richness not clutter |
references/director.md |
beat roles, "buys", film shapes and skeletons, film system, continuity, storyboard worksheet |
references/brand.md |
URL to ground/ink/accent/type/carrier/copy decisions |
references/layout.md |
coordinates, type size by role, emptiness, UI framing, lockups, layers |
references/motion.md |
measured durations and eases, entry/exit grammar, smear, clocks, camera |
references/transitions.md |
how beat A becomes beat B |
references/type.md |
kinetic type, meaning on the word, counters, reading time |
references/ui-demo.md |
cursor, click, typing, toggles, agent work, phones; recipes are mechanics, not a default film |
references/close.md |
CTA and logo endings, picked by brand personality |
references/sound-sync.md |
script, ElevenLabs VO/SFX/music, cutting to the voice, mixing, fallbacks |
references/slop.md |
AI default vs pro decision table and the render review checklist |
references/tools.md |
one page on every script and its flags |
taste/verdicts.md, taste/edits.md |
this user's reactions; before/after lessons |
studies/ |
two calibration strips of invented frames (a default beside a decision, in different styles); look once, borrow reasoning, never the look; PROVENANCE.md says where they come from |
runtime/ |
seek-safe GSAP runtime: motion.js (README.md is the API), hero3d/ (Three.js hero object, M.hero3d), native-ui/ (iOS phone and notification builders, NativeUI.*), fonts.css, vendor/ |
templates/film.html |
the starting film (copy it to film/index.html) |
examples/ |
demo/ (full beat set), 3d-hero/ (hero3d film), phone/ (native-ui lock screen), selftest/ (runtime regression page: must print PASS) |
library/moments.jsonl |
716 rule-only precedent rows read by scripts/precedent.py |
scripts/ |
providers.sh, brand.mjs, fetch_logo.mjs, voice.py, sync.mjs, render.mjs, look.py, lint.mjs, mix.py, imagegen.py, blind_review.py, precedent.py |
The study corpus (other companies' published films, kept outside this skill) is private study material and is not part of it: learn mechanics and timing, never ship their brand assets, copy, layouts or frames as the user's. Principles here are in our own words; the strips are original images of invented brands. Generated images are for a missing surface only, never text, logos, UI or people shown as real, and are declared in NOTE.md. 3D is built in the film's own renderer (hero3d), not exported from other tools. When this skill and a HyperFrames house style disagree (decoratives, ghost text, hairlines, eyebrow or progress patterns, bold headings), this skill wins.
Your keyframes get a face rating: first the default (mid), then the measured version (maxxed). Typography and vector only, no photo of anyone, made with the skill's own runtime. Watch the MP4 · how it was made and checked
Looksmaxxing for motion graphics.
An agent skill that turns AI slop videos into films that look made by a motion designer.
Follow @makwanatejas170 on X for the next glow-ups. Lives inside FinalMotion.
The glow-up · Why your AI video is mid · The science of the mog · The protocol · Mog check · Install · Start maxxing · Toolbox
Your AI video is mid. Not broken, not ugly, just undecided: a label in the corner, a headline on the left, a card on a flat colour, a fade between every beat. motionmaxxing is an agent skill that makes launch films, product promos, brand stings and kinetic-type pieces, and makes them on purpose. Give it a website and it captures the brand, finds an idea only that brand could own, builds a world for it, and animates with timing measured frame by frame from 53 professional motion moments. Then it renders the film and looks at it with scripts, instead of telling you it came out well. It runs in Claude Code and in any agent that reads a SKILL.md folder. Everything renders locally from plain HTML.
Motionmaxx it, then check the numbers.
Early release. Still getting sharper, and more is coming soon.
The rating scale
| Rating | What it looks like on screen |
|---|---|
| Slop | A slide deck that moves: corner labels, a counter, a left headline beside a card, fades everywhere |
| Mid | Clean and competent, and nobody decided anything: default eases, flat grounds, a held end card |
| Maxxed | One idea, a world with light and texture, measured motion, cuts on motion, and gates that pass with the numbers shown |
The skill's job is to move a film one notch right and to say honestly which notch it landed on.
Three before / after comparisons. In each, the same brand is filmed twice: once without the skill (mid) and once with it (maxxed). The brands belong to their owners and are used only to show the difference (see Ethics and credits).
Cluely, mid to maxxed. Same model, same brief: both films were generated with GPT-6.1. Left: without the skill. Right: with it. You don't need the most expensive model to get motion that looks designed. The difference is the skill, not the price tag. Watch the MP4 (30 s with sound, 1920x600).
The left film is a slide deck: a brand label top-left, a "REAL-TIME ASSISTANCE" tag top-right, a held left headline in two colours, two cards, and a "02 / 05" counter. The right film is the product: the real assist overlay on a lit desktop, the ⌘ + ↵ shortcut as physical keys, then the overlay sitting on a live call.
Spotify, mid to maxxed. Left: without the skill. Right: with it. The without arm is a left headline beside a phone mock-up in every frame. The with arm carries one idea (the green full stop becomes a switch, floods the frame, and becomes the icon) through type, a wall of lines that collapses, and a full-bleed ending. Watch the MP4 (15 s, 2560x720).
Wispr Flow, mid to maxxed. Top: without the skill. Bottom: with it. Watch the MP4 (24 s with sound, 1080x1440).
What to look for
What the skill is claiming. Not that the bottom film is perfect. That it was decided (what to film, how it moves) and then checked, and the top one was not. Glow-up, not a miracle.
Most AI motion graphics fail in the same recognisable way: everything is a slide. A slop autopsy of rejected AI films ranked 25 default patterns. These are the loudest tells, and what catches each one.
| The tell | What it looks like | Caught by |
|---|---|---|
| Page chrome | A brand name in a corner, a "02 / SPEAK" counter, a timecode, corner brackets, a progress bar | lint.mjs (G5), rules C1-C6, P1 |
| Deck layouts | A held left-aligned headline, a kicker above it, "headline left, device right" | lint.mjs (G5), rules C7, D1 |
| Letter-typed headlines | A headline typed out character by character with a caret | lint.mjs (G5), rule T1 |
| Vibe-coded UI cards | A rounded card with a status dot and "label . value", a "Good morning" header, zinc greys | lint.mjs (G5), rules V1-V5 |
| Flat swatches | A different flat colour per scene, or a small card floating on a void | Your eyes on the contact sheet (references/world.md) |
| Dead frames | Runs of frames where nothing on screen moves | look.py (G2): more than 3 flat frames in a row fails |
| Fades everywhere | Every element arrives by opacity and every beat ends in a dissolve | Measured instead: pros use 3,392 transform entries against 584 opacity fades, and cut on motion |
Several of these were prescribed by earlier wording of the skill itself ("alternate flat grounds", "a recurring carrier"), so the fix was an edit to the skill, not a scolding for the agent. The lint is a lead, not a verdict: it cannot see text inside an image or a canvas.
Most "motion design skills" are a list of opinions. This one started with a measurement.
| Finding | Measured |
|---|---|
| The median move | 10 frames (0.33 s). Entries 11-12 f, opacity 6 f, blur 7-8 f |
| Landing vs leaving | Landing decelerates (58% ease out); leaving accelerates (37% ease in, against 16% of landings) |
| Overshoot | Under 9% of moves (8.8%), and late: a slow lean past |