1实现原理 · 为什么它能做到
前提被写明:渲染引擎是 HyperFrames、场景源是 HTML/CSS/JS——因此全部规则围绕「组合根 + 暂停时间线 + 可寻址 + 确定性」展开,而不是通用前端开发。
Use this skill when implementing or revising a HyperFrames scene. This skill assumes HyperFrames is the render engine and the scene source is HTML/CSS/JS.
时间线必须暂停(paused),因为渲帧要能确定性 seek——这是「同一份源渲出同一段帧」的前提。
- Use paused timelines for deterministic seekable animation.
组合根与作用域纪律:显式声明 data-composition-id / data-width / data-height,选择器必须限定在组合根内,禁止会污染其他子组合的全局选择器。
- Avoid global selectors that can mutate other sub-compositions.
渲染循环是「低质草稿迭代 → 定稿才提高质量/帧率」:draft 质量 + --workers 2 快速看效果,只有场景已批准或要验证帧率相关动作时才提。
Use higher FPS or quality only when the scene is approved or when testing frame-rate-specific motion.
证明帧必须来自渲染出的 MP4,而不是浏览器截图——截图不经过编码/合成路径,会掩盖真实差异。
- Generate proof frames from the rendered MP4, not only browser screenshots.
内建 HyperFrames 特有风险清单:时间线 ID 不匹配、嵌套组合里的未作用域选择器、GSAP 覆盖既有 CSS transform、预览与渲染之间的 CDN/字体加载差异、渲染 worker 里媒体资源解析失败、单文件过大导致 agent 无法检视。
- CDN or font loading differences between preview and render.
carryover 纪律:某个转场若忘了新标签或新画面,下一场景复制的那一帧也要一起改。
- If a scene transition forgets a new label or visual, patch the next scene's carryover frame too.
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| cli | HyperFrames CLI(npx hyperframes preview / lint / render),Node/npm 生态工具;首次 npx 会从 npm registry 解析该包 |
| package | HyperFrames 渲染器(本地合成与编码,含无头 Chrome/worker 渲染环境) |
| package | GSAP(时间线动画库;由组合页面引入,规则围绕暂停时间线与 set/fromTo 语义) |
| network | 产物期引用面:组合页面若引用 CDN 脚本或网络字体,preview 与 render worker 会各自拉取,行为可能不一致(按范式属产物期引用,不判级,仅记录) |
| cli | ffmpeg(间接:抽帧与证明帧由同族 render-qa skill 的 scripts/extract_proof_frames.py 承担) |
4风险提醒 风险提醒:蓝色 · 知晓即可
- HyperFrames 未随包分发,版本与安装前提缺失 — SKILL.md 直接写 npx hyperframes 命令但未声明版本/安装/初始化步骤;本仓 README 明确 This repo does not vendor HyperFrames,用户必须自行安装可用版本,命令参数与上游版本的兼容性未经核验。
- 渲染在浏览器里执行产物脚本,含任何被引入的第三方 CDN 代码 — 场景源是 HTML/JS,「产物即代码」:若页面引用 CDN 脚本或字体,会在渲染 worker 的浏览器内执行第三方代码;SKILL.md 只把它当加载一致性风险,未提示供应链风险。
- npx 会从 npm registry 解析包(工具链供应面) — npx hyperframes ... 在本地未安装时按 Node 生态惯例会联网解析或下载;这是工具链安装行为,但意味着首次运行依赖 registry 可用与包名未被劫持。
- carryover 帧的同步仍靠搜索而非机制 — 规则要求转场漏了标签或画面就要补下一场景 carryover,但没有可执行的检查器(仓库层脚本只有抽帧与主题扫描);漏改时只有人眼看边界证明帧才能发现。
- 规则集绑定 HyperFrames 专属行为,跨引擎迁移成本高 — data-composition-id、paused GSAP timeline、--quality/--workers 等约定绑定 HyperFrames;换成其他渲染器时本 skill 的大部分规则不适用,需要重新推导契约。
5第二遍独立确认
- [ok] 「无端点无凭证」是否成立 — 目录内正则扫描只命中 npx hyperframes 三条命令;无 http(s):// URL、无 token/env/cookie。父仓库 .gitignore 也把 .env 排除,属仓库层卫生,非本 skill 声明。
- [unlocatable] 渲染命令是否与 HyperFrames CLI 的真实用法相符 — 本仓未 vendored HyperFrames(README 明写 This repo does not vendor HyperFrames),pin 内无法核验 --composition/--output/--quality draft/--workers 这些参数是否与上游 CLI 一致;本次侦查为只读且不得运行渲染,故不验证,登记为待补。
- [ok] 「证明帧从渲染 MP4 抽取」在仓库层是否有落地工具 — scripts/extract_proof_frames.py 用 ffmpeg -ss <time> -i <video> -frames:v 1 -q:v 2 抽单帧,并可用 xstack 拼接触表;与本 skill 的要求(从渲染产物而非浏览器截图抽帧)一致。
- [discrepancy] 是否声明了 HyperFrames 的安装前提 — SKILL.md 直接给 npx hyperframes 命令,但未写 HyperFrames 的版本、安装方式或项目初始化要求(同族 end-to-end-video-playbook 也只把它当引擎名字)。用户需自行确保 CLI 可用,否则三条命令全部失败。
- [ok] 「预览与渲染的 CDN/字体差异」是否属可判级的外发 — 该条描述的是产物页在浏览器端拉取 CDN/字体(产物期引用),按风险范式不判级;本 skill 也把它写成需要注意的渲染风险而非流程中的联网步骤,故只记入 reason 与 risks,不升档。
- [ok] 组件清单是否真是约定而非强制的类 — SKILL.md 原文 These do not need to be formal JS classes. They can be CSS classes, HTML snippets, or helper functions as long as future agents can find and reuse them.——属约定而非 API,不存在「清单里的类未实现」这种缺口。
6结论
b8691be00b4eea0e…f6b043d9fd