general-video
Author or edit a custom HyperFrames composition when no specialized workflow fits, or when BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels, montages, static loops, static title cards, footage remixes, and freeform builds. Use motion-graphics instead for a short unnarrated motion-first unit, including an animated title. Route fresh creation through hyperframes before using this skill.
1How It Works & Mechanism
Positioned as a "fallback workflow": used only when no specialized workflow matches, or when BRIEF.md specifies flow: companion; all fresh creation must first route through the /hyperframes intent layer.
Route fresh creation through hyperframes before using this skill.
Perform state-machine evaluation before starting work: take the first match across four priority rows ("Specific edit / Has BRIEF / Has hyperframes.json or STORYBOARD / Fresh creation") and cease further evaluation.
Apply the first matching row; do not evaluate lower state rows:
Cross-cutting capabilities (media, Figma) are not implemented internally, but delegated to sibling skills via adapters: any audio/image/icon/logo/voiceover/color grading/LUT/VFX/subtitles must first read resolve + setup-providers in /media-use.
**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).
Runtime form is derived from the flow/storyboard fields in BRIEF.md (automation/companion × yes/no), with explicit prohibition against inventing synonyms.
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`.
The composition contract is a hard constraint (class="clip" + single paused seek-safe timeline + render-time determinism), sharing the same deterministic discipline as the keyframes family.
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.
The only included script is a thin wrapper around the packet builder: pinning down only this workflow's path and one behavioral distinction (design truth resolution order: frame.md → design.md → DESIGN.md), while reusing hyperframes-core shared implementations for all other logic.
// 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
Sub-agent dispatch carries economic thresholds and quantitative rationale: inline execution is faster for small clips; fan out only at scale, and dispatch all workers in a single wave.
**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).
2Core Capabilities
3External Dependencies
| 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) |
4Recommended Governance & Evidence
- scripts/: Execute local scripts or commands: node scripts/frame-packets.mjs --project … --storyboard … (local Node script; via hype
- 网络端点: Declare external network access: npx hyperframes skills update general-video (command semantics imply fetching skill sets from remote; this skill's own scripts
- 本地工作目录: File I/O and artifact output: .hyperframes/frame-packets/* (per-scene packet) and _role.md (via frame from hyperframes-core
5Second-Pass Verification
- [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 注明而非记为出入。
6Verdict & Scenarios
4d140e0c0bd3b0ae…