hyperframes-core (HeyGen HyperFrames)
用 HTML 构建可渲染的 HyperFrames 合成,涵盖结构、时间、媒体播放和校验。
hyperframes-core:对照组 4.09、一句话提示 4.62、装 skill 4.94(0–5 分,Codex 实测,n=2/任务/组)。结论:视情况而定,相对不装 skill +0.85。
Codex CLI · gpt-6-astra
25.8 / 30
相对不装 skill 的提升:+0.85 · 看情况 · 18 次运行
视情况而定:提升 +0.85 低于 +1.0。推荐要求总分 22/30、产出质量 3.5、提升 +1.0。
前沿
通过使用 Codex 测试。
覆盖 Codex, Claude Code
Codex CLI 0.166(SOTA 档):18 次评分运行。按我们的分档规则,这档通过同时覆盖 Claude Code;它不代表第二档的结果。
分数
每一维 0 到 5 分,六维相加是满分 30 的总分。每一维都是 5 更好。成本 5 表示又便宜又快。安装 5 表示容易。
- 触发可靠性
- 5.0
- 相对不装的提升
- 2.9
- 产出质量
- 4.9
- 令牌与时间成本
- 5.0
- 安装与可移植性
- 4.0
- 安全
- 4.0
安全审查
安全静态扫描:0 CRITICAL / 0 HIGH / 21 MEDIUM。人工审查:可在断网沙箱中运行。扫描没有命中不等于绝对安全。
安装
npx skills@latest add heygen-com/hyperframes --skill hyperframes-core
固定提交: 207c8a4daf6480d697f203784f1fd422727569e3
测试日期: 2026-11-02
我们测了什么
- 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…
优点
- 平均分从不装时的 4.09 提到 4.94(+0.85)。
- 不点名也会被触发:Skill file read in 6/6 treatment runs.
- 不增加 token 开销:约为不装 skill 时的 0.47 倍。
- 比把它的规则压成一句话的做法高 +0.32。
- 装 skill 后绝对质量高:4.94 / 5。
缺点
- 测试说明:测试对象是 heygen-com/hyperframes 的 207c8a4 提交。该 skill 后来已从仓库 HEAD 移除,所以本评测描述的是已下线的旧版本,安装命令可能无法对当前仓库生效。
- 每个任务每组 n=2,差距在 1 分以内属于噪声。
评测
在 Codex CLI(SOTA 档)上跑 3 个任务、对照、一句话提示、装 skill 三组,共 18 次运行,由规则脚本打分(没有 LLM 评委),断网沙箱、每次运行独立临时目录。具体做法见下方英文评测原文。
三组对比
| 组别 | 平均分(0–5) | 每次 token |
|---|---|---|
| 不装 skill | 4.09 | 239k |
| 一句话提示 | 4.62 | 160k |
| 装了 skill | 4.94 | 114k |
Codex CLI 实测,18 次运行,规则脚本打分,没有 LLM 评委。总分 25.8 / 30,结论 视情况而定。
测试披露: 测试对象是 heygen-com/hyperframes 的 207c8a4 提交。该 skill 后来已从仓库 HEAD 移除,所以本评测描述的是已下线的旧版本,安装命令可能无法对当前仓库生效。
下面是评测原文,英文。
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.
- 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…
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."
| Task | Control score | One-liner | With skill | Control tokens | One-liner tokens | With-skill tokens | Skill read |
|---|---|---|---|---|---|---|---|
| t1-explainer | 3.33 | 5.0 | 5.0 | 136k | 82k | 98k | 2/2 |
| t2-fix | 3.95 | 3.86 | 4.82 | 377k | 100k | 128k | 2/2 |
| t3-sub | 5.0 | 5.0 | 5.0 | 203k | 298k | 114k | 2/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-srcand 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
| Dimension | Score | Why |
|---|---|---|
| 1_output_quality | 4.94 | Mean score 4.94/5 with the skill (programmatic checks, see per-task table). |
| 2_lift_vs_no_skill | 2.85 | +0.85 points vs 4.09 without the skill (n=2 per task; under ~1 point is noise). |
| 3_trigger | 5.0 | Skill file read in 6/6 treatment runs. |
| 4_instructions_portability | 4 | SKILL.md plus references; content specific to the HyperFrames CLI. |
| 5_efficiency | 5 | 0.47x tokens (114k vs 239k per run) and 0.74x time (79s vs 107s). |
| 6_safety_hygiene | 4 | Prose 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.
记录
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 次运行、3 个产物
样例产物
前沿 · 装了 skill:index.html(t1-explainer,第 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]