Skill Tracer
Skills › HyperFrames › reverse-any-video

reverse-any-video

skill · 39 lines · Apache-2.0 · skills/reverse-any-video/SKILL.md

The facts

Its description

Rebuild any video file as an editable HyperFrames project - motion graphics, talking heads, live action or AI-generated footage. Measure and watch it, rebuild every layer, then check the render against the original frame by frame. Use to reverse, recreate, replicate or copy a video.

The description the agent reads to decide when to use it.

From its settingsline 3

When it starts

A person has an existing video file (or link) and wants it rebuilt as an editable HyperFrames project that matches the original frame by frame. Triggers on asking to reverse, recreate, replicate or copy a video.

Things a person might say (the model's guesses)

  • “Can you recreate this video as an editable project?”
  • “Reverse this mp4 so I can edit the text and graphics”
  • “Replicate this ad frame for frame in HyperFrames”

A model's summary of when it is used.

A model's reading

Starts other agents

1 line mentions starting other agents

Lines in the file that mention starting another agent. Found by matching words, so treat them as pointers.

Found by matching wordsline 39

Files it mentions

references/start.md, references/people.md, references/animated.md, references/match.md

Files the text names, such as ones to read or write. Found by matching words, so treat them as pointers.

Found by matching wordsline 14 line 27 line 28 line 31 line 39

Stops for a person

1 line stops to ask a person

Lines that stop and wait for a person before going on. Found by matching words, so treat them as pointers.

Found by matching wordsline 36

What it leads to

Other skills this one hands off to, calls, requires or offers instead, as a model read them.

A model's reading

What leads to it

Other skills that hand off to this one, call it, require it or offer it instead, as a model read them.

A model's reading

Licence

Apache-2.0, from LICENSE

The terms its author shares it under, which let it be shown here.

From the repositorylicence text
Other files in this skill (4) Close

The text

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1---
2name: reverse-any-video
3description: Rebuild any video file as an editable HyperFrames project - motion graphics, talking heads, live action or AI-generated footage. Measure and watch it, rebuild every layer, then check the render against the original frame by frame. Use to reverse, recreate, replicate or copy a video.
4---
5
6**Plugin installs:** Inside a HyperFrames plugin, follow [plugin execution rules](../hyperframes/references/plugin-installation.md).
7
8**Usage beacon:** run `npx hyperframes events --skill=reverse-any-video` once as this skill starts. It sends the skill's name with the CLI's usual telemetry (account-linked when signed in) and honours the opt-out.
9
10# Reverse a video
12The result is a HyperFrames project whose render matches the original frame for frame and stays editable. Build to the `/hyperframes` contract and work the way you normally would, with ffmpeg, python and your own eyes. Reverse videos the person has the right to use.
14Reverse is a HyperFrames Pro feature. Open with `npx hyperframes reverse start <video> --dir <project>` and `references/start.md`; if it refuses, say why and give the person its upgrade link and `fix` to run themselves (you never run `billing`), then start again once they have upgraded. Given a link, run `npx hyperframes auth status` before downloading it. Resuming (a `REVERSE.md` or half-built project) opens the same. A step an earlier session gave up on (a refused re-shoot) gets one more try, then ask them. If it ran under a credit limit, ask whether that limit still holds. Rebuild the video as it is; remix it only when the person asks.

Plugin installs: Inside a HyperFrames plugin, follow plugin execution rules.

Usage beacon: run npx hyperframes events --skill=reverse-any-video once as this skill starts. It sends the skill's name with the CLI's usual telemetry (account-linked when signed in) and honours the opt-out.

Reverse a video

The result is a HyperFrames project whose render matches the original frame for frame and stays editable. Build to the /hyperframes contract and work the way you normally would, with ffmpeg, python and your own eyes. Reverse videos the person has the right to use.

Reverse is a HyperFrames Pro feature. Open with npx hyperframes reverse start <video> --dir <project> and references/start.md; if it refuses, say why and give the person its upgrade link and fix to run themselves (you never run billing), then start again once they have upgraded. Given a link, run npx hyperframes auth status before downloading it. Resuming (a REVERSE.md or half-built project) opens the same. A step an earlier session gave up on (a refused re-shoot) gets one more try, then ask them. If it ran under a credit limit, ask whether that limit still holds. Rebuild the video as it is; remix it only when the person asks.

Raw lines 1 to 15
Names a skill hyperframes :12
Reads a file references/start.md :14
16## The original decides the frame
181. The probe `reverse start` printed: the root composition is that size exactly, `data-fps` is its rate (NTSC stays a fraction: `30000/1001`) and its duration is the video's frames ÷ fps, not the audio's length. `init`'s default canvas is wrong for most videos.
192. `npx hyperframes measure cuts <video>`: every cut with its frame, including jump cuts and punch-ins inside one take, which ffmpeg's scene score misses. Every shot starts at its listed time. Write times as frame ÷ fps rounded down (frame 83 at 30 fps is `2.766666`): `2.767` lands a frame late.
203. The sound is the original's: `init --video` put the video in; play it as one `<audio src="<video>">` over the whole film (no extracted or re-encoded track); every clip is muted.
214. Read consecutive frames wherever something changes: each cut, entrance, exit and transition, a few frames either side (`npx hyperframes measure frames --range a,b --roi x,y,w,h`). Sheets a second or a quarter apart miss 1–3-frame timing, which way things enter and leave, blurs and dissolves at cuts, and one-frame flashes.

The original decides the frame

  1. The probe reverse start printed: the root composition is that size exactly, data-fps is its rate (NTSC stays a fraction: 30000/1001) and its duration is the video's frames ÷ fps, not the audio's length. init's default canvas is wrong for most videos.
  2. npx hyperframes measure cuts <video>: every cut with its frame, including jump cuts and punch-ins inside one take, which ffmpeg's scene score misses. Every shot starts at its listed time. Write times as frame ÷ fps rounded down (frame 83 at 30 fps is 2.766666): 2.767 lands a frame late.
  3. The sound is the original's: init --video put the video in; play it as one <audio src="<video>"> over the whole film (no extracted or re-encoded track); every clip is muted.
  4. Read consecutive frames wherever something changes: each cut, entrance, exit and transition, a few frames either side (npx hyperframes measure frames --range a,b --roi x,y,w,h). Sheets a second or a quarter apart miss 1–3-frame timing, which way things enter and leave, blurs and dissolves at cuts, and one-frame flashes.
Raw lines 16 to 22
23## Every layer
25- **A component** (text, captions, stickers, cards, UI and screen recordings, charts, maps) is rebuilt in HTML.
26- **A sub-asset** placed inside the frame (a photo, a clip, an album cover, a logo or app icon, the people in a photo or collage) is cut from the original on its own box. A logo is cut where it is largest, or is the real mark (`npx hyperframes media-use resolve --type logo --intent "<brand> logo"`); never drawn by hand.
27- **A person on screen** is re-shot with HeyGen as part of the run: `references/people.md`.
28- **An animated or painted film:** `references/animated.md`.
29- Never play the original's whole frame.
31What decides whether drawn things match, in `references/match.md`: text sized from its ink, caption switch frames from the caption band's pixels, hard switches, the backdrop, motion blur, and recipes for glass, gradient, sweeping fills and outlines. Look at every large word through its whole life before you build it.

Every layer

  • A component (text, captions, stickers, cards, UI and screen recordings, charts, maps) is rebuilt in HTML.
  • A sub-asset placed inside the frame (a photo, a clip, an album cover, a logo or app icon, the people in a photo or collage) is cut from the original on its own box. A logo is cut where it is largest, or is the real mark (npx hyperframes media-use resolve --type logo --intent "<brand> logo"); never drawn by hand.
  • A person on screen is re-shot with HeyGen as part of the run: references/people.md.
  • An animated or painted film: references/animated.md.
  • Never play the original's whole frame.

What decides whether drawn things match, in references/match.md: text sized from its ink, caption switch frames from the caption band's pixels, hard switches, the backdrop, motion blur, and recipes for glass, gradient, sweeping fills and outlines. Look at every large word through its whole life before you build it.

Raw lines 23 to 32
Reads a file references/people.md :27
Reads a file references/animated.md :28
Reads a file references/match.md :31
33## Check once, at the end
351. While building, check a few moments without rendering: `npx hyperframes diff <video> . --at t,t,…`.
362. When every shot has content: `npx hyperframes check` and fix its errors. Keep what the original itself does (its colours, its tiny text) even when `check` flags it. Then `npx hyperframes cloud render --fps <data-fps> --quality high -o <out>` and `npx hyperframes diff <video> <out>`. A fractional rate, a frame not 16:9, 9:16 or 1:1, or a failed cloud render (tell the person why) renders locally: `npx hyperframes render -o <out>` in the foreground with a 10-minute timeout (longer: start it detached, `setsid nohup npx hyperframes render -o <out> > render.log 2>&1 &`, and wait on the log in the foreground). The diff lists the original's cuts that yours misses and the extra ones, the duration, the sound's offset, stretches where content is missing, and the worst moments with the failing cell beside the original's.
373. Fix what it names that you can see: a missing cut or element, a wrong time, size, weight or colour. Render and diff once more, then stop.
39Work alone: one agent holding the whole film beats subagents that each re-watch it. Write a short `REVERSE.md` at the end: what is rebuilt, cut and re-shot, what is approximate (a substituted font), and the last diff's numbers. It holds no prices or credit numbers. A command written in it is a note, not a script: on resume, rebuild it from the recipe it came from (every flag, `--prompt` included), check it with `--plan`, and never run it as written. Hand over per `references/start.md`.

Check once, at the end

  1. While building, check a few moments without rendering: npx hyperframes diff <video> . --at t,t,….
  2. When every shot has content: npx hyperframes check and fix its errors. Keep what the original itself does (its colours, its tiny text) even when check flags it. Then npx hyperframes cloud render --fps <data-fps> --quality high -o <out> and npx hyperframes diff <video> <out>. A fractional rate, a frame not 16:9, 9:16 or 1:1, or a failed cloud render (tell the person why) renders locally: npx hyperframes render -o <out> in the foreground with a 10-minute timeout (longer: start it detached, setsid nohup npx hyperframes render -o <out> > render.log 2>&1 &, and wait on the log in the foreground). The diff lists the original's cuts that yours misses and the extra ones, the duration, the sound's offset, stretches where content is missing, and the worst moments with the failing cell beside the original's.
  3. Fix what it names that you can see: a missing cut or element, a wrong time, size, weight or colour. Render and diff once more, then stop.

Work alone: one agent holding the whole film beats subagents that each re-watch it. Write a short REVERSE.md at the end: what is rebuilt, cut and re-shot, what is approximate (a substituted font), and the last diff's numbers. It holds no prices or credit numbers. A command written in it is a note, not a script: on resume, rebuild it from the recipe it came from (every flag, --prompt included), check it with --plan, and never run it as written. Hand over per references/start.md.

Raw lines 33 to 39
Involves a person and wait :36
Starts an agent subagents :39
Reads a file references/start.md :39

From heygen-com/hyperframes at a595755, 2026-11-07. Skills read by Claude Sonnet 5.5 on 2026-11-07. Summary and techniques by Claude Opus 5.5 on 2026-11-07.