Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Install, discover, and wire registry blocks and components into HyperFrames compositions. Use when running hyperframes add or hyperframes catalog, installing one item or every block matching a tag, wiring an installed item into index.html, or working with hyperframes.json. Covers discovery, install locations, block sub-composition wiring, component snippet merging, and authoring a new block or component to contribute upstream (idea → scaffold → validate → PR).
.claude/skills/coco-research-hyperframes-registry/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 86% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 17% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -4% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -53% | 0% |
The registry provides reusable blocks and components installable via hyperframes add <name>.
data-composition-src in a host composition.bashhyperframes add data-chart # install a block hyperframes add grain-overlay # install a component hyperframes add captions # install every block tagged captions hyperframes add shimmer-sweep --dir . # target a specific project hyperframes add data-chart --json # machine-readable output hyperframes add data-chart --no-clipboard # skip clipboard (CI/headless)
After install, the CLI prints which files were written and a snippet to paste into your host composition. The snippet is a starting point — you'll need to add data-composition-id (must match the block's internal composition ID), data-start, and data-track-index attributes when wiring blocks.
The positional value is resolved as an exact item name first. If no item matches and the value is a tag, the command installs every block with that tag. Registry dependencies are installed before the requested item. hyperframes add works only for blocks and components; for examples, use hyperframes init <dir> --example <name> instead.
Blocks install to compositions/<name>.html by default. Components install to compositions/components/<name>.html by default.
These paths are configurable in hyperframes.json:
json{ "registry": "https://raw.githubusercontent.com/heygen-com/hyperframes/main/registry", "paths": { "blocks": "compositions", "components": "compositions/components", "assets": "assets" } }
See install-locations.md for full details.
Blocks are standalone compositions — include them via data-composition-src in your host 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>
Key attributes:
data-composition-src — path to the block HTML filedata-composition-id — must match the block's internal IDdata-start — when the block appears in the host timeline (seconds)data-duration — how long the block playsdata-width / data-height — block canvas dimensionsdata-track-index — layer ordering (higher = in front)See wiring-blocks.md for full details.
Components are snippets — paste their HTML into your composition's markup, their CSS into your style block, and their JS into your script (if any):
compositions/components/grain-overlay.html)<div data-composition-id="..."><style> block into your composition's styles<script> content into your composition's script (before your timeline code)See wiring-components.md for full details.
Use the CLI as the primary discovery surface:
bashnpx hyperframes catalog npx hyperframes catalog --type block npx hyperframes catalog --type component npx hyperframes catalog --type block --tag social npx hyperframes catalog --json npx hyperframes catalog --human-friendly
The normal table and --json modes only list matches; install a selected name with hyperframes add <name>. --human-friendly opens an interactive picker and installs the selected item immediately. In CI or agent workflows, prefer --json followed by an explicit add.
If the CLI cannot reach the configured registry, inspect the raw manifest as a fallback:
bashcurl -s https://raw.githubusercontent.com/heygen-com/hyperframes/main/registry/registry.json
Each item's registry-item.json contains: name, type, title, description, tags, dimensions (blocks only), duration (blocks only), and file list.
See discovery.md for details on filtering by type and tags.
To author a NEW registry item (caption style, VFX block, transition, lower third, or a reusable component) and ship it as an upstream PR — not install an existing one — follow the full idea → scaffold → build → validate → preview → ship workflow in contributing.md. Copy-paste starter templates (caption / VFX / component / registry-item.json) are in templates.md.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | fail→fail | 19,203 | 17,518 | -9% | 1 | 1 | 0% | 2,776 | 4,110 | +48% | 0 | 0 | — |
case-01 | fail→pass | 10,641 | 8,599 | -19% | 1 | 1 | 0% | 886 | 1,652 | +86% | 0 | 0 | — |
case-02 | fail→pass | 16,987 | 8,457 | -50% | 1 | 1 | 0% | 1,664 | 1,866 | +12% | 0 | 0 | — |
case-03 | fail→pass | 19,464 | 15,007 | -23% | 1 | 1 | 0% | 2,426 | 2,849 | +17% | 0 | 0 | — |
case-04 | pass→pass | 5,384 | 7,937 | +47% | 1 | 1 | 0% | 953 | 1,708 | +79% | 0 | 0 | — |
case-06 | pass→pass | 12,397 | 6,714 | -46% | 1 | 1 | 0% | 1,259 | 2,268 | +80% | 0 | 0 | — |
case-07 | fail→pass | 9,394 | 2,859 | -70% | 1 | 1 | 0% | 1,613 | 1,553 | -4% | 0 | 0 | — |
case-08 | fail→pass | 19,033 | 7,905 | -58% | 1 | 1 | 0% | 3,322 | 1,563 | -53% | 0 | 0 | — |
case-09 | pass→pass | 12,727 | 2,838 | -78% | 1 | 1 | 0% | 1,418 | 1,762 | +24% | 0 | 0 | — |
case-10 | fail→pass | 16,526 | 2,772 | -83% | 1 | 1 | 0% | 1,623 | 1,641 | +1% | 0 | 0 | — |
case-11 | pass→pass | 15,837 | 9,484 | -40% | 1 | 1 | 0% | 1,605 | 1,910 | +19% | 0 | 0 | — |
case-12 | fail→pass | 18,118 | 7,690 | -58% | 1 | 1 | 0% | 2,493 | 1,600 | -36% | 0 | 0 | — |
case-13 | fail→pass | 11,497 | 6,602 | -43% | 1 | 1 | 0% | 1,179 | 1,516 | +29% | 0 | 0 | — |
case-14 | fail→pass | 27,342 | 6,475 | -76% | 1 | 1 | 0% | 3,708 | 2,126 | -43% | 0 | 0 | — |
case-15 | pass→pass | 15,847 | 13,589 | -14% | 1 | 1 | 0% | 2,229 | 2,489 | +12% | 0 | 0 | — |
case-16 | fail→pass | 10,354 | 9,234 | -11% | 1 | 1 | 0% | 1,440 | 1,864 | +29% | 0 | 0 | — |
case-17 | fail→pass | 11,534 | 2,572 | -78% | 1 | 1 | 0% | 1,089 | 1,530 | +40% | 0 | 0 | — |
case-18 | pass→pass | 13,493 | 8,450 | -37% | 1 | 1 | 0% | 1,401 | 1,823 | +30% | 0 | 0 | — |
case-19 | pass→pass | 19,116 | 2,807 | -85% | 1 | 1 | 0% | 2,637 | 1,678 | -36% | 0 | 0 | — |
case-20 | pass→pass | 14,515 | 1,756 | -88% | 1 | 1 | 0% | 2,476 | 1,437 | -42% | 0 | 0 | — |
case-21 | fail→pass | 7,093 | 2,920 | -59% | 1 | 1 | 0% | 1,294 | 1,677 | +30% | 0 | 0 | — |
case-22 | pass→pass | 13,785 | 2,954 | -79% | 1 | 1 | 0% | 1,384 | 1,598 | +15% | 0 | 0 | — |
case-23 | fail→pass | 10,942 | 7,118 | -35% | 1 | 1 | 0% | 1,823 | 2,228 | +22% | 0 | 0 | — |
case-24 | pass→pass | 12,553 | 3,752 | -70% | 1 | 1 | 0% | 1,730 | 1,800 | +4% | 0 | 0 | — |
case-25 | pass→pass | 11,660 | 2,373 | -80% | 1 | 1 | 0% | 2,438 | 1,628 | -33% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted. The headline lift of +52 percentage points is the difference between those two pass rates over the 25 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.