framewright

agent
Security Audit
Fail
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 9 GitHub stars
Code Fail
  • fs module — File system access in .agents/skills/framewright/scripts/doctor.sh
  • process.env — Environment variable access in .agents/skills/framewright/scripts/export-curves.mjs
  • process.env — Environment variable access in .agents/skills/framewright/scripts/inject.mjs
  • process.env — Environment variable access in .agents/skills/framewright/scripts/look.mjs
  • rm -rf — Recursive force deletion command in .agents/skills/framewright/scripts/make.sh
  • process.env — Environment variable access in .agents/skills/framewright/scripts/render.mjs
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

Agent skill + template: short videos made entirely from code. One HTML file, every frame a pure function of (frame, seed, width). Claude Code, Codex, Gemini CLI, Cursor.

README.md

framewright

Version 1.1.0 Follows the Agent Skills specification Ships an AGENTS.md Works with Claude Code, Codex, Gemini CLI, Cursor and more Requires Node 20 or newer MIT License

Русский

An agent skill and a project template for short videos made entirely from code.
One HTML file. Every frame is a pure function of (frame number, seed, width).
Rendered with headless Chrome, assembled with ffmpeg, scored by a script. No footage, no images, no CDN.


Preview of the RIS TV example: TV powers on, test card, countdown, teletext, oscilloscope

Contact sheet of all eight scenes of the example

The example: 40 seconds, 8 scenes, 1200 frames, one 45 KB HTML file. The portrait scene in the public example uses a synthetic placeholder. Full MP4 with sound: ris-tv-sample.mp4 (27 MB).

What it does

You describe the video you want. The agent runs a short interactive brief, proposes three
concepts (a literal one, a metaphor, a genre parody), agrees a storyboard on a beat grid,
then builds the video scene by scene, looking at rendered frames after every step. It renders
the frames, synthesizes a soundtrack to the locked scene lengths, assembles the MP4 and
checks the file. Photos become posterized polygons, never pixels. Every step has a visual
checkpoint and a rule against guessing.

For a film without cuts it builds one continuous world instead of separate scenes: a line that
remembers when each of its points was drawn, a camera on keyframes with even zooms and smooth
following, a light layer with bloom, and a soundtrack that follows the line's speed and position
on screen.

Step What the agent does What you see
0 checks node, ffmpeg, Chrome, python; offers to install what is missing a short report
1 the brief: message, format, length, tone, style, assets, sound, deliverables 8–11 questions with defaults
2 three concepts with palette, key scenes, ending, sound and risk a table and a recommendation
3 storyboard in bars, scaffold from the skeleton, first frame one "go"
4 one scene at a time, three frames per scene, a contact sheet every 2–3 scenes contact sheets
5 photos traced into polygons, placeholders until files arrive a portrait preview
6 full contact sheet, render in parallel tabs, encode, verify from the MP4 a preview MP4
7 soundtrack synthesized to the cue map, MP4 rebuilt the final MP4
8 variations on request: another seed, vertical cut, GIF, poster frame files

Quick start

Option 1: clone and run your agent inside

git clone https://github.com/smwbev/framewright my-video
cd my-video
npm install
claude        # or: codex, gemini, cursor, opencode ...

Then say what you want, for example: "a 20-second deadpan video asking Anna when the
release ships, retro TV style"
. The agent picks up AGENTS.md, loads the skill and starts
with the brief.

Option 2: add the skill to your own project

npx skills add smwbev/framewright          # installs into the agents you choose
gemini skills install https://github.com/smwbev/framewright --path .agents/skills/framewright --consent   # Gemini CLI

Or copy .agents/skills/framewright into your project. Claude Code reads
.claude/skills/, so add a symlink or copy there.

Supported agents

Agent How it picks the skill up
Claude Code .claude/skills/framewright (symlink to the skill); CLAUDE.md imports AGENTS.md; invoke with /framewright
OpenAI Codex reads AGENTS.md and .agents/skills/ natively; $framewright
Gemini CLI .gemini/settings.json points at AGENTS.md; skills from .agents/skills/
Cursor AGENTS.md and .agents/skills/ natively
GitHub Copilot coding agent AGENTS.md and .agents/skills/ natively
OpenCode, Amp, Zed, Warp, Factory, Cline, Roo, Windsurf AGENTS.md; most read .agents/skills/ too
anything else point it at .agents/skills/framewright/SKILL.md

The skill follows the Agent Skills specification: SKILL.md with
frontmatter, references/ loaded on demand, scripts/ and assets/.

Requirements

Node 20+, npm, ffmpeg with libx264, Chrome via Puppeteer (installed by npm install).
Python 3 with numpy, scipy and Pillow only if a photo will be traced. macOS and Linux;
Windows through WSL.

bash .agents/skills/framewright/scripts/doctor.sh            # report
bash .agents/skills/framewright/scripts/doctor.sh --install  # install what is missing, asks first

Repository layout

AGENTS.md                      entry point for agents
CLAUDE.md, GEMINI.md           one-line imports of AGENTS.md
.gemini/settings.json          Gemini CLI reads AGENTS.md
.agents/skills/framewright/
  SKILL.md                     the workflow
  references/                  questionnaire and concept generator, styles, engine guide, one-world films, audio, photo, troubleshooting
  scripts/                     doctor, init, look, render, build, make, export-curves, trace, inject, portrait
  assets/                      skeleton.html, world.html, audio-template.mjs, storyboard.md
.claude/skills/framewright     symlink for Claude Code
examples/ris-tv/               a finished video: index.html, audio.mjs, previews

The example

examples/ris-tv is a complete 40-second video in the retro TV style: the set powers on,
snow and NO SIGNAL, a test card with a day counter, a countdown that breaks, two teletext
pages with the question, an oscilloscope tracing a paperclip, a portrait that locks in, and
the tube switching off. Render a contact sheet of it:

npm install
npm run example        # writes shots/example-sheet.png

Or render the whole thing: HTML=examples/ris-tv/index.html node .agents/skills/framewright/scripts/render.mjs frames 7 1920 5,
then cd examples/ris-tv && node audio.mjs ../../track.wav, then bash .agents/skills/framewright/scripts/build.sh out.mp4.

Making videos by hand

The skill is also a manual. references/guide.md explains the engine, the helpers, the
timing grid and the review protocol; references/styles.md catalogues twelve visual systems
with post-processing recipes; references/world.md covers films made as one continuous world;
references/audio.md and references/photo.md cover sound and portraits.
assets/skeleton.html and assets/world.html are working starting points: open one in a
browser for a live preview, add ?f=30&w=1200 for a single frame, ?grid=24 for a contact sheet.

License

MIT. Videos you make with it are yours.

Reviews (0)

No results found