CommunityCoding & Developmentgithub.com

thativanng/reels-maker

Picks the look of a reel or film before it is built. It shows three genuinely different looks as stills of the same opening frame with the same words, so the person judges the look and not the content. It keeps a log of every look ever shown, so no look comes back unless asked for, and it locks one look on purpose for a series. Use it after reel-intake's brief is signed and before any test strip, whenever someone says "what should it look like", "give me options", "make it look different from last time", "it looks cheap", or starts a new reel or a new series.

What is reels-maker?

reels-maker is a Claude Code agent skill that picks the look of a reel or film before it is built. It shows three genuinely different looks as stills of the same opening frame with the same words, so the person judges the look and not the content. It keeps a log of every look ever shown, so no look comes back unless asked for, and it locks one look on purpose for a series. Use it after reel-intake's brief is signed and before any test strip, whenever someone says "what should it look like", "give me options", "make it look different from last time", "it looks cheap", or starts a new reel or a new series.

Works with✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/thativanng/reels-maker/tree/HEAD/skills/reel-style

Installed? Explore more Coding & Development skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

reel-style: three looks, side by side, never the same three twice

Where the kit lives: run every command in this skill from the reels-maker folder (the clone of github.com/thativanng/reels-maker that holds template/ and tools/). If the project has none, set it up first by following that repo's SETUP.md.

Why this exists: an agent asked for "a reel about X" drifts to the same look every time: its own defaults, or worse, the last look that was accepted. And a look nobody showed up front is a look the person sees for the first time in a finished film, where "it looks cheap" means starting over. Three stills cost minutes; a wrong look costs a whole film.

1 · Read before sketching

  • The signed brief: platform, ratio, the one viewer, the message, the brand, and the person's "what looks cheap to me" answer (a hard constraint).
  • The looks log, .reels/looks-log.md in the person's project (format in references/looks-log.md). Create it if it's missing.
  • The brand. With a brand, the three looks share its colours and fonts and differ in their bones: medium, layout, texture, motion. Without one, they differ in everything.

2 · Sketch five, keep three

Write five one-line concepts first, each from a different starting point:

  1. the subject's own world (warehouse crates for a supply chain topic)
  2. the emotion the viewer should feel
  3. the audience: meet their expectation, or break it on purpose
  4. what every other video on this topic looks like, turned upside down
  5. an unusual format (a receipt, a countdown, a letter, a single giant word)

Keep the three that differ most. Each look must differ from the other two on at least 3 of the 6 traits in references/axes.md, and always on medium or layout. At least one must break the topic's usual look. Two looks with the same layout shape count as one. If the brief names a layout (reel-intake F4), all three keep it and differ on medium plus at least two other traits.

Then check each against two lists:

  • The default looks to avoid (references/axes.md). The kit's own template/starter.html is one of them; it is a skeleton, never a look.
  • The looks log. Never re-show a look whose medium, layout and palette all match any look in the log, unless the person asks for it. A rejected look is a constraint. A look the person picked comes back only when they ask for it ("same as last time"), and then as a fourth option beside the three new ones.

3 · Build three stills

  • Copy template/starter.html once per look into the reel's folder (reels/<name>/look-a.html, look-b.html, look-c.html), with the reel's reel.json beside them; copy template/film.html the same way for a 3D look. Fonts and formats.json load from the kit's root, so the copies just work. Change only the look: the CSS tokens, the layout, the background, the type. Every still uses the same opening beat with the same words.
  • Render one still per look at the brief's format, then put them side by side with their names:
    node tools/stills.mjs --page reels/<name>/look-a.html --format 9:16 --out reels/<name>/out/looks/a 1.5
    node tools/stills.mjs --page reels/<name>/look-b.html --format 9:16 --out reels/<name>/out/looks/b 1.5
    node tools/stills.mjs --page reels/<name>/look-c.html --format 9:16 --out reels/<name>/out/looks/c 1.5
    python3 tools/sheet.py reels/<name>/out/looks/sheet.jpg 3 360 --labels "A · Ledger,B · Dock,C · Receipt" reels/<name>/out/looks/a/t001.50.jpg reels/<name>/out/looks/b/t001.50.jpg reels/<name>/out/looks/c/t001.50.jpg
    
  • Check every still with the probe: the words sit inside the keep-clear zone (node tools/probe.mjs --page reels/<name>/look-a.html --format 9:16 "1.5" "sel:.title,.line,.kicker,.cap" "safe" → inside: true; the probe measures the letters themselves, so a word running off the frame fails).
  • Show the sheet with a name and one line per look, for example A · Ledger: type-led, light paper, calm. Add a line on motion energy, since a still can't show it. Don't recommend one before the person has looked: a recommendation first anchors them.

4 · The pick, and the log

  • The person picks one, or mixes ("A's layout, C's palette"). A mix is a new look: show it as a still before building.
  • Write all of it to the log: every look shown (its six traits and the still), which was picked, which were rejected, and the person's verdict in their own words.
  • Then film-engine builds the 10-second test strip in the chosen look, for their yes before the full build. The picked look's still is also the first draft of the cover.

Series mode

When the brief says "series", the first episode's pick is locked in the log as the series look. Later episodes skip the three stills and keep the look. Variety moves inside it: the subject, the opening image, the order of beats. If the person wants a new look mid-series, that's a new series.

When the story is a journey

The voxel walk (the voxel-walk skill) can be one of the three only when the brief is a journey: a career, or a process from start to end. It is never the default, and it is held to the same rules: it must differ from the other two, and the log applies.

Honest limits

  • Only the voxel walk has been built and checked end to end. Every other look is built fresh from the brief: the first film in a new look takes longer, and it gets the full film-audit.
  • Stills show colour, type and layout. They don't show pace. The 10-second strip is where motion gets judged.

Credits

The "sketch five from different paths, keep the outliers, same layout counts as one" rules are adapted from HyperFrames' pitch round (heygen-com/hyperframes, Apache-2.0). The idea of naming the default looks and keeping notes on what was tried comes from Anthropic's frontend-design skill (paraphrased). Same scene, different look, side by side, is common motion-studio practice for style frames.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

thativanng/reels-maker

The gates every code-rendered film passes before anyone sees it. A 40 fps collision pass (no mover touches a solid or another mover), pixel probes (nothing sits over or behind a face, a head, a subtitle or the frame edge), then an independent auditor (a fresh agent) who reads frame sheets at ≥2 fps and signs off. The builder never signs off their own film. Use it before sending ANY render, after every fix round, and whenever someone says "check the film", "audit this", "is it ready", or "why does this frame look wrong".

thativanng/reels-maker

Build and render a film, reel or animation as code. One HTML page draws any frame on demand with window.seek(t), and a headless browser renders every frame at 2x into an MP4 with sound. Use it whenever someone wants a video made with code rather than a video generator, says "make a film / reel / animated explainer / career video", "render this to MP4", "turn this page into a video", or needs the finishing steps (audio cues, loudness, colour-safe encode, phone preview). It is style-agnostic and renders 9:16, 4:5, 1:1 or 16:9. It runs after reel-intake (the brief) and reel-style (the look), builds on template/starter.html or a style pack such as voxel-walk, and passes film-audit before anything is shown to anyone.

thativanng/reels-maker

The interview before any video is built. It reads what the person already gave (source text, CV, links, brand files), then asks the rest in a few short rounds of numbered questions with a recommended answer marked, always including the format (platform, reel or video, ratio, layout, length, sound). It ends in a one-screen brief that splits "you said" from "I assumed", plus a storyboard, and builds nothing until the person says yes. Use it whenever someone asks for a reel, a video, an explainer, a career film, an animation or a "make a video about X", before film-engine or any style pack, and again when a request changes its purpose, platform or audience mid-way.

thativanng/reels-maker

The voxel career-film style. A blocky 3D version of the person walks, without ever vanishing, through one scene per role. Their outfit changes as they walk, each scene rises out of the floor ahead of them, and a dark banner tracks year, company and role. Use it when someone wants their career, a journey or a "how I got here" told as a short 3D film for LinkedIn or a portfolio, says "make my career film", "turn my CV into a video", "voxel film", or wants a new chapter added to an existing one. It runs on film-engine (render, audio, finish) and must pass film-audit before anything is sent.

Related Skills