Video Director: short films written as code
video-director is a skill by GitHub user win4r for making short videos as code. Claude plans every beat in a timeline file, builds the film in HTML, Canvas, SVG, Three.js, GSAP or Remotion, renders it frame by frame to MP4 and checks it with two QA scripts.
git clone https://github.com/win4r/video-director.git && cp -R video-director/video-director ~/.claude/skills/video-director makes Claude plan a short film in numbers, write it as code in HTML, Canvas, SVG, Three.js, GSAP or Remotion, and render it frame by frame to MP4. Then it measures what it can't watch or hear. GitHub user win4r publishes it under the MIT license and says it's built primarily for Claude Opus 5.5 in Claude Code. Anthropic doesn't publish it. New to skills? Read Claude Code skills first.
Nine phases, each with a gate
Every phase leaves a cheap file that's checked before the expensive next one. After intake the agent writes TREATMENT.md: the idea in one sentence, the hook for the first 3 seconds, and three candidate structures with two of them killed. Then timeline.json names every beat in seconds, and check_timeline.py has to report zero errors before any animation code exists. Two to four full-size stills of the most different beats prove the look.
Only then does the build start, one shot at a time. Score, sound effects and voice-over are placed from that same timeline. After the render, qa_video.py checks hook size and contrast, frame 0, flashes, freezes, cuts, the loop seam and loudness, and makes contact sheets. A fresh subagent that never saw the build reviews the frames, there's one fix round, and the delivery report lists every creative decision so you can overturn any of them.
Numbers a film has to hit
- The hook is readable by 3 seconds with the sound off, at 84 px or more on a 1080 short side and 7:1 contrast.
- The delivered file sits at −14 LUFS ±1, with true peak at or under −1 dBTP.
- Every number on screen traces to a row in
FACTS.mdwith its source, or carries a label such as "Example data".
It won't draw a fake product screen. If there's no UI to capture, it asks once for a screenshot or URL, or acts the promise out with an object or a before-and-after. At intake it asks at most one round of questions, about six; say "just make it" and it decides alone, logging each call as a DECISION.
How to install it
git clone https://github.com/win4r/video-director.git
cp -R video-director/video-director ~/.claude/skills/
In the Claude apps, zip the inner video-director/ folder and upload it as a custom skill. The QA scripts need ffmpeg and ffprobe plus Python 3 with numpy and Pillow. HTML films render through Node with Playwright and Chromium, or you can use Remotion. faster-whisper is optional, for checking narration.
Example request
Make a [20]-second [9:16] video for [product], to autoplay muted in a social feed. The one thing it must say: [claim]. Take facts only from [README.md or a URL]. Ask your questions first, then stop so I can approve the treatment.
It reviews existing coded videos too: hand it the MP4 and a note like "the text is unreadable".
Limits
- It costs more per film. In the author's first eval round, runs with the skill took about twice the time and tokens of runs without it. With one run per configuration, the README calls those results a direction, not a measurement.
- Part of it is unevaluated. Guidance for character and illustrated films, revisions and live pages arrived after the last eval round.
- Coded video only. It doesn't edit live-action footage or prompt pixel video models.
- Bring your own voice. Any text-to-speech works for narration; the skill ships none.
When to use it
Its three test briefs show the fit: a launch loop for a CLI, a narrated bloom-filter explainer, and a Reel built from a CSV of subscriber counts. To cut a talking-head recording instead, use Video Editor Skills.
Sources
- win4r/video-director README on GitHub, accessed November 2026
- video-director SKILL.md on GitHub, accessed November 2026