hyperframes
Author HTML compositions that the `render_video` tool turns into deterministic MP4 video — animated charts and dashboards, data explainers, text/quote cards…
Skill by spinabot
Chalk Labs
Need help deploying hyperframes?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/spinabot-hyperframes
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, frontend, data
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/hyperframes
What's inside
- Skill name
hyperframes- Description
- Author HTML compositions that the `render_video` tool turns into deterministic MP4 video — animated charts and dashboards, data explainers, text/quote cards, kinetic typography, product teasers, and branded short-form social clips. Use when the user asks Brigade to make, render, animate, or produce a video from data, text, or a layout (NOT photoreal/AI footage — that's `generate_video`).
- License
- MIT
- Instructions
- 123 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# hyperframes — HTML → deterministic MP4
The `render_video` tool renders an **HTML composition** you write into a pixel-exact
MP4. A headless Chrome steps a **GSAP master timeline** frame by frame, captures one
image per frame, and FFmpeg encodes them — so the same HTML always produces the same
video. This is the right tool for anything **programmatic and data-driven**; reach for
`generate_video` only when you need photoreal/AI-generated footage.
**Great fits:** animated bar/line/donut charts, KPI dashboards, "N facts about X"
explainers, quote/announcement cards, kinetic typography, countdowns, before/after
reveals, branded intros/outros, vertical social clips.
## The composition contract (this is what makes or breaks a render)
Write ONE self-contained HTML document. Two things are mandatory and non-obvious:
1. **A paused GSAP timeline registered to `window.__timelines[<composition-id>]`.**
HyperFrames seeks *this* timeline to render each frame. **Total video duration =
`tl.duration()`** — you do NOT set duration with an attribute.
2. **`data-*` attributes** on the root and on every timed element.
**Root composition element** — required: `data-composition-id` (must match the
`window.__timelines` key), `data-width`, `data-height`, `data-start`; plus
`data-track-index`.
**Timed children** — `data-start` + `data-track-index` on every one; **visible
elements (`<img>`, text/graphic `<div>`s) also need `class="clip"`**; `<img>` also
takes `data-duration`. Do **not** put `data-duration` on the root/composition — its
duration comes from the timeline.
```html
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<!-- Load GSAP (see "GSAP + assets" below). -->
<script src="https://cdn.jsdelivr.net/npm/gsap@3/dist/gsap.min.js"></script>
<style>
body { margin: 0; }
.stage { width: 1080px; height: 1920px; position: relative; overflow: hidden;
background: #0b0b12; color: #fff; font-family: system-ui, sans-serif; }
.title { position: absolute; top: 220px; left: 80px; font-size: 96px;
font-weight: 800; opacity: 0; transform: translateY(24px); }
</style>
</head>
<body>
<div class="stage"
data-composition-id="promo"
data-width="1080" data-height="1920"
data-start="0" data-track-index="0">
<div class="title clip" data-start="0" data-duration="4" data-track-index="0">
Ship faster.
</div>
</div>
<script>
// A PAUSED timeline — HyperFrames drives playback by seeking it per frame.
const tl = gsap.timeline({ paused: true });
tl.to(".title", { opacity: 1, y: 0, duration: 0.7, ease: "power2.out" }, 0.4)
.to(".title", { opacity: 0, duration: 0.5, ease: "power2.in" }, 3.5);
// Register under the SAME id as data-composition-id. This is mandatory.
window.__timelines = window.__timelines || {};
window.__timelines["promo"] = tl;
</script>
</body>
</html>
```
- Vertical `1080×1920` for TikTok/Reels/Shorts, `1920×1080` for landscape,
`1080×1080` for square feed posts.
- Frame rate is an engine default (the tool doesn't expose an fps flag) — author for
smooth motion at 30fps.
## GSAP + assets
The tool renders a single standalone `index.html` (no project scaffold), so the
composition must bring its own GSAP and assets:
- **GSAP**: load it via a `<script src="…gsap.min.js">` (CDN as above) or paste the
minified source inline. It must be defined before your timeline script runs.
- **Assets**: embed images/fonts as `data:` URIs so nothing depends on external files.
- **Determinism**: never drive motion from `Date.now()`, `Math.random()`,
`setTimeout`, or a hand-rolled `requestAnimationFrame` loop — put *all* motion on the
GSAP timeline. Off-timeline animation desyncs from the frame stepper.
## Workflow
1. **Write the composition** to the contract above with real data/text (never lorem).
2. **Call `render_video`** with `{ html, output_name?, lint? }`. It lints, renders in an
isolated subprocess (a real render legitimately takes a minute or more), and returns
a saved MP4 as a `MEDIA:<path>` line.
3. **Deliver it** with `send_media({ path })`.
4. Handle failures by `errorType`:
- `composition_invalid` — read the lint message, fix the HTML, retry.
- `render_failed` — read the stderr excerpt (bad timeline id, missing GSAP, etc.).
- `render_timeout` — the composition is too heavy; simplify or shorten it.
- `render_unavailable` — the engine/FFmpeg isn't installed (see below).
## Design quality (make it look intentional, not templated)
- Pick a palette that fits the subject; commit to one accent and keep the rest quiet.
Set a real type scale; give headings weight and letter-spacing.
- Stagger reveals (offset each element's timeline position by 0.15–0.3s) so motion
reads as choreographed, not simultaneous.
- Keep text ≥64px from every edge on vertical video so platform UI never clips it.
- Ease everything (`power2.out` in, `power2.in` out). Linear motion reads robotic.
- For charts, animate the *value* (bar height, arc sweep, a counting number) on the
timeline rather than swapping static frames.
## Requirements & install
Needs **Node 22+**, the **`@hyperframes/producer`** engine (an optional dependency —
install it to enable video), and **FFmpeg** on PATH. A headless Chromium is
auto-downloaded by the engine on first render (needs network once).
```bash
npm i @hyperframes/producer # the render engine (optional; enables render_video)
# FFmpeg: brew install ffmpeg | winget install ffmpeg | apt install ffmpeg
```From spinabot/brigade, MIT.
More from spinabot/brigade
- 0.788score
skill-creator
spinabot
Create, edit, improve, or audit AgentSkills.
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
taskflow
spinabot
Use when work should span one or more detached tasks but still behave like one job with a single owner context.
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
pdf
spinabot
Create and edit PDFs to a professional standard — generate from content, draw vector/precise layouts, embed custom (incl.
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
share-skills
spinabot
Use when you need to author, package, or share a skill folder — understanding the SKILL.md format, where skills live, and how to bundle a folder so it can be…
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
lead-scout
spinabot
How to find and VERIFY business leads (any niche, any city) — especially "businesses without a website" prospecting.
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
github
spinabot
GitHub operations via `gh` CLI: issues, PRs, CI runs, code review, API queries.
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
node-connect
spinabot
Diagnose Brigade node connection and pairing failures for Android, iOS, and macOS companion apps.
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
healthcheck
spinabot
Host security hardening and risk-tolerance configuration for Brigade deployments.
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
taskflow-inbox-triage
spinabot
Example TaskFlow authoring pattern for inbox triage.
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
docx
spinabot
Create and edit Microsoft Word (.docx) documents to a professional standard — reports, proposals, contracts, letters, memos — with custom styles, multi-level…
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
slack
spinabot
Use when you need to control Slack from Brigade via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
things-mac
spinabot
Manage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database).
SkillBFreshness: B★ 11.4KClaude Code +9
Compare and alternatives
Featured in
Signals
- Stars
- 11,356
- Forks
- 77
- Open issues
- 1
- Last commit (this folder)
- Jul 5, 2026 (3 months ago)
- Last release
- Sep 15, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/spinabot/brigade
- Website
- www.brigade.spinabot.com
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from spinabot
- 0.788score
skill-creator
spinabot
Create, edit, improve, or audit AgentSkills.
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
github
spinabot
GitHub operations via `gh` CLI: issues, PRs, CI runs, code review, API queries.
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
pdf
spinabot
Create and edit PDFs to a professional standard — generate from content, draw vector/precise layouts, embed custom (incl.
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
docx
spinabot
Create and edit Microsoft Word (.docx) documents to a professional standard — reports, proposals, contracts, letters, memos — with custom styles, multi-level…
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
slack
spinabot
Use when you need to control Slack from Brigade via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
SkillBFreshness: B★ 11.4KClaude Code +9 - 0.786score
healthcheck
spinabot
Host security hardening and risk-tolerance configuration for Brigade deployments.
SkillBFreshness: B★ 11.4KClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get hyperframes running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
hyperframes skill. Agent Mart. https://agentmart.dev/skills/spinabot-hyperframes (last updated 2026-10-24)