Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/heygen-com/hyperframes-community-skillsnpx agentmods add skills/heygen-com/hyperframes-community-skills/duoWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/heygen-com/hyperframes-community-skills/duo)<a href="https://agentmods.dev/skills/heygen-com/hyperframes-community-skills/duo"><img src="https://agentmods.dev/badge/skills/heygen-com/hyperframes-community-skills/duo/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/heygen-com/hyperframes-community-skills/duo"><img src="https://agentmods.dev/badge/skills/heygen-com/hyperframes-community-skills/duo.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00160 | $0.02044 |
| Opus 5 | $0.00080 | $0.01022 |
| Sonnet 5 | $0.00032 | $0.00409 |
| Haiku 4.5 | $0.00016 | $0.00204 |
Grade A, and why
duo scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 164 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Duo
One fixed 1448×1086 @ 30fps composition: a photo of two hands holding an open foldable, with both screens blanked. You fill the two screen slots with HTML (live video, a mock chat, a scrolling feed, anything HyperFrames renders) and the rig masks it to the phone's true rounded-corner geometry.

The phone and hands are a photograph, not something you build.
assets/plate.png IS the device. Never recreate, redraw, or CSS-model the
foldable, its bezel, the hinge, or the hands, and never substitute a different
image. build.mjs copies the plate into every project; if it is missing, stop
and reinstall the skill rather than improvising a phone.
Do not edit the rig. The two .screen rects, their corner radii and the
hinge divider were measured from that photo pixel by pixel. Every visual change
you make happens inside #screen-left .content and #screen-right .content,
plus the one shared GSAP timeline.
When to use / when not to
- Use for any "two things side by side on a phone" beat: app vs app, feed vs feed, two chats answering the same prompt, two versions of a product.
- Do not use when the user wants a single phone, a laptop, or a real device
bezel they supply — this skill is one specific photo. For a different device
plate you would re-measure geometry the same way (see
references/screen-geometry.md) rather than stretch this one.
Requirements
- Node 18+ and the HyperFrames CLI via
npx hyperframes@latest(@latestis mutable; pin a version for byte-identical re-renders). - Load your motion doctrine first if your workspace has one. The rig's only built-in motion is one slow camera push; everything inside the screens must perform (scrolls, swipes, typing, taps), never idle-wobble.
Network and side effects (complete list)
registry.npmjs.org— the HyperFrames CLI itself, vianpx.cdn.jsdelivr.net— the composition loads GSAP (pinned3.14.2) at preview/render time. Rendering is not fully offline.- Anything YOU add to the screens (video clips, avatars, fonts) is your side
effect: fetching a site, downloading media, or scraping UI happens only if the
user's request calls for real content, and only from sources they are entitled
to use.
references/sourcing-real-ui.mddocuments how, and the rights caveat.
What ships with it
10 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- assets/icons-instagram.svg 4.4 KB
- assets/icons-tiktok.svg 7.3 KB
- assets/plate-preview.jpg 24 KB
- assets/plate.png 389 KB
- assets/screen-spec.json 1.4 KB
- references/feed-recipes.md 4.2 KB
- references/screen-geometry.md 2.6 KB
- references/sourcing-real-ui.md 3.2 KB
- scripts/build.mjs 3.1 KB runs code
- template/index.template.html 2.2 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 164 lines · 160 tokens per session scan A ebf19d43a676
duo is a skill published in the GitHub repository heygen-com/hyperframes-community-skills (70 stars, last pushed yesterday), licensed Apache-2.0. It adds 160 tokens to every session and 2,044 once invoked, about $0.0008 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-11.
Other skills, from other repositories
video-hyperframes
Hyperframes / Remotion-compatible continuous frame animation with autoplay support.
hyperframes-oversized-cursor
House-style oversized macOS cursor technique for HyperFrames videos. Use when a scene involves cursors, pointer-led action, kicking off a UI scene, igniting a morph/transition/typing with a click, or when a scene reads as static/dead/stale and needs motion to carry the eye. Covers cursor size/look, off-screen entry…
p5js
Use when users request: p5.js sketches, creative coding, generative art, interactive visualizations, canvas animations, browser-based visual art, data viz, shader effects, or any p5.js project.
webgl-particle-galaxy
A real-time particle galaxy — tens of thousands of additive-blended GPU points spiraling around a bright core, their orbits solved entirely in the vertex shader (from glVertexID), so the whole cloud draws in one call. Rendered as a single self-contained index.html. Use when the brief asks for a "particle field"…
webgl-horizontal-parallax
A horizontal-scroll WebGL gallery (Three.js): frames glide sideways with lerp smoothing and each image parallaxes its texture (UV shift) by its position in the viewport.
webgl-aurora-veil
A self-contained WebGL2 hero: layered aurora light curtains warped over a night sky scattered with stars; move the cursor to sway the veil.