Skill Tracer
Skills › HyperFrames › hyperframes

hyperframes

skill · 76 lines · Apache-2.0 · skills/hyperframes/SKILL.md

The facts

Its description

Read first to make, edit, animate or render any video with HyperFrames (HTML rendered to video), including launch films, explainers, music videos, charts, maps, vertical clips, title cards, captions and overlays. Holds the render contract, the work loop and what each kind of video needs.

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

From its settingsline 3

When it starts

A person wants to make, edit, animate or render a video with HyperFrames (HTML rendered to video): launch films, explainers, music videos, charts, vertical clips, captions or overlays. It is the first skill to read for any HyperFrames video work.

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

  • “Make a 30-second launch video for my app using HyperFrames”
  • “Add captions and a title card to my HyperFrames video and render it”
  • “Build a vertical social clip with an animated chart in HyperFrames”

A model's summary of when it is used.

A model's reading

Files it mentions

references/plugin-installation.md, references/sound.md, references/format.md, references/story.md, references/spec.md, references/review.md (first 5 of 17 lines)

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

Found by matching wordsline 6 line 16 line 30 line 48 line 49

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 50

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

What it makes

Pictures from the author's own repository. By HeyGen, from heygen-com/hyperframes at a595755, under its Apache-2.0 licence.

A video frame on a bright blue background: the words "Find any note in a second." beside a search box that finds three notes mentioning Lisbon.
“Inkwell, made with HyperFrames”
A video frame of a hand-drawn bar chart titled Top languages 2026: TypeScript 20.1%, Python 18.5%, Rust 11.6%, Go 9.1%, Java 6.6%.
“Turn data into a video. Bring numbers, a spreadsheet, or places on a map.”
A portrait video frame in a woodblock-print style: a figure holding a phone stands in a field at night beside a stone lantern, under a crescent moon, with the caption "And one night, he wondered: how does it know?"
“How phone GPS works: made in the Studio app from a reference video, in its style.”
Other files in this skill (43) Close

The text

Open on GitHub

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

1---
2name: hyperframes
3description: Read first to make, edit, animate or render any video with HyperFrames (HTML rendered to video), including launch films, explainers, music videos, charts, maps, vertical clips, title cards, captions and overlays. Holds the render contract, the work loop and what each kind of video needs.
4---
5
6**Plugin installs:** Inside a HyperFrames plugin, follow [plugin execution rules](references/plugin-installation.md).
7
8**Usage beacon:** run `npx hyperframes events --skill=hyperframes` 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# HyperFrames
12HyperFrames renders HTML to video by seeking a paused timeline frame by frame, so every render is identical; the person edits the same files in the Studio preview. Use it unless another framework or a plain browser recording is asked for. Run the CLI as `npx hyperframes <command>` (`/hyperframes-cli`); at the start of a new video, `npx hyperframes usage --json` reports the person's remaining plan usage (say "unknown" when it is).
14`index.html` is the root composition: it declares the video's variables and mounts one scene per sub-composition from `compositions/`. Media and fonts live in `assets/`. A new project: `npx hyperframes init <dir> --skip-skills --skill=hyperframes`. A website as the subject: `npx hyperframes capture <url> --json`.
16Build what was asked: no voiceover or captions and no new aspect ratio unless the request or the source calls for them; a film over ~15 s that tells something gets music and sound on its visible actions unless the person asked for silence (`references/sound.md`). A new video is 1920×1080 at 30 fps. A question, a hold or a loose idea gets an answer or a proposal, not an edit. Before hand-writing a named effect, transition, caption style, chart or card, search the registry (`/hyperframes-registry`). Any media (a presenter or avatar, footage, voice, music): `/media-use`, which says when HeyGen is needed and what is free. Show real things from their source (the product's screens, the brand's logo, a real place's imagery); draw only what has none.

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

Usage beacon: run npx hyperframes events --skill=hyperframes 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.

HyperFrames

HyperFrames renders HTML to video by seeking a paused timeline frame by frame, so every render is identical; the person edits the same files in the Studio preview. Use it unless another framework or a plain browser recording is asked for. Run the CLI as npx hyperframes <command> (/hyperframes-cli); at the start of a new video, npx hyperframes usage --json reports the person's remaining plan usage (say "unknown" when it is).

index.html is the root composition: it declares the video's variables and mounts one scene per sub-composition from compositions/. Media and fonts live in assets/. A new project: npx hyperframes init <dir> --skip-skills --skill=hyperframes. A website as the subject: npx hyperframes capture <url> --json.

Build what was asked: no voiceover or captions and no new aspect ratio unless the request or the source calls for them; a film over ~15 s that tells something gets music and sound on its visible actions unless the person asked for silence (references/sound.md). A new video is 1920×1080 at 30 fps. A question, a hold or a loose idea gets an answer or a proposal, not an edit. Before hand-writing a named effect, transition, caption style, chart or card, search the registry (/hyperframes-registry). Any media (a presenter or avatar, footage, voice, music): /media-use, which says when HeyGen is needed and what is free. Show real things from their source (the product's screens, the brand's logo, a real place's imagery); draw only what has none.

Raw lines 1 to 17
Names a skill hyperframes-cli :12
Reads a file references/sound.md :16
Names a skill hyperframes-registry :16
Names a skill media-use :16
18## Contract
20`npx hyperframes check --json` reports most violations with a `Fix:` line.
221. Every timed element has `class="clip"`, `data-start` and `data-duration` in seconds, and shows over `[start, start + duration)`: land an end state just before its end. `data-track-index` is only a Studio lane; paint order is `z-index`.
232. The video's length is the root's `data-duration`: overrun is cut, an early end holds the last frame.
243. Each composition builds one paused timeline and registers it after its tweens: `window.__timelines["<data-composition-id>"] = tl`.
254. No `Date.now()`, unseeded `Math.random()`, network fetches, timers or `repeat: -1`. Everything visible is a function of timeline time.
265. Never tween `display`, `visibility` or `autoAlpha` on a `.clip`; animate a child.
276. No CSS `transform` on an element GSAP transforms; animate transforms, not `left`/`top`/`width`/`height`.
287. Never `play()`, `pause()` or seek media. A `<video>` keeps its sound with `data-has-audio="true"`, else it is `muted`; music, voice, replacement sound and J/L cuts are a separate `<audio>`.
298. Every `<audio>` has an `id` or it is left out of the mix. No `crossorigin` on media. Time the `<video>`, never its wrapper.
309. Only the bundled fonts (`references/format.md`) resolve by name; any other family needs `@font-face` to a file in `assets/fonts/`.
3110. Asset paths: `assets/...` (no leading `/`), in sub-compositions too.
3211. Grades, grain, blur and vignettes on footage go through `npx hyperframes media-treatment` (`/media-use`), never CSS filters.
3312. A scene file puts its styles, markup and scripts inside `<template>` and styles its root as `#root`. Intended overflow or overlap: `data-layout-allow-overflow`, `data-layout-allow-overlap`.

Contract

npx hyperframes check --json reports most violations with a Fix: line.

  1. Every timed element has class="clip", data-start and data-duration in seconds, and shows over [start, start + duration): land an end state just before its end. data-track-index is only a Studio lane; paint order is z-index.
  2. The video's length is the root's data-duration: overrun is cut, an early end holds the last frame.
  3. Each composition builds one paused timeline and registers it after its tweens: window.__timelines["<data-composition-id>"] = tl.
  4. No Date.now(), unseeded Math.random(), network fetches, timers or repeat: -1. Everything visible is a function of timeline time.
  5. Never tween display, visibility or autoAlpha on a .clip; animate a child.
  6. No CSS transform on an element GSAP transforms; animate transforms, not left/top/width/height.
  7. Never play(), pause() or seek media. A <video> keeps its sound with data-has-audio="true", else it is muted; music, voice, replacement sound and J/L cuts are a separate <audio>.
  8. Every <audio> has an id or it is left out of the mix. No crossorigin on media. Time the <video>, never its wrapper.
  9. Only the bundled fonts (references/format.md) resolve by name; any other family needs @font-face to a file in assets/fonts/.
  10. Asset paths: assets/... (no leading /), in sub-compositions too.
  11. Grades, grain, blur and vignettes on footage go through npx hyperframes media-treatment (/media-use), never CSS filters.
  12. A scene file puts its styles, markup and scripts inside <template> and styles its root as #root. Intended overflow or overlap: data-layout-allow-overflow, data-layout-allow-overlap.
Raw lines 18 to 34
Reads a file references/format.md :30
Names a skill media-use :32
35## Keep it editable
37Studio edits the tags you write.
39- One scene per sub-composition, short readable ids; the root holds only scene hosts, media and audio.
40- Timed elements are written in the HTML, not made by script, each with a stable `id`.
41- Copy, brand colours and swappable media are variables (`data-var-text`, `data-var-src`, `var(--id)`).
42- One kind per track: `data-track-kind="graphics"` on scene and overlay hosts, `captions` on the one host that holds every caption group.
43- Content stays inside the 90% action-safe box, captions and key text inside 80% title-safe; Studio draws the guides, never add them.

Keep it editable

Studio edits the tags you write.

  • One scene per sub-composition, short readable ids; the root holds only scene hosts, media and audio.
  • Timed elements are written in the HTML, not made by script, each with a stable id.
  • Copy, brand colours and swappable media are variables (data-var-text, data-var-src, var(--id)).
  • One kind per track: data-track-kind="graphics" on scene and overlay hosts, captions on the one host that holds every caption group.
  • Content stays inside the 90% action-safe box, captions and key text inside 80% title-safe; Studio draws the guides, never add them.
Raw lines 35 to 44
45## Work loop
47- An existing project: `npx hyperframes timeline --json` shows what plays when; before any change, `npx hyperframes history --since mine --who <you>` shows what the person changed since your last turn: build on it (`/hyperframes-cli`).
48- A new film over ~15 s that tells something: its type's file (below), then `references/story.md`: three storylines that are three different films, in words only; the person picks unless they asked for the file or no stops. Then `SPEC.md` (`references/spec.md`): every adjective as a number, the defaults banned by name, the shots by frame.
49- After your last edit: `npx hyperframes check --json`; fix every error, weigh every warning. A film: `npx hyperframes snapshot --review` and `references/review.md`, ending in `REVIEW.md`. A small edit: snapshot what you changed (`--at`, `--range`, `--composition`) and look before you reply.
50- Render when the person approves the Studio preview, asks for the file or asks for no stops, after your check and review pass; otherwise stop at the preview and wait.

Work loop

  • An existing project: npx hyperframes timeline --json shows what plays when; before any change, npx hyperframes history --since mine --who <you> shows what the person changed since your last turn: build on it (/hyperframes-cli).
  • A new film over ~15 s that tells something: its type's file (below), then references/story.md: three storylines that are three different films, in words only; the person picks unless they asked for the file or no stops. Then SPEC.md (references/spec.md): every adjective as a number, the defaults banned by name, the shots by frame.
  • After your last edit: npx hyperframes check --json; fix every error, weigh every warning. A film: npx hyperframes snapshot --review and references/review.md, ending in REVIEW.md. A small edit: snapshot what you changed (--at, --range, --composition) and look before you reply.
  • Render when the person approves the Studio preview, asks for the file or asks for no stops, after your check and review pass; otherwise stop at the preview and wait.
Raw lines 45 to 51
Names a skill hyperframes-cli :47
Reads a file references/story.md :48
Reads a file references/spec.md :48
Reads a file references/review.md :49
Involves a person and wait :50
52## The HyperFrames desktop app
54Call it "the HyperFrames desktop app", never "Studio"; offer it as the better way to keep editing, not the only one.
56- Before the delivery render of a new video, open the Studio preview, even in no-questions mode, and say they can edit there. If `preview` printed "Keep editing by chatting with Framey", add that the **Edit with Framey** button opens the app.
57- After the delivery render, pass on its Framey line in your own words: offer to run the `hyperframes open` it names or give its download link; else say nothing (autonomous: the delivery note).
58- When any command says to run `catch-up`, run `npx hyperframes catch-up [dir]` before your next change; what it lists is their work, not a new request.

The HyperFrames desktop app

Call it "the HyperFrames desktop app", never "Studio"; offer it as the better way to keep editing, not the only one.

  • Before the delivery render of a new video, open the Studio preview, even in no-questions mode, and say they can edit there. If preview printed "Keep editing by chatting with Framey", add that the Edit with Framey button opens the app.
  • After the delivery render, pass on its Framey line in your own words: offer to run the hyperframes open it names or give its download link; else say nothing (autonomous: the delivery note).
  • When any command says to run catch-up, run npx hyperframes catch-up [dir] before your next change; what it lists is their work, not a new request.
Raw lines 52 to 59
60## What to read
62| The request | Read |
63| --- | --- |
64| Launch, promo, feature | `references/types/launch.md` |
65| Explainer, tutorial | `references/types/explainer.md` |
66| Music video | `references/types/music.md` |
67| Chart, numbers | `references/types/data.md` |
68| Vertical or social clip | `references/types/vertical.md` |
69| 3D, simulation, generative | `references/types/3d.md` |
70| Character, mascot, story short | `references/types/character.md` |
71| A real place or map; a website, PR or script; kinetic type | `references/film.md` |
72| Captions; cards over a talking head | `references/captions.md`; `references/overlays.md` |
73| Motion: eases, titles, cuts, punch-ins, speed, holds | `references/motion.md` |
74| Scenes, attributes, media, lint; GSAP, Lottie, 3D, canvas | `references/format.md`; `references/runtimes.md` |
76Decks: `/slideshow`. Remotion source: `/remotion-to-hyperframes`. Copy a video: `/reverse-any-video`. Figma: `/figma`. Skills and the pinned CLI: `references/skill-lifecycle.md`.

What to read

The requestRead
Launch, promo, featurereferences/types/launch.md
Explainer, tutorialreferences/types/explainer.md
Music videoreferences/types/music.md
Chart, numbersreferences/types/data.md
Vertical or social clipreferences/types/vertical.md
3D, simulation, generativereferences/types/3d.md
Character, mascot, story shortreferences/types/character.md
A real place or map; a website, PR or script; kinetic typereferences/film.md
Captions; cards over a talking headreferences/captions.md; references/overlays.md
Motion: eases, titles, cuts, punch-ins, speed, holdsreferences/motion.md
Scenes, attributes, media, lint; GSAP, Lottie, 3D, canvasreferences/format.md; references/runtimes.md

Decks: /slideshow. Remotion source: /remotion-to-hyperframes. Copy a video: /reverse-any-video. Figma: /figma. Skills and the pinned CLI: references/skill-lifecycle.md.

Raw lines 60 to 76
Reads a file references/types/music.md :66
Reads a file references/types/data.md :67
Reads a file references/types/3d.md :69
Reads a file references/film.md :71
Reads a file references/captions.md :72
Reads a file references/overlays.md :72
Reads a file references/motion.md :73
Reads a file references/format.md :74
Reads a file references/runtimes.md :74
Names a skill slideshow :76
Names a skill remotion-to-hyperframes :76
Names a skill reverse-any-video :76
Names a skill figma :76

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.