1实现原理 · 为什么它能做到
整份文档的因果起点是 Studio 的渲染模型:时间线为每个顶层元素画一行。因此「层级怎么切」直接决定用户能不能在 Studio 里编辑,而不是审美问题。
Studio draws one timeline row per top-level element. A project that follows the rules below opens as a short, readable timeline; one that does not opens as a wall of unlabeled rows the user cannot edit.
规则一:根合成只装顶级宿主、媒体与音频;任何有嵌套结构的场景都拆成独立文件、经 data-composition-src 挂载——留在根里的嵌套标记不会变成独立行。
The root composition holds only timed hosts, media and audio.
规则二:全部字幕只占一条轨——单个带 data-track-kind="captions" 的子合成宿主按顺序承载所有字幕组;不许一个字幕组一行,也不许和别的类型混轨。
- All captions live on one track: a single sub-composition host (one `data-track-index`)
规则三:每条轨只放一种元素类型,用 data-track-kind 标出(video/graphics/captions/audio),且 data-track-index 只是显示序号、不决定层级——层级用 CSS 决定。
Give each kind its own `data-track-index`; the number is display only; it never changes what renders on top.
规则四:安全区只在预览面板里画、绝不写进合成;横竖两种画幅共用同一套安全框(Adobe Premiere 默认:动作安全 90%、标题安全 80%),字幕与关键内容须落在标题安全框内。
Safe margins: everything visible stays inside the action-safe box (90%), and captions and key content stay inside the title-safe box (80%).
收尾是双证据核对:先跑 hyperframes lint 修完所有发现,再在 Studio 里目视确认时间线构成(一条基础行 + 每个场景宿主一行 + 一条字幕行 + 音频行)。
Run `hyperframes lint` and fix every finding.
边界写得很清楚:本 skill 只讲「该建出什么形状」,具体怎么改一个片段(切/裁/变速/音量/复制/替换)一律回到 /hyperframes-core 的 creator-editing-recipes.md,不许自创同义做法。
For how to change a clip, follow `/hyperframes-core` `references/creator-editing-recipes.md` and never invent a different form of the same edit.
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| cli | hyperframes lint(唯一被本 skill 点名的外部命令,作为结构正确性的静态门禁) |
4风险提醒 风险提醒:绿色 · 放心使用
- 约定与宿主实现耦合 — 文档引用的常量名与 lint 规则名(caption_*)全部在宿主侧;一旦宿主改名或调整安全框默认值,这份文档会静默失真。使用前建议核对版本。
- 不覆盖单品编辑,误用会走偏 — description 已声明本 skill 不负责 split/trim/retime/volume/copy/swap;若把它当成编辑手册,会得到「形状对了但不知道怎么动手」的结果。
- 只对 Studio 场景有效 — 约定的前提是「有人会在 Studio 里打开这个项目编辑」。纯渲染交付(无人打开时间线)的项目套用这些规则只会增加结构复杂度。
- 依赖 agent 自觉执行 — 文档无强制机制;结构错误只能靠 hyperframes lint 与人工目视发现,agent 若跳过收尾核对,违规结构会一路带进交付。
5第二遍独立确认
- [ok] 安全区百分比与宿主源码常量是否一致(文档唯一可被代码验证的声明) — SKILL.md 给出 Action-safe 90%(每边 5%)、Title-safe 80%(每边 10%),并指明来源 packages/studio/src/utils/previewSafeMargins.ts。打开该文件实测:`export const ACTION_SAFE_PERCENT = 90;` 与 `export const TITLE_SAFE_PERCENT = 80;`,注释亦写明「Adobe Premiere default: action-safe and title-safe margins are 10% and 20% total (5% and 10% per edge)」——文档与代码一致。
- [ok] 是否遗漏网络调用 / 脚本 / 凭证(绿档判定的关键反例检查) — 全域扫描 URL、fetch、process.env、child_process、writeFile、credential 关键词均为 0 命中;目录内只有 1 个 md 文件,无 scripts/、references/、资产。因此不存在隐藏执行面。
- [ok] 「轨类型 / 字幕单轨」等约定是否与仓库 lint 规则对得上(避免文档与实现脱节) — 文档自述「Author as if a structure lint rejects any violation」,并把词级时间规则交给 /embedded-captions 与 caption_* lint 规则;同仓 /embedded-captions 与 /hyperframes-core 的 lint 域存在对应规则,故约定不是孤例自说。本 skill 自身不实现 lint,属声明面。
- [ok] 是否存在夸大(把宿主能力说成自己的) — 文档通篇用祈使式约定(该建出什么形状)与指向(去看某文件),没有声称自己执行检查或渲染;收尾要求跑的是 hyperframes lint(宿主命令)。与同批 hyperframes-keyframes 同型:纯约定文档,能力来自宿主。
6结论
e1afb0832db4ac26…d2f0bc7f34