Agent skill

Hyperframes

by OpenMinis in OpenMinis/MinisSkills

Create HyperFrames HTML video compositions — animations, title cards, overlays, captions, GSAP timelines, registry blocks/components, voiceovers, audio-reactive visuals, and scene transitions.

MITAuto-check passedMedia & Creative

Install Hyperframes

skills CLI
$ npx skills add OpenMinis/MinisSkills --skill hyperframes -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install OpenMinis/MinisSkills hyperframes --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/OpenMinis/MinisSkills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/hyperframes .claude/skills/hyperframes && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
hyperframes
GitHub stars
444
Token cost
~6.2k tokens
SKILL.md length
2,320 words
Files
41 (incl. scripts, references)
Skills in repo
49
Repo updated
First seen
Licence
MIT

At a glance

Create HyperFrames HTML video compositions — animations, title cards, overlays, captions, GSAP timelines, registry blocks/components, voiceovers, audio-reactive visuals, and scene transitions.

  • Works in 5 steps: What — what should the viewer… → Structure — how many compositions, which… → Timing — which clips drive the duration,… → …
  • Asked to build any HTML-based video content
  • SKILL.md covers Approach, Layout Before Animation, Data Attributes and Composition Structure, plus 12 more sections
  • Calls npx, node and curl; reaches raw.githubusercontent.com and cdn.jsdelivr.net

What it does

Hyperframes is an agent skill from OpenMinis/MinisSkills. Create HyperFrames HTML video compositions — animations, title cards, overlays, captions, GSAP timelines, registry blocks/components, voiceovers, audio-reactive visuals, and scene transitions. Use when asked to build any HTML-based video content, write GSAP animations, add captions or subtitles, generate TTS narration, use registry blocks (hyperframes add), add transitions between scenes, or create any visual motion content. For CLI commands (init, lint, preview, render, transcribe, tts) and Minis rendering…

Its SKILL.md is about 6.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 42 other files, including scripts and reference files (for example `data-in-motion.md`, `house-style.md` and `palettes/bold-energetic.md`).

It sits in Media & Creative, covering Motion graphics, Text to speech and voice and Transcription. It works with HeyGen and GSAP. The repository describes itself as: Skills collection for Minis. The licence is MIT.

When your agent uses it

  • Asked to build any HTML-based video content
  • Write GSAP animations
  • Generate TTS narration
  • Use registry blocks (hyperframes add)

Example prompts

  • “/hyperframes”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. What — what should the viewer experience? Identify the narrative arc, key moments, and emotional beats.
  2. Structure — how many compositions, which are sub-compositions vs inline, what tracks carry what (video, audio, overlays, captions).
  3. Timing — which clips drive the duration, where do transitions land, what's the pacing.
  4. Layout — build the end-state first. See "Layout Before Animation" below.
  5. Animate — then add motion using the rules below.

What it can do on your machine

Read from SKILL.md and the folder at commit ae8c5db. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/, which the agent can run.

    Shell commands in SKILL.md call:

    • npx
    • node
    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • raw.githubusercontent.com
    • cdn.jsdelivr.net

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Hyperframes loads about 6.2k tokens when it runs, and up to ~28k if it reads all its reference files. Until then it costs about 143 tokens; SKILL.md has 2,320 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~143
When it runs · the whole SKILL.md, loaded when a task matches
~6.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~28k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from OpenMinis/MinisSkills at commit ae8c5db, republished under its MIT licence (© OpenMinis). 2,320 words, ~6,219 tokens.

Download SKILL.mdSave it as .claude/skills/hyperframes/SKILL.md (or your agent's skills folder). This skill also uses 40 other files; get the full folder from GitHub.
name
hyperframes
description
Create HyperFrames HTML video compositions — animations, title cards, overlays, captions, GSAP timelines, registry blocks/components, voiceovers, audio-reactive visuals, and scene transitions. Use when asked to build any HTML-based video content, write GSAP animations, add captions or subtitles, generate TTS narration, use registry blocks (hyperframes add), add transitions between scenes, or create any visual motion content. For CLI commands (init, lint, preview, render, transcribe, tts) and Minis rendering (hf-render.py), see the hyperframes-cli skill.
version
1.0.0
source
Adapted from the official HyperFrames skills by HeyGen. Original: https://github.com/heygen-com/hyperframes/tree/main/skills/hyperframes Original license…

HyperFrames

First time? Run the environment check before starting:

bash
python3 /var/minis/skills/hyperframes-cli/scripts/check-env.py

This verifies minis-browser-use, ffmpeg, and required skills are installed. If hyperframes-cli skill is missing, install it:

bash
python3 /var/minis/skills/hyperframes-cli/scripts/install-skill.py \
  hyperframes-cli --repo heygen-com/hyperframes --subdir skills

HTML is the source of truth for video. A composition is an HTML file with data-* attributes for timing, a GSAP timeline for animation, and CSS for appearance. The framework handles clip visibility, media playback, and timeline sync.

Approach

Before writing HTML, think at a high level:

  1. What — what should the viewer experience? Identify the narrative arc, key moments, and emotional beats.
  2. Structure — how many compositions, which are sub-compositions vs inline, what tracks carry what (video, audio, overlays, captions).
  3. Timing — which clips drive the duration, where do transitions land, what's the pacing.
  4. Layout — build the end-state first. See "Layout Before Animation" below.
  5. Animate — then add motion using the rules below.

For small edits (fix a color, adjust timing, add one element), skip straight to the rules.

Visual Identity Gate
<HARD-GATE>
Before writing ANY composition HTML, you MUST have a visual identity defined. Do NOT write compositions with default or generic colors.

Check in this order:

  1. DESIGN.md exists in the project? → Read it. Use its exact colors, fonts, motion rules, and "What NOT to Do" constraints.
  2. visual-style.md exists? → Read it. Apply its style_prompt_full and structured fields. (Note: visual-style.md is a project-specific file. visual-styles.md is the style library with 8 named presets — different files.)
  3. User named a style (e.g., "Swiss Pulse", "dark and techy", "luxury brand")? → Read visual-styles.md for the 8 named presets. Generate a minimal DESIGN.md with: ## Style Prompt (one paragraph), ## Colors (3-5 hex values with roles), ## Typography (1-2 font families), ## What NOT to Do (3-5 anti-patterns).
  4. None of the above? → Ask 3 questions before writing any HTML:
    • What's the mood? (explosive / cinematic / fluid / technical / chaotic / warm)
    • Light or dark canvas?
    • Any specific brand colors, fonts, or visual references? Then generate a minimal DESIGN.md from the answers.

Every composition must trace its palette and typography back to a DESIGN.md, visual-style.md, or explicit user direction. If you're reaching for #333, #3b82f6, or Roboto — you skipped this step. </HARD-GATE>

For motion defaults, sizing, entrance patterns, and easing — follow house-style.md. The house style handles HOW things move. The DESIGN.md handles WHAT things look like.

Layout Before Animation

Position every element where it should be at its most visible moment — the frame where it's fully entered, correctly placed, and not yet exiting. Write this as static HTML+CSS first. No GSAP yet.

Why this matters: If you position elements at their animated start state (offscreen, scaled to 0, opacity 0) and tween them to where you think they should land, you're guessing the final layout. Overlaps are invisible until the video renders. By building the end state first, you can see and fix layout problems before adding any motion.

The process
  1. Identify the hero frame for each scene — the moment when the most elements are simultaneously visible. This is the layout you build.
  2. Write static CSS for that frame. The .scene-content container MUST fill the full scene using width: 100%; height: 100%; padding: Npx; with display: flex; flex-direction: column; gap: Npx; box-sizing: border-box. Use padding to push content inward — NEVER position: absolute; top: Npx on a content container. Absolute-positioned content containers overflow when content is taller than the remaining space. Reserve position: absolute for decoratives only.
  3. Add entrances with gsap.from() — animate FROM offscreen/invisible TO the CSS position. The CSS position is the ground truth; the tween describes the journey to get there.
  4. Add exits with gsap.to() — animate TO offscreen/invisible FROM the CSS position.
Example
css
/* scene-content fills the scene, padding positions content */
.scene-content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  width: 100%;
  height: 100%;
  padding: 120px 160px;
  gap: 24px;
  box-sizing: border-box;
}
.title {
  font-size: 120px;
}
.subtitle {
  font-size: 42px;
}
/* Container fills any scene size (1920x1080, 1080x1920, etc).
   Padding positions content. Flex + gap handles spacing. */

WRONG — hardcoded dimensions and absolute positioning:

css
.scene-content {
  position: absolute;
  top: 200px;
  left: 160px;
  width: 1920px;
  height: 1080px;
  display: flex; /* ... */
}
js
// Step 3: Animate INTO those positions
tl.from(".title", { y: 60, opacity: 0, duration: 0.6, ease: "power3.out" }, 0);
tl.from(".subtitle", { y: 40, opacity: 0, duration: 0.5, ease: "power3.out" }, 0.2);
tl.from(".logo", { scale: 0.8, opacity: 0, duration: 0.4, ease: "power2.out" }, 0.3);

// Step 4: Animate OUT from those positions
tl.to(".title", { y: -40, opacity: 0, duration: 0.4, ease: "power2.in" }, 3);
tl.to(".subtitle", { y: -30, opacity: 0, duration: 0.3, ease: "power2.in" }, 3.1);
tl.to(".logo", { scale: 0.9, opacity: 0, duration: 0.3, ease: "power2.in" }, 3.2);
Multi-scene compositions: one container per scene

When a composition has multiple scenes that appear sequentially (A exits, then B enters), never put all scenes' elements in a single shared flex container. Even though each element starts at opacity: 0, flex still allocates height for every child. With 5 scenes worth of content in one container, the container's total height far exceeds the stage height — flex justify-content: center then centers content relative to that oversized container, pushing the visible content outside the screenshot crop.

WRONG — all scenes in one flex container:

html
<div class="scene-content"> <!-- flex column, height:100% -->
  <!-- Scene A elements -->
  <div id="title-a" style="opacity:0">Title A</div>
  <div id="body-a"  style="opacity:0">Body A</div>
  <!-- Scene B elements — also take up flex height even when invisible -->
  <div id="title-b" style="opacity:0">Title B</div>
  <div id="body-b"  style="opacity:0">Body B</div>
  <!-- Scene C ... -->
</div>

RIGHT — each scene is its own absolute layer:

html
<!-- Scene A -->
<div class="scene" id="scene-a">
  <div id="title-a" style="opacity:0">Title A</div>
  <div id="body-a"  style="opacity:0">Body A</div>
</div>
<!-- Scene B — zero height impact on Scene A -->
<div class="scene" id="scene-b">
  <div id="title-b" style="opacity:0">Title B</div>
  <div id="body-b"  style="opacity:0">Body B</div>
</div>
css
/* Each scene fills the stage independently */
.scene {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  padding: 80px 120px;
  box-sizing: border-box;
  z-index: 2;
  gap: 24px;
}

This is the only correct pattern for sequential scenes. The position: absolute; inset: 0 on each scene container does NOT conflict with the "Layout Before Animation" guideline — that guideline bans absolute-positioning content elements (titles, cards, stats) at hardcoded pixel offsets. Scene containers that fill the full stage via inset: 0 are correct and required.

When elements share space across time

If element A exits before element B enters in the same area, both should have correct CSS positions for their respective hero frames. The timeline ordering guarantees they never visually coexist — but if you skip the layout step, you won't catch the case where they accidentally overlap due to a timing error.

What counts as intentional overlap

Layered effects (glow behind text, shadow elements, background patterns) and z-stacked designs (card stacks, depth layers) are intentional. The layout step is about catching unintentional overlap — two headlines landing on top of each other, a stat covering a label, content bleeding off-frame.

Data Attributes

All Clips
AttributeRequiredValues
idYesUnique identifier
data-startYesSeconds or clip ID reference ("el-1", "intro + 2")
data-durationRequired for img/div/compositionsSeconds. Video/audio defaults to media duration.
data-track-indexYesInteger. Same-track clips cannot overlap.
data-media-startNoTrim offset into source (seconds)
data-volumeNo0-1 (default 1)

data-track-index does not affect visual layering — use CSS z-index.

Composition Clips
AttributeRequiredValues
data-composition-idYesUnique composition ID
data-startYesStart time (root composition: use "0")
data-durationYesTakes precedence over GSAP timeline duration
data-width / data-heightYesPixel dimensions (1920x1080 or 1080x1920)
data-composition-srcNoPath to external HTML file

Composition Structure

Sub-compositions loaded via data-composition-src use a <template> wrapper. Standalone compositions (the main index.html) do NOT use <template> — they put the data-composition-id div directly in <body>. Using <template> on a standalone file hides all content from the browser and breaks rendering.

Sub-composition structure:

html
<template id="my-comp-template">
  <div data-composition-id="my-comp" data-width="1920" data-height="1080">
    <!-- content -->
    <style>
      [data-composition-id="my-comp"] {
        /* scoped styles */
      }
    </style>
    <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
    <script>
      window.__timelines = window.__timelines || {};
      const tl = gsap.timeline({ paused: true });
      // tweens...
      window.__timelines["my-comp"] = tl;
    </script>
  </div>
</template>

Load in root: <div id="el-1" data-composition-id="my-comp" data-composition-src="compositions/my-comp.html" data-start="0" data-duration="10" data-track-index="1"></div>

Video and Audio

Video must be muted playsinline. Audio is always a separate <audio> element:

html
<video
  id="el-v"
  data-start="0"
  data-duration="30"
  data-track-index="0"
  src="video.mp4"
  muted
  playsinline
></video>
<audio
  id="el-a"
  data-start="0"
  data-duration="30"
  data-track-index="2"
  src="video.mp4"
  data-volume="1"
></audio>

Timeline Contract

  • All timelines start { paused: true } — the player controls playback
  • Register every timeline: window.__timelines["<composition-id>"] = tl
  • Framework auto-nests sub-timelines — do NOT manually add them
  • Duration comes from data-duration, not from GSAP timeline length
  • Never create empty tweens to set duration

Rules (Non-Negotiable)

Deterministic: No Math.random(), Date.now(), or time-based logic. Use a seeded PRNG if you need pseudo-random values (e.g. mulberry32).

GSAP: Only animate visual properties (opacity, x, y, scale, rotation, color, backgroundColor, borderRadius, transforms). Do NOT animate visibility, display, or call video.play()/audio.play().

Animation conflicts: Never animate the same property on the same element from multiple timelines simultaneously.

No repeat: -1: Infinite-repeat timelines break the capture engine. Calculate the exact repeat count from composition duration: repeat: Math.ceil(duration / cycleDuration) - 1.

Synchronous timeline construction: Never build timelines inside async/await, setTimeout, or Promises. The capture engine reads window.__timelines synchronously after page load. Fonts are embedded by the compiler, so they're available immediately — no need to wait for font loading.

Never do:

  1. Forget window.__timelines registration
  2. Use video for audio — always muted video + separate <audio>
  3. Nest video inside a timed div — use a non-timed wrapper
  4. Use data-layer (use data-track-index) or data-end (use data-duration)
  5. Animate video element dimensions — animate a wrapper div
  6. Call play/pause/seek on media — framework owns playback
  7. Create a top-level container without data-composition-id
  8. Use repeat: -1 on any timeline or tween — always finite repeats
  9. Build timelines asynchronously (inside async, setTimeout, Promise)
  10. Use gsap.set() on clip elements from later scenes — they don't exist in the DOM at page load. Use tl.set(selector, vars, timePosition) inside the timeline at or after the clip's data-start time instead.
  11. Use <br> in content text — forced line breaks don't account for actual rendered font width. Text that wraps naturally + a <br> produces an extra unwanted break, causing overlap. Let text wrap via max-width instead. Exception: short display titles where each word is deliberately on its own line (e.g., "THE\nIMMORTAL\nGAME" at 130px).
Show full SKILL.md (961 more words)Show less

Scene Transitions (Non-Negotiable)

Every multi-scene composition MUST follow ALL of these rules. Violating any one of them is a broken composition.

  1. ALWAYS use transitions between scenes. No jump cuts. No exceptions.
  2. ALWAYS use entrance animations on every scene. Every element animates IN via gsap.from(). No element may appear fully-formed. If a scene has 5 elements, it needs 5 entrance tweens.
  3. NEVER use exit animations except on the final scene. This means: NO gsap.to() that animates opacity to 0, y offscreen, scale to 0, or any other "out" animation before a transition fires. The transition IS the exit. The outgoing scene's content MUST be fully visible at the moment the transition starts.
  4. Final scene only: The last scene may fade elements out (e.g., fade to black). This is the ONLY scene where gsap.to(..., { opacity: 0 }) is allowed.

WRONG — exit animation before transition:

js
// BANNED — this empties the scene before the transition can use it
tl.to("#s1-title", { opacity: 0, y: -40, duration: 0.4 }, 6.5);
tl.to("#s1-subtitle", { opacity: 0, duration: 0.3 }, 6.7);
// transition fires on empty frame

RIGHT — entrance only, transition handles exit:

js
// Scene 1 entrance animations
tl.from("#s1-title", { y: 50, opacity: 0, duration: 0.7, ease: "power3.out" }, 0.3);
tl.from("#s1-subtitle", { y: 30, opacity: 0, duration: 0.5, ease: "power2.out" }, 0.6);
// NO exit tweens — transition at 7.2s handles the scene change
// Scene 2 entrance animations
tl.from("#s2-heading", { x: -40, opacity: 0, duration: 0.6, ease: "expo.out" }, 8.0);

Animation Guardrails

  • Offset first animation 0.1-0.3s (not t=0)
  • Vary eases across entrance tweens — use at least 3 different eases per scene
  • Don't repeat an entrance pattern within a scene
  • Avoid full-screen linear gradients on dark backgrounds (H.264 banding — use radial or solid + localized glow)
  • 60px+ headlines, 20px+ body, 16px+ data labels for rendered video
  • font-variant-numeric: tabular-nums on number columns

When no visual-style.md or animation direction is provided, follow house-style.md for aesthetic defaults.

Typography and Assets

  • Fonts: Just write the font-family you want in CSS — the compiler embeds supported fonts automatically. If a font isn't supported, the compiler warns.
  • Add crossorigin="anonymous" to external media
  • For dynamic text overflow, use window.__hyperframes.fitTextFontSize(text, { maxWidth, fontFamily, fontWeight })
  • All files live at the project root alongside index.html; sub-compositions use ../

Editing Existing Compositions

  • Read the full composition first — match existing fonts, colors, animation patterns
  • Only change what was requested
  • Preserve timing of unrelated clips

Output Checklist

  • npx hyperframes lint and npx hyperframes validate both pass
  • Contrast warnings addressed (see Quality Checks below)
  • Animation choreography verified (see Quality Checks below)

Quality Checks

Contrast

hyperframes validate runs a WCAG contrast audit by default. It seeks to 5 timestamps, screenshots the page, samples background pixels behind every text element, and computes contrast ratios. Failures appear as warnings:

⚠ WCAG AA contrast warnings (3):
  · .subtitle "secondary text" — 2.67:1 (need 4.5:1, t=5.3s)

If warnings appear:

  • On dark backgrounds: brighten the failing color until it clears 4.5:1 (normal text) or 3:1 (large text, 24px+ or 19px+ bold)
  • On light backgrounds: darken it
  • Stay within the palette family — don't invent a new color, adjust the existing one
  • Re-run hyperframes validate until clean

Use --no-contrast to skip if iterating rapidly and you'll check later.

Animation Map

After authoring animations, run the animation map to verify choreography:

bash
node skills/hyperframes/scripts/animation-map.mjs <composition-dir> \
  --out <composition-dir>/.hyperframes/anim-map

Outputs a single animation-map.json with:

  • Per-tween summaries: "#card1 animates opacity+y over 0.50s. moves 23px up. fades in. ends at (120, 200)"
  • ASCII timeline: Gantt chart of all tweens across the composition duration
  • Stagger detection: reports actual intervals ("3 elements stagger at 120ms")
  • Dead zones: periods over 1s with no animation — intentional hold or missing entrance?
  • Element lifecycles: first/last animation time, final visibility
  • Scene snapshots: visible element state at 5 key timestamps
  • Flags: offscreen, collision, invisible, paced-fast (under 0.2s), paced-slow (over 2s)

Read the JSON. Scan summaries for anything unexpected. Check every flag — fix or justify. Verify the timeline shows the intended choreography rhythm. Re-run after fixes.

Skip on small edits (fixing a color, adjusting one duration). Run on new compositions and significant animation changes.


References (loaded on demand)

  • references/captions.md — Captions, subtitles, lyrics, karaoke synced to audio. Tone-adaptive style detection, per-word styling, text overflow prevention, caption exit guarantees, word grouping. Read when adding any text synced to audio timing.
  • references/tts.md — Text-to-speech with Kokoro-82M. Voice selection, speed tuning, TTS+captions workflow. Read when generating narration or voiceover.
  • references/audio-reactive.md — Audio-reactive animation: map frequency bands and amplitude to GSAP properties. Read when visuals should respond to music, voice, or sound.
  • references/css-patterns.md — CSS+GSAP marker highlighting: highlight, circle, burst, scribble, sketchout. Deterministic, fully seekable. Read when adding visual emphasis to text.
  • references/typography.md — Typography: font pairing, OpenType features, dark-background adjustments, font discovery script. Always read — every composition has text.
  • references/motion-principles.md — Motion design principles: easing as emotion, timing as weight, choreography as hierarchy, scene pacing, ambient motion, anti-patterns. Read when choreographing GSAP animations.
  • visual-styles.md — 8 named visual styles (Swiss Pulse, Velvet Standard, Deconstructed, Maximalist Type, Data Drift, Soft Signal, Folk Frequency, Shadow Cut) with hex palettes, GSAP easing signatures, and shader pairings. Read when user names a style or when generating DESIGN.md.
  • house-style.md — Default motion, sizing, and color palettes when no style is specified.
  • patterns.md — PiP, title cards, slide show patterns.
  • data-in-motion.md — Data, stats, and infographic patterns.
  • references/transcript-guide.md — Transcription commands, whisper models, external APIs, troubleshooting.
  • references/dynamic-techniques.md — Dynamic caption animation techniques (karaoke, clip-path, slam, scatter, elastic, 3D).
  • references/transitions.md — Scene transitions: crossfades, wipes, reveals, shader transitions. Energy/mood selection, CSS vs WebGL guidance. Always read for multi-scene compositions — scenes without transitions feel like jump cuts.
    • transitions/catalog.md — Hard rules, scene template, and routing to per-type implementation code.
    • Shader transitions are in @hyperframes/shader-transitions (packages/shader-transitions/) — read package source, not skill files.

GSAP Quick Reference

gsap.to(targets, vars) — to current state. gsap.from() — from vars. gsap.fromTo() — explicit start+end. gsap.set() — instant.

Key vars: duration (s), ease ("power2.out", "expo.out", "back.out(1.7)", "elastic.out(1,0.3)", "sine.inOut"), stagger (number or {amount, from}), repeat (never -1 — calculate finite count), yoyo, immediateRender.

Transform aliases: x/y/z (px), xPercent/yPercent (%), scale/scaleX/scaleY, rotation, rotationX/Y, skewX/Y, transformOrigin. Use autoAlpha over opacity (also sets visibility:hidden at 0).

Timeline position parameter: 0 (absolute), "+=0.2" (after end), "-=0.1" (before end), "<" (same start as prev), "<0.2" (0.2s after prev starts), "label".

repeat safety rule: Never use repeat: -1. Calculate max repeats that fit within DURATION:

js
repeat: Math.floor((DURATION - startTime) / cycleDuration) - 1

Full GSAP reference: gsap/SKILL.md — timelines, easing, stagger, performance, effects.


Registry Blocks & Components

Install reusable blocks/components via hyperframes add <name> (or on Minis: curl the registry JSON and copy files manually).

bash
hyperframes add data-chart        # block (standalone sub-composition)
hyperframes add grain-overlay     # component (snippet to paste in)

Blocks → wire via data-composition-src in index.html:

html
<div data-composition-id="data-chart"
     data-composition-src="compositions/data-chart.html"
     data-start="2" data-duration="15"
     data-track-index="1" data-width="1920" data-height="1080"></div>

Components → paste HTML/CSS/JS snippet directly into your composition.

Browse catalog: curl -s https://raw.githubusercontent.com/heygen-com/hyperframes/main/registry/registry.json

Full registry reference: hyperframes-registry/SKILL.md

© OpenMinis, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 40 other files (scripts, references) in hyperframes of OpenMinis/MinisSkills.

  • SKILL.md
  • data-in-motion.md
  • house-style.md
  • palettes/bold-energetic.md
  • palettes/clean-corporate.md
  • palettes/dark-premium.md
  • palettes/jewel-rich.md
  • palettes/monochrome.md
  • palettes/nature-earth.md
  • palettes/neon-electric.md
  • palettes/pastel-soft.md
  • palettes/warm-editorial.md
  • patterns.md
  • references/audio-reactive.md
  • references/captions.md
  • references/css-patterns.md
  • references/dynamic-techniques.md
  • references/motion-principles.md
  • references/transcript-guide.md
  • … and 22 more

Open the folder on GitHubat commit ae8c5db

Compare with similar skills

Hyperframes next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Hyperframes compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Hyperframes this skillOpenMinis/MinisSkills444—~6.2kAutomated safety check: PassMIT
Motion Videobestagentkits/motion-video-skill115—~1.5kAutomated safety check: PassMIT
Yuv Viral Videohoodini/ai-agents-skills282—~7.5kAutomated safety check: NotesNone
Noti Tiktok Full Textnotivn/AIEV126—~4.8kAutomated safety check: PassMIT
Wjs Converting Text To Videojianshuo/claude-skills131—~5.5kAutomated safety check: NotesMIT
HyperFrames Animationheygen-com/hyperframes59k3 repos~2.1kAutomated safety check: PassApache-2.0

Similar skills

  • Motion Video

    bestagentkits/motion-video-skill

    Produce beat-synced 1080p motion-graphic videos in HyperFrames (HTML + GSAP) with an AI voice-over, Vietnamese karaoke captions, SFX and generated music, in one of two proven styles (glass keynote…

    115 GitHub stars~1.5k tokensUpdated 10 days ago
    Media & CreativeAuto-check passed
  • Yuv Viral Video

    hoodini/ai-agents-skills

    Edit any selfie or screen-share footage into a viral short-form video in YUV.AI's signature style — Apple-style liquid-glass cards (real CSS backdrop-filter), dark-mode polish, MrBeast-paced cuts…

    282 GitHub stars~7.5k tokensUpdated 2 mo ago
    Media & CreativeAuto-check: notes
  • Build a Vietnamese vertical TikTok explainer in the "MỔ XẺ PAPER AI" (AI paper dissection) format with HyperFrames (HTML/CSS/GSAP → MP4), Noti.vn style.

    126 GitHub stars~4.8k tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Wjs Converting Text To Video

    jianshuo/claude-skills

    A skill your agent uses when the user wants a 王建硕-style WeChat article (article.md) turned into a narrated short MP4 video — TTS voiceover via 火山引擎 Volcano TTS, HyperFrames CSS/GSAP animation per…

    131 GitHub stars~5.5k tokensUpdated 1 mo ago
    Media & CreativeAuto-check: notes
  • HyperFrames Animation

    heygen-com/hyperframes

    Collects motion rules, scene blueprints, transitions and runtime adapters for HyperFrames video compositions, with GSAP as the default animation runtime.

    59k GitHub starsUsed in 3 repos~2.1k tokens
    Media & CreativeAuto-check passed
  • Hyperframes Media

    chmonitor/chmonitor

    Audio and media assets for HyperFrames compositions, produced by one shared audio engine (scripts/audio.mjs) — multi-provider TTS (HeyGen / ElevenLabs / Kokoro local), background music + sound…

    299 GitHub starsUsed in 1 repo~2.8k tokens
    Media & CreativeAuto-check: notes

More from OpenMinis/MinisSkills

All 49 skills in this repo
  • Android UI Automation

    OpenMinis/MinisSkills

    Automate Android apps that have no public API or web version by driving the UI layer through the Accessibility Service.

    444 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Codex On Ish

    OpenMinis/MinisSkills

    Install and run OpenAI Codex CLI inside the Minis/iSH Alpine sandbox on iOS, where rustls TLS and async sockets are broken.

    444 GitHub stars~1k tokensUpdated yesterday
    Auto-check passed
  • Evidence Chain Builder

    OpenMinis/MinisSkills

    Score a claim against the evidence behind it. An agent skill from OpenMinis/MinisSkills.

    444 GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed
  • Hyperframes CLI

    OpenMinis/MinisSkills

    HyperFrames CLI and Minis rendering. An agent skill from OpenMinis/MinisSkills.

    444 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check passed
  • Whenpeak

    OpenMinis/MinisSkills

    Predict when a person's brain works best from their sleep, using the WhenPeak performance-intelligence API, and turn it into concrete scheduling advice.

    444 GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed
  • Openstreetmap Marker

    OpenMinis/MinisSkills

    Generate a mobile-first, immersive, Amap(Gaode)-style custom landmark marker HTML map for travel itinerary planning, place showcasing, location sharing, etc.

    444 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Hyperframes

What does Hyperframes do?

Create HyperFrames HTML video compositions — animations, title cards, overlays, captions, GSAP timelines, registry blocks/components, voiceovers, audio-reactive visuals, and scene transitions. Hyperframes is an agent skill from OpenMinis/MinisSkills. Create HyperFrames HTML video compositions — animations, title cards, overlays, captions, GSAP timelines, registry blocks/components, voiceovers, audio-reactive visuals, and scene transitions.

When should I use Hyperframes?

Hyperframes fits situations like: asked to build any HTML-based video content; write GSAP animations; generate TTS narration; use registry blocks (hyperframes add).

How do I install Hyperframes in Claude Code?

Run `npx skills add OpenMinis/MinisSkills --skill hyperframes -a claude-code`. Or copy the skill folder (hyperframes in OpenMinis/MinisSkills) into .claude/skills/hyperframes in your project. Claude Code loads it when a task matches its description.

How do I install Hyperframes in Codex?

Run `npx skills add OpenMinis/MinisSkills --skill hyperframes -a codex`. Or copy the skill folder (hyperframes in OpenMinis/MinisSkills) into .agents/skills/hyperframes in your project. Codex loads it when a task matches its description.

Can I use Hyperframes in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add OpenMinis/MinisSkills --skill hyperframes -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/hyperframes, .gemini/skills/hyperframes, .github/skills/hyperframes and .opencode/skills/hyperframes in your project.

What does Hyperframes need to run?

Going by SKILL.md and its folder, Hyperframes needs the command-line tools its instructions call (npx, node and curl). Our summary lists: Python 3.

Does Hyperframes access the network?

SKILL.md names 2 domains. In commands or code: raw.githubusercontent.com and cdn.jsdelivr.net; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Hyperframes safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Hyperframes use?

Hyperframes is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Hyperframes use?

About 6.2k tokens (SKILL.md is roughly 25k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 21k tokens, read only when the agent opens those files.

What are the alternatives to Hyperframes?

Skills that share tags, products or a category with Hyperframes: Motion Video (bestagentkits/motion-video-skill, 115 stars), Yuv Viral Video (hoodini/ai-agents-skills, 282 stars), Noti Tiktok Full Text (notivn/AIEV, 126 stars) and Wjs Converting Text To Video (jianshuo/claude-skills, 131 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Hyperframes?

OpenMinis (a GitHub organization) maintains it in OpenMinis/MinisSkills, which has 444 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 7, 2026.

Source: OpenMinis/MinisSkills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.