1实现原理 · 为什么它能做到
定位是「兜底工作流」:只有当没有专门 workflow 匹配、或 BRIEF.md 写明 flow: companion 时才用;新创作一律先过 /hyperframes 意图层做路由。
Route fresh creation through hyperframes before using this skill.
开工先做状态机判定:按「具体编辑 / 有 BRIEF / 有 hyperframes.json 或 STORYBOARD / 全新」四行优先级取第一条命中,且不再往下评估。
Apply the first matching row; do not evaluate lower state rows:
跨切面能力(媒体、Figma)不自己实现,全部通过 adapter 转发给兄弟 skill:任何音频/图像/图标/logo/配音/调色/LUT/特效/字幕先读 /media-use 的 resolve + setup-providers。
**Media:** For any audio, image, icon, logo, voice, grade, LUT, treatment/effect, caption, or media-operation need, load `/media-use` and follow `../media-use/references/resolve.md` (resolve, adopt, reuse) and `../media-use/references/setup-providers.md` (providers, auth).
运行形态由 BRIEF.md 的 flow/storyboard 两个字段派生(automation/companion × yes/no),并明令不许自造同义词。
Do not invent synonyms for these states. An ongoing “just build it” signal is handled by the intent layer and arrives as `flow: automation`, `storyboard: no`.
合成契约是硬约束(class="clip" + 单条 paused seek-safe 时间线 + 渲染期确定性),与 keyframes 家族共享同一套确定性纪律。
Timed elements use `class="clip"`; the root and relevant ancestors are sized; each composition registers one paused, seek-safe timeline on `window.__timelines`; rendering is deterministic. Do not use render-time network fetches, clocks, or unseeded randomness.
唯一自带脚本是 packet builder 的薄壳:只钉住本 workflow 的路径与一处行为差异(设计真值解析顺序 frame.md → design.md → DESIGN.md),其余逻辑全部复用 hyperframes-core 的共享实现。
// Thin wrapper over the shared packet builder in hyperframes-core — this file pins // this workflow's paths plus its one behavioral difference: design truth resolves // frame.md → design.md → DESIGN.md (general-video § 6 order). Everything else has // one owner: ../../hyperframes-core/scripts/lib/frame-packets-core.mjs
子代理派发有经济学门槛与量化依据:小片内联更快,只有规模大才 fan out,并且一次派发全部 worker。
**Dispatch pays for itself only at scale.** Authoring packets and warming fresh worker contexts costs real minutes and tokens: a film of up to ~6 short scenes builds FASTER inline, in this context, one scene after another (measured: 5 short scenes ≈ 9 min inline vs ≈ 21 min packetized).
2核心能力
3外部依赖
| Kind | Dependency / Endpoint |
|---|---|
| cli | hyperframes CLI(init / check / lint / snapshot / preview / render / skills update) |
| cli | hyperframes skills update(自刷新,需网络拉取最新 skill 集) |
| cli | media-use 的 prefs.mjs / recipe.mjs(偏好记录与配方应用,本地写盘) |
| package | hyperframes-core 共享库(frame-packets-core.mjs,本 skill 脚本的唯一实现来源) |
| package | 兄弟 skill 依赖(/hyperframes 路由、/hyperframes-core、/hyperframes-creative、/hyperframes-animation、/hyperframes-keyframes、/media-use、/figma) |
4管控建议与判定依据
- scripts/: 执行本地脚本或命令: node scripts/frame-packets.mjs --project … --storyboard …(本地 Node 脚本;经 hype
- 网络端点: 声明外部网络访问: npx hyperframes skills update general-video(命令语义即从远端拉取 skill 集;本 skill 自己的脚
- 本地工作目录: 文件读写与工件输出: .hyperframes/frame-packets/*(每场景 packet)与 _role.md(由 hyperframes-core 的 fra
5第二遍独立确认
- [ok] 唯一脚本是否真的『薄』(有无隐藏功能/网络) — frame-packets.mjs 全文 37 行,仅 import existsSync/path/url 与 core;导出两个函数并透传 CONFIG;无 fs 写操作、无 fetch、无 env 读取。写盘与模板拼装在 core 中,符合注释自述。
- [ok] 网络 / 凭证 / 注入面 — skill 内 0 处 URL、0 处 fetch、0 处 process.env、0 处凭证关键词;grep 'heygen' 命中的两行是 Figma 段把 figma.com 当输入 URL 的说明与派发成本段,不是 API 调用。第二遍未发现漏掉的网络或凭证路径。
- [ok] 『外部资源』条目逐条回查调用点 — npx hyperframes init/lint/check/snapshot/preview/render/skills update 均在 SKILL.md 正文出现;prefs.mjs/recipe.mjs 路径在 §2 明确定义 <MEDIA_DIR> 为已安装的 /media-use skill 目录;frame-packets-core.mjs import 在脚本原文可验。
- [ok] frame-worker 输出契约与编排者所有权是否自相矛盾 — frame-worker.md 要求 worker 写两个文件(html + motion.json)并禁止写 <audio>、禁止碰邻居场景文件;SKILL.md §5 第 5 步要求编排者收集 motion.json 并在装配时把时长/进出场向量带入缝合。两侧互补、无冲突。
- [ok] 组内一致性(packet 构建路径与自刷新提示) — 与 product-launch-video / faceless-explainer 对比:三者都调 `node <SKILL_DIR>/scripts/frame-packets.mjs`,但 general-video 的 worker 拿到的是『2–3 场景』而另两者是『一帧一 worker』——这是有意的差异(本 skill 面向长片),已在 traits 注明而非记为出入。
6结论
4d140e0c0bd3b0ae…