hyperframes (heygen-com/hyperframes)
hyperframes:对照组 4.9、一句话提示 4.91、装 skill 4.89(0–5 分,Codex 实测,n=2/任务/组)。结论:视情况而定,相对不装 skill -0.01。
19.9 / 30
相对不装 skill 的提升:-0.01
视情况而定:总分 19.9/30 低于 22,并且提升 -0.01 低于 +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.0
- 产出质量
- 4.9
- 令牌与时间成本
- 2.0
- 安装与可移植性
- 3.0
- 安全
- 3.0
安全审查
注意静态扫描:27 CRITICAL / 26 HIGH / 88 MEDIUM。人工审查:可运行但有需要注意的地方,见 Pro 区的安全报告。扫描没有命中不等于绝对安全。
安装
npx skills@latest add heygen-com/hyperframes --skill hyperframes
固定提交: af0d68d612ebd9c419f27d9ebc8068512667bae4
测试日期: 2026-11-02
我们测了什么
- 15 s product teaser — In this HyperFrames project (index.html root composition, GSAP timeline, rendered by npx hyperframes render) build a 15-second, 1920x1080, 30 fps product teaser for Tidepool, a monthly seaweed-snack subscription. Required on-screen text: the name 'Tidepool',…
- 20 s animated bar-chart explainer — In this HyperFrames project (index.html root composition, GSAP timeline, rendered by npx hyperframes render) build a 20-second, 1920x1080, 30 fps animated explainer: a bar chart of monthly revenue (Aug $42k, Sep $58k, Oct $71k). Title 'Revenue, last 3 months…
- 30 s vertical captioned short — In this HyperFrames project (index.html root composition, GSAP timeline, rendered by npx hyperframes render) build a 30-second vertical 1080x1920, 30 fps social short with burned-in captions. Captions, in order, each on screen for about 5 seconds starting at…
优点
- 不点名也会被触发:Skill file read in 6/6 treatment runs.
- 装 skill 后绝对质量高:4.89 / 5。
缺点
- 相对不装 skill 没有可测量的提升(-0.01,在噪声范围内)。
- 一句话提示得 4.91,装 skill 得 4.89(差 -0.01)。
- token 消耗是不装 skill 时的 1.95 倍。
- 对照组已经 4.9 分:触到天花板,这个测试看不出提升。
- 测试说明:只评分 skill 的文字指引:沙箱里没有 hyperframes CLI 的检查、预览、渲染闭环。该 CLI 是单独的 npm 包,我们没有审计也没有运行,它默认发送使用遥测。同系列的 hyperframes-core 和 hyperframes-animation 测的是旧提交 207c8a4,本篇测的是 af0d68d。
- 每个任务每组 n=2,差距在 1 分以内属于噪声。
评测
在 Codex CLI(SOTA 档)上跑 3 个任务、对照、一句话提示、装 skill 三组,共 18 次运行,由规则脚本打分(没有 LLM 评委),断网沙箱、每次运行独立临时目录。具体做法见下方英文评测原文。
三组对比
| 组别 | 平均分(0–5) | 每次 token |
|---|---|---|
| 不装 skill | 4.9 | 128k |
| 一句话提示 | 4.91 | 150k |
| 装了 skill | 4.89 | 249k |
Codex CLI 实测,18 次运行,规则脚本打分,没有 LLM 评委。总分 19.9 / 30,结论 视情况而定。
测试披露: 只评分 skill 的文字指引:沙箱里没有 hyperframes CLI 的检查、预览、渲染闭环。该 CLI 是单独的 npm 包,我们没有审计也没有运行,它默认发送使用遥测。同系列的 hyperframes-core 和 hyperframes-animation 测的是旧提交 207c8a4,本篇测的是 af0d68d。
下面是评测原文,英文。
Verdict: Situational (19.9 / 30). Source: heygen-com/hyperframes, skills/hyperframes, pinned at commit af0d68d. Install: npx skills@latest add heygen-com/hyperframes --skill hyperframes. Licence: Apache-2.0.
What it is
The hyperframes skill from heygen-com/hyperframes (Apache-2.0): a 1,100-word SKILL.md plus ~25 reference files and a few helper scripts, for making videos as HTML that is rendered to MP4 by seeking a paused GSAP timeline frame by frame. It sets a 12-rule render contract (every timed element is class="clip" with data-start/data-duration, one paused timeline registered on window.__timelines, nothing non-deterministic), an editable structure (one scene per sub-composition) and a work loop built around the npx hyperframes CLI (check, snapshot, preview, render).
How we tested
Codex CLI 0.166 (gpt-6-astra, low reasoning) on a Mac test machine, 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).
Environment: the project template (index.html with the GSAP script tag, composition metadata) is the same for all groups. The sandbox has no network and no HyperFrames CLI, so none of the groups could run check, snapshot or render; they wrote source only. We then rendered every project on a separate offline machine with the pinned HyperFrames 0.8.226 (draft quality). This tests the skill's text, not its CLI loop.
- 15 s product teaser — In this HyperFrames project (index.html root composition, GSAP timeline, rendered by
npx hyperframes render) build a 15-second, 1920x1080, 30 fps product teaser for Tidepool, a monthly seaweed-snack subscription. Required on-screen text: the name 'Tidepool',… - 20 s animated bar-chart explainer — In this HyperFrames project (index.html root composition, GSAP timeline, rendered by
npx hyperframes render) build a 20-second, 1920x1080, 30 fps animated explainer: a bar chart of monthly revenue (Aug $42k, Sep $58k, Oct $71k). Title 'Revenue, last 3 months… - 30 s vertical captioned short — In this HyperFrames project (index.html root composition, GSAP timeline, rendered by
npx hyperframes render) build a 30-second vertical 1080x1920, 30 fps social short with burned-in captions. Captions, in order, each on screen for about 5 seconds starting at…
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: "Build it as a HyperFrames HTML composition: a root with data-composition-id/data-width/data-height/data-duration, every timed element given class="clip" plus data-start and data-duration in seconds, one paused GSAP timeline registered as window.__timelines["<composition-id>"], and nothing non-deterministic (no Date.now(), unseeded Math.random(), timers, network or repeat:-1)."
| Task | Control score | One-liner | With skill | Control tokens | One-liner tokens | With-skill tokens | Skill read |
|---|---|---|---|---|---|---|---|
| t1-teaser | 5.0 | 5.0 | 4.97 | 140k | 173k | 364k | 2/2 |
| t2-chart | 4.71 | 4.72 | 4.71 | 125k | 116k | 184k | 2/2 |
| t3-vertical | 5.0 | 5.0 | 5.0 | 117k | 158k | 197k | 2/2 |
Mean score: 4.9 without vs 4.89 with the skill (delta -0.01). Tokens per run: 128k vs 249k (1.95x); time 154s vs 208s. One-liner group: 4.91 (the skill's gain over the one-liner: -0.01; one-liner's own gain over no skill: +0.0); one-liner tokens 150k per run, so the skill costs 1.67x the one-liner.
What happened
- Video quality was the same. All 18 projects rendered to the right size, length and frame rate on the first try, and the required text (name, tagline, $14 / box, closing line, captions) was found on screen by OCR in every run that should have had it. Mean score 4.90 without the skill, 4.91 with only the one-line version of its rules, 4.89 with the skill. The only points lost, in all three groups, come from the bar-chart explainer holding still for long stretches (frames with motion 15-23%).
- The one-line version did as well as the skill. Giving the control agent a single sentence of the contract (clip class, data-start/data-duration, one paused timeline, no non-deterministic code) produced the same scores and the same look: we viewed contact sheets of the teaser, chart and vertical short from all three groups and could not rank them by quality.
- The skill is read every time (6/6 treatment runs) but changes how the project is built rather than how it looks. All 6 skill runs split the film into sub-compositions (compositions/*.html, one per scene) as its 'keep it editable' section asks; 0 of 12 runs without the skill did. Marking timed elements as
clips varied by group, not by skill: the no-skill runs used 0-6 per project, the skill runs 1-9, and the one-liner runs 3-25. That is the part of the skill that matters if a person will open the project in HyperFrames Studio afterwards, and it is not scored here. - It costs a lot. 249k tokens per run against 128k without the skill (1.94x) and 150k with the one-liner (1.66x), 15 commands per run against 8, and about 35% more time. The agent reads SKILL.md and several reference files first, and in autonomous mode it still writes
SPEC.md,REVIEW.mdand a README that nobody asked for (4.7 files per run against 1). - Part of the skill could not run. SKILL.md's loop is check, snapshot, review, then render; with no CLI available the agents fell back to hand-written REVIEW.md files. A setup where the CLI works could show a different result, and might catch errors the first-pass projects here did not have.
Dimension scores
| Dimension | Score | Why |
|---|---|---|
| 1_output_quality | 4.89 | Mean score 4.89/5 with the skill (programmatic checks, see per-task table). |
| 2_lift_vs_no_skill | 1.99 | -0.01 points vs 4.90 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 | 3 | Relies on the |
| 5_efficiency | 2 | 1.95x tokens (249k vs 128k per run) and 1.35x time (208s vs 154s). |
| 6_safety_hygiene | 3 | Text and scripts reviewed: only |
Limits of this test
- The CLI loop (check, snapshot, preview, render) was not available in the sandbox, so this scores the skill's guidance only; the skill's own premise is that the CLI closes the loop.
- Three tasks: a product teaser, a three-bar chart and a vertical captioned short, all drawn in code. Footage, audio, maps, registry blocks and the HeyGen-based media features were not tested.
- Draft-quality renders on a Linux machine; the check for motion is a crude frame-difference threshold and the same chart task loses points in every group.
- The structural counts (sub-compositions, clip elements) come from reading the source files and are not part of the 0-30 score.
- Licence is Apache-2.0, but the CLI the skill relies on is a separate npm package we did not audit or run on the test computer; it sends usage telemetry unless disabled.
- 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: 27 CRITICAL / 26 HIGH / 88 MEDIUM. Verdict: safe to run (no-network sandbox). A clean scan does not prove a skill safe.
Bottom line
For one-off code-drawn videos in this sandbox, the skill did not make the videos any better and cost about double the tokens; one sentence of its contract did the same job. Its value is in the project structure (scene per sub-composition, marked clips) for people who will keep editing in HyperFrames Studio, and in the CLI loop we could not exercise. Install it if you work in HyperFrames regularly; skip it for quick throwaway renders.
记录
Run log for hyperframes: 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-teaser control-1: score 5.0, tokens 158742, secs 258.0, checks 5/5, opened nothing t1-teaser control-2: score 5.0, tokens 122491, secs 163.4, checks 5/5, opened nothing t1-teaser oneliner-1: score 5.0, tokens 194827, secs 274.5, checks 5/5, opened nothing t1-teaser oneliner-2: score 5.0, tokens 151350, secs 215.4, checks 5/5, opened nothing t1-teaser treatment-1: score 4.94, tokens 359882, secs 360.9, checks 5/5, opened hyperframes t1-teaser treatment-2: score 5.0, tokens 370088, secs 251.3, checks 5/5, opened hyperframes t2-chart control-1: score 4.73, tokens 159545, secs 126.0, checks 4/5, opened nothing t2-chart control-2: score 4.69, tokens 91764, secs 107.4, checks 4/5, opened nothing t2-chart oneliner-1: score 4.74, tokens 118117, secs 146.0, checks 4/5, opened nothing
18 次运行、21 个产物
样例产物
前沿 · 装了 skill:compositions/arrival.html(t1-teaser,第 1 次,Codex)
<template> <style>*{box-sizing:border-box}#root{position:absolute;inset:0;font-family:Arial,Helvetica,sans-serif;color:#173E32}.stage,.artboard{position:absolute;inset:0;width:1920px;height:1080px;overflow:hidden}.artboard{background:#F5F0DF}h1,h2,p{margin:0}.eyebrow{font-size:24px;font-weight:700;letter-spacing:4px;text-transform:uppercase}.rule{height:2px;background:currentColor;opacity:.3}.pouch{position:absolute;width:470px;height:650px}.pouch svg{width:100%;height:100%}.wipe{position:absolute;z-index:20}.serial{position:absolute;left:192px;top:930px;font-size:22px;letter-spacing:3px}.wordmark{font-weight:900;letter-spacing:-8px}.chip{position:absolute;width:400px;height:472px}.chip svg{width:100%;height:100%} </style> <div id="root" data-composition-id="arrival" data-width="1920" data-height="1080" data-duration="5"> <div id="arrival-stage" class="clip stage" data-start="0" data-duration="5" data-track-index="0" data-track-kind="graphics"><div class="artboard"> <svg id="arrival-rings" width="1920" height="1080" style="position:absolute" aria-hidden="true"><g fill="none" stroke="#173E32" stroke-width="2" opacity=".16"><ellipse cx="1450" cy="530" rx="335" ry="335"/><ellipse cx="1450" cy="530" rx="445" ry="445"/><ellipse cx="1450" cy="530" rx="560" ry="560"/></g></svg> <div id="arrival-kicker" class="eyebrow" style="position:absolute;left:192px;top:202px">Meet your monthly ocean fix</div> <div style="position:absolute;left:192px;top:299px;overflow:hidden;width:1000px;height:220px"><h1 id="arrival-title" class="wordmark" data-var-text="brand" style="font-size:192px;line-height:1.1">Tidepool</h1></div> <p id="arrival-copy" data-var-text="tagline" style="position:absolute;left:194px;top:555px;width:820px;font-size:48px;line-height:1.25;letter-spacing:-1px">Crisp seaweed snacks, delivered monthly</p> <div id="arrival-rule" class="rule" style="position:absolute;left:194px;top:750px;width:710px"></div> <p id="arrival-note" style="position:absolute;left:194px;top:785px;font-size:24px;letter-spacing:2px">FROM THE SEA. TO YOUR SNACK DRAWER.</p> <div id="arrival-pouch" class="pouch" style="left:1190px;top:201px"><svg viewBox="0 0 470 650" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Illustrated Tidepool seaweed snack pouch"><defs><linearGradient id="a-foil" x1="0" x2="1"><stop stop-color="#BACA99"/><stop offset=".12" stop-color="#E3E8BC"/><stop offset=".7" stop-color="#D7DFAE"/><stop offset="1" stop-color="#AABA8C"/></linearGradient><pattern id="a-seal" width="8" height="8" patternUnits="userSpaceOnUse"><path d="M0 0V8" stroke="#173E32" opacity=".2" stroke-width="2"/></pattern></defs><path d="M40 15Q235 0 430 15L420 68Q436 350 445 605Q235 640 25 605L48 68Z" fill="url(#a-foil)" stroke="#173E32" stroke-width="3"/><path d="M40 15Q235 0 430 15L425 50H44Z" fill="url(#a-seal)"/><path d="M30 580Q235 600 441 580L445 605Q235 640 25 605Z" fill="url(#a-seal)"/><path d="M48 68H420" stroke="#173E32" stroke-width="3" opacity=".4"/><path d="M64 82L47 565M405 80L423 564" stroke="#FFFBE2" stroke-width="4" opacity=".6"/><text x="235" y="157" text-anchor="middle" fill="#173E32" font-family="Arial, sans-serif" font-size="71" font-weight="900" letter-spacin [... excerpt: first 3200 of 5490 characters]