All skills

hyperframes-core (HeyGen HyperFrames)

Builds one renderable HyperFrames composition from HTML, covering structure, timing, media playback and validation.

hyperframes-core: Codex gets HyperFrames compositions right far more often with the skill (control 4.1, skill 4.9, one-liner 4.6) and uses fewer tokens (0.48x control), but this skill was retired from HeyGen's repo

SituationalSafe

Codex CLI · gpt-6-astra

25.8 / 30

Lift over no skill: +0.85 · Situational · 18 runs

Situational: the lift +0.85 is under +1.0. Recommended needs a total of 22/30, output quality of 3.5, and a lift of +1.0.

SOTA

Pass

Tested with Codex.

Covers Codex, Claude Code

Codex CLI 0.166 (SOTA tier): 18 graded runs. A pass here also covers Claude Code under our tier rule; it says nothing about the second tier.

Scores

Each dimension is 0 to 5 and the six add up to the total out of 30. 5 is better on every dimension. Cost 5 means cheap and fast. Install 5 means easy.

Trigger reliability
5.0
Lift over no skill
2.9
Output quality
4.9
Token and time cost
5.0
Install and portability
4.0
Safety
4.0

Security review

Safe

Static scan: 0 CRITICAL / 0 HIGH / 21 MEDIUM. Manual review: Safe to install. A clean scan does not prove a skill safe.

Install

npx skills@latest add heygen-com/hyperframes --skill hyperframes-core

Source

Pinned commit: 207c8a4daf6480d697f203784f1fd422727569e3

Tested: 2026-11-02

What we tested

  • Three-scene explainer — Create a 12-second 1920x1080 video as a HyperFrames (an open-source framework that renders an HTML page to MP4 by seeking a GSAP timeline frame by frame; GSAP comes from a CDN script tag). Three scenes of 4 seconds each: a title card ('Meet Orbit'), a bullet l…
  • Fix a broken composition — index.html in this folder is a HyperFrames (an open-source framework that renders an HTML page to MP4 by seeking a GSAP timeline frame by frame; GSAP comes from a CDN script tag) composition that renders wrong (jittery, wrong scene timing, scene 2 invisible, d…
  • Reusable lower-third as a sub-composition — Build a HyperFrames (an open-source framework that renders an HTML page to MP4 by seeking a GSAP timeline frame by frame; GSAP comes from a CDN script tag) video of 8 seconds, 1920x1080. A reusable lower-third (name and job title that slide in from the left an…

Pros

  • Lifts the mean score from 4.09 to 4.94 over no skill (+0.85).
  • The skill was picked up without being named: Skill file read in 6/6 treatment runs.
  • No token overhead: 0.47x the tokens of no skill.
  • Beats a one-sentence version of its own rule by +0.32.
  • High absolute quality with the skill: 4.94 out of 5.

Cons

  • Test caveat: Tested at heygen-com/hyperframes commit 207c8a4. The skill was later removed from the repository HEAD, so this review describes a retired version and the install command may not work against the current repository.
  • n=2 per task per arm; differences under about 1 point are noise.

Review

Codex CLI 0.166 (gpt-6-astra, low reasoning) on a dedicated Windows test PC, a fresh temporary project and temporary HOME/TMPDIR/caches per run, skill installed (treatment) or absent (control) or absent with the skill's core requirement squeezed into one sentence appended to the prompt (one-liner group), 2 runs per group per task, network off, /tmp writes blocked. The prompts never mention the skill (except the wording noted below). HyperFrames is described in the prompt as 'an open-source framework that renders an HTML page to MP4 by seeking a GSAP timeline frame by frame', with no contract details. Tasks: author a 12-second three-scene explainer, fix a broken composition (jitter, wrong timing), and build a reusable lower-third as a sub-composition. The one-liner states the full composition contract in one paragraph.

Three-arm comparison

ArmMean score (0-5)Tokens per run
Without the skill4.09239k
One-sentence prompt4.62160k
With the skill4.94114k

Measured with Codex CLI over 18 runs, scored by rule-based checks with no LLM judge. Total 25.8 / 30, verdict Situational.

Disclosure: Tested at heygen-com/hyperframes commit 207c8a4. The skill was later removed from the repository HEAD, so this review describes a retired version and the install command may not work against the current repository.

Verdict: Situational (25.8 / 30). Source: heygen-com/hyperframes, skills/hyperframes-core, pinned at commit 207c8a4. Install: npx skills@latest add heygen-com/hyperframes --skill hyperframes-core. Licence: Apache-2.0 (repo LICENSE).

What it is

The hyperframes-core skill from heygen-com/hyperframes, tested at commit 207c8a4 (the skill was removed from the repo HEAD later, so this describes a retired version). It documents the HyperFrames composition contract: root div with data-composition-id/width/height/duration, timed clips with data-start/data-duration and class=clip, one paused GSAP timeline registered at window.__timelines[root id], render-time determinism rules, and sub-compositions in separate files.

How we tested

Codex CLI 0.166 (gpt-6-astra, low reasoning) on a dedicated Windows test PC, a fresh temporary project and temporary HOME/TMPDIR/caches per run, skill installed (treatment) or absent (control) or absent with the skill's core requirement squeezed into one sentence appended to the prompt (one-liner group), 2 runs per group per task, network off, /tmp writes blocked. The prompts never mention the skill (except the wording noted below).

HyperFrames is described in the prompt as 'an open-source framework that renders an HTML page to MP4 by seeking a GSAP timeline frame by frame', with no contract details. Tasks: author a 12-second three-scene explainer, fix a broken composition (jitter, wrong timing), and build a reusable lower-third as a sub-composition. The one-liner states the full composition contract in one paragraph.

  1. Three-scene explainer — Create a 12-second 1920x1080 video as a HyperFrames (an open-source framework that renders an HTML page to MP4 by seeking a GSAP timeline frame by frame; GSAP comes from a CDN script tag). Three scenes of 4 seconds each: a title card ('Meet Orbit'), a bullet l…
  2. Fix a broken composition — index.html in this folder is a HyperFrames (an open-source framework that renders an HTML page to MP4 by seeking a GSAP timeline frame by frame; GSAP comes from a CDN script tag) composition that renders wrong (jittery, wrong scene timing, scene 2 invisible, d…
  3. Reusable lower-third as a sub-composition — Build a HyperFrames (an open-source framework that renders an HTML page to MP4 by seeking a GSAP timeline frame by frame; GSAP comes from a CDN script tag) video of 8 seconds, 1920x1080. A reusable lower-third (name and job title that slide in from the left an…

Scoring is programmatic (hidden tests / planted-issue recall / constraint checks / render+OCR where relevant), 0–5 per run. No LLM judge decided any score.

Results

The one-liner given to the third group: "HyperFrames composition contract: a standalone root <div data-composition-id data-width data-height data-duration> in <body>; timed elements carry data-start and data-duration (class=clip); build ONE gsap.timeline({paused:true}) and register it at window.__timelines['<root id>']; render-time determinism: no Math.random/Date.now/timers/rAF, no repeat:-1, never tween display/visibility/autoAlpha on a clip; sub-compositions live in separate files with data-composition-src, content wrapped in <template>, host id = inner id = timeline key."

TaskControl scoreOne-linerWith skillControl tokensOne-liner tokensWith-skill tokensSkill read
t1-explainer3.335.05.0136k82k98k2/2
t2-fix3.953.864.82377k100k128k2/2
t3-sub5.05.05.0203k298k114k2/2

Mean score: 4.09 without vs 4.94 with the skill (delta +0.85). Tokens per run: 239k vs 114k (0.47x); time 107s vs 79s. One-liner group: 4.62 (the skill's gain over the one-liner: +0.32; one-liner's own gain over no skill: +0.53); one-liner tokens 160k per run, so the skill costs 0.71x the one-liner.

What happened

  • Control 4.09, skill 4.94, one-liner 4.62 (n=6 each). The strongest gap is the explainer: control wrote visibility/display tweens or autoAlpha on clips in 2/2 runs and did not register the timeline at window.__timelines in 2/2; both skill runs and both one-liner runs were clean (5.0).
  • Fix task: the skill scored 4.82 against 3.95 for control and 3.86 for the one-liner. Control left the root without a duration and hard-coded px size in 2/2, and the root's duration did not cover the last clip; the one-liner runs hard-coded px size and one did not register the timeline.
  • Sub-composition task: all three arms scored 5.0, so a bare model already handles data-composition-src and the template wrapper when asked for a reusable component.
  • Tokens: skill 114k, one-liner 160k, control 239k per run. Without the contract, control spends many more steps (13 commands per run against 9) trying to work out the format; the skill is cheaper than no guidance at all.
  • One check, 'every timed element has a duration', fails for 3 runs including skill runs; it counts only two clips in the fix task's file and is the same rule for all arms.

Dimension scores

DimensionScoreWhy
1_output_quality4.94

Mean score 4.94/5 with the skill (programmatic checks, see per-task table).

2_lift_vs_no_skill2.85

+0.85 points vs 4.09 without the skill (n=2 per task; under ~1 point is noise).

3_trigger5.0Skill file read in 6/6 treatment runs.
4_instructions_portability4

SKILL.md plus references; content specific to the HyperFrames CLI.

5_efficiency5

0.47x tokens (114k vs 239k per run) and 0.74x time (79s vs 107s).

6_safety_hygiene4Prose and rules only; see security.md.

Limits of this test

  • Checks are static: HTML structure, GSAP calls and timeline registration were parsed, but no frames were rendered (the hyperframes CLI, Chrome and FFmpeg were not run).
  • The skill was tested at the commit 207c8a4 because HEAD no longer contains it; the install command in the review may not work against the current repository.
  • n=2 per cell; control's token count is inflated by a few very long runs (up to 440k).
  • Prompts describe HyperFrames in one sentence; an agent with web access could look up the docs, but network was off.
  • n = 2 per group per task: differences under about 1 point are noise.
  • Rule-based scoring measures what the checks can see; it cannot judge taste or whether a result is the best possible.

Security

See security.md. Scan: 0 CRITICAL / 0 HIGH / 21 MEDIUM. Verdict: safe to run (no-network sandbox). A clean scan does not prove a skill safe.

Bottom line

Where the format is unknown, the skill roughly halves the chance of contract mistakes and saves tokens. A paragraph stating the contract recovers most of the benefit. Because the skill is no longer in the vendor's repo, treat the result as a record of that earlier version.

Transcript

Run log for hyperframes-core: Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.
Columns: task, arm-run, score (0-5), tokens, seconds, checks passed, skill files the agent opened.

t1-explainer control-1: score 3.1, tokens 140793, secs 87.3, checks 7/11, opened nothing
t1-explainer control-2: score 3.57, tokens 132979, secs 80.3, checks 8/11, opened nothing
t1-explainer oneliner-1: score 5.0, tokens 90890, secs 75.8, checks 11/11, opened nothing
t1-explainer oneliner-2: score 5.0, tokens 73311, secs 72.9, checks 11/11, opened nothing
t1-explainer treatment-1: score 5.0, tokens 111517, secs 90.6, checks 11/11, opened hyperframes-core
t1-explainer treatment-2: score 5.0, tokens 84676, secs 102.2, checks 11/11, opened hyperframes-core
t2-fix control-1: score 3.95, tokens 314272, secs 165.7, checks 7/10, opened nothing
t2-fix control-2: score 3.95, tokens 440614, secs 142.2, checks 7/10, opened nothing
t2-fix oneliner-1: score 3.77, tokens 108753, secs 81.4, checks 7/10, opened nothing

18 runs, 3 artifacts

Sample output

SOTA · With the skill: index.html (t1-explainer, run 1, Codex)

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <title>Meet Orbit — 12-second film</title> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <style> * { box-sizing: border-box; } html, body { width: 100%; height: 100%; margin: 0; } body { background: #f3f0e7; color: #202d29; font-family: system-ui, sans-serif; } #root { position: relative; width: 100%; height: 100%; overflow: hidden; background: #f3f0e7; } .brand { position: absolute; top: 66px; left: 100px; display: flex; align-items: center; gap: 16px; font-size: 32px; font-weight: 750; letter-spacing: -1px; } .brand-mark { width: 30px; height: 30px; border: 8px solid #e65932; border-radius: 50%; } .edition { position: absolute; top: 77px; right: 100px; font-size: 18px; letter-spacing: 3px; } .clip { position: absolute; inset: 0; } .scene { width: 100%; height: 100%; padding: 190px 100px 150px; display: flex; align-items: center; gap: 65px; } .copy { flex: 1; position: relative; z-index: 2; } .eyebrow { margin: 0 0 30px; font-size: 21px; font-weight: 650; letter-spacing: 4px; text-transform: uppercase; color: #52635b; } h1, h2, p { margin: 0; } h1 { font-size: 150px; line-height: 1.05; letter-spacing: -10px; font-weight: 650; } h2 { font-size: 86px; line-height: 1.07; letter-spacing: -5px; font-weight: 650; } .subtitle { margin-top: 34px; font-size: 31px; line-height: 1.5; color: #52635b; } .art { width: 760px; height: 650px; flex: none; } .orbit-svg { display: block; width: 100%; height: 100%; overflow: visible; } .footer { position: absolute; bottom: 65px; left: 100px; right: 100px; display: flex; justify-content: space-between; font-size: 18px; letter-spacing: 2px; color: #52635b; } .progress-track { position: absolute; bottom: 0; left: 0; right: 0; height: 7px; background: #deded3; } .progress { width: 100%; height: 100%; background: #e65932; transform-origin: left center; } .features-copy { max-width: 650px; } .features { list-style: none; margin: 0; padding: 0; width: 930px; } .feature { display: flex; align-items: center; gap: 30px; padding: 39px 0; border-bottom: 2px solid #ced3c9; font-size: 43px; font-weight: 550; letter-spacing: -1.5px; } .feature:first-child { border-top: 2px solid #ced3c9; } .number { display: grid; place-items: center; width: 66px; height: 66px; flex: none; border-radius: 50%; background: #202d29; color: #f3f0e7; font-size: 22px; letter-spacing: 0; } .feature-dot { margin-left: auto; color: #e65932; font-size: 40px; } .closing { justify-content: center; text-align: center; } .closing-copy { width: 1300px; } .closing h2 { font-size: 119px; letter-spacing: -7px; } .cta { display: inline-flex; align-items: center; justify-content: center; gap: 50px; margin-top: 48px; padding: 26px 42px; border-radius: 100px; background: #e65932; color: #17251f; font-size: 32px; font-weight: 650; } .cta-arrow { font-size: 40px; line-height: 1; } .closing-icon { display: block; width: 84px; height: 84px; margin: 0 auto 38px; border: 19px solid [... excerpt: first 3200 of 7731 characters]

See Pro