About this skill
A film can look right in a single frame and still be wrong. This skill sets up a project folder, a schedule in frames, and a renderer you can jump to any moment. You review contact sheets in passes that narrow each time, tag each finding Observed, Inferred or Unknown, and sabotage the film to prove your checks work. The method is from m4lkxx's article, in AdAnt's words and with AdAnt's tools. It is credited in the download and linked on this page.
You say
Use motion-review-loop to make a 15-second launch animation from this brand folder. Start with the one-line story and the timeline, then show me a contact sheet before the full render.
How it works
- Set up a project folder with a one-sentence brief, approved facts, and each reference written down as numbers.
- Schedule what is on screen by frame number, then build the film as a renderAt(t) you can jump anywhere in.
- Review contact sheets in passes that each ask one narrower question, and read colors with the probe.
- Break the film on purpose to prove the checks catch it, then run the delivery gate on the encoded file.
Getting a good result
- Rewrite each vague note as a measurement before sending it back. Give the hex you want and the frame it applies to.
- Tag each finding Observed, Inferred or Unknown. A model's opinion of its own output doesn't count as evidence.
- Over the size budget? Add still holds between moves before you raise compression. They cost almost nothing.
What you get
- An 11-step SKILL.md, from an empty folder to a delivery gate
- A renderAt(t) starter and a headless Chrome capture script with no npm packages
- contact_sheet.py, probe_color.py and check_file.py, using only Python and ffmpeg
- The full source and review notes of the film on this page
Good fit
- Finding out why a good-looking render still feels wrong
- Launch films and motion graphics written as code
- Teams that want the next film to start from files and not from a chat
Not for
- Editing camera footage
- Generated video from a model such as Seedance or Veo, where there is no renderAt(t) to seek. The sheet, probe and gate still work on those files
How to install it
- Download the ZIP and unzip it.
- Move the folder holding
SKILL.mdinto your agent's skills folder, such as~/.claude/skills/for Claude Code. - Start a new session and ask for what you want to make.
Needs: An agent that reads skills, ffmpeg and ffprobe, Python 3, Node.js 22 or newer, Chrome.
Popular on X
Posts showing demand for this kind of video. Unless a post names this tool, it wasn't made with it.
- m4lkxx's article on directing and checking Opus motion work 133,532 views on X, measured 2 November 2026
- Hamza Khalid's guide to a brand folder as a motion studio 353,038 views on X, measured 2 November 2026
- Shann Holmberg on making Opus 5.5 frame review cheaper 10,832 views on X, measured 2 November 2026
FAQ
Is it really free?
Yes. Create a free AdAnt account to download the ZIP. There is no card and no trial timer.
Who came up with the method?
m4lkxx published it as an article on X, linked on this page, and the article credits flxrnc and 0xwhrrari for parts of it. No public skill existed, so AdAnt wrote this one in its own words, with its own tools. None of them wrote or reviewed it.
Does it work with Remotion or HyperFrames?
Yes for the review. The contact sheet, probe and delivery gate work on any video. The capture script needs a page that exposes renderAt(t), so use your framework's own renderer if it has one. For a WebGL page, pass --webgl true.
Was the example film really made this way?
Yes. Its source and review notes are in the download. Its soundtrack has been measured, but nobody has listened to it yet, and the notes say so.
Related skills

HyperFrames: HTML to Video
Have Claude write launch films, explainers and title cards as HTML, then render them to MP4.

Vertical Ad Motion Graphics
Direct and build a 9:16 motion graphics ad that works on mute, with no footage.

GSAP Animation Core
Give your agent GreenSock's official guidance for timing, easing and stagger.