用途
contribute-catalog 是一个面向 HyperFrames Registry 的贡献指南技能,帮助用户从想法出发,完成一个新的 registry block 或 component,并最终作为合并的 PR 发布。它适用于想要向 HyperFrames 注册表添加可复用视频合成元素的贡献者,无论是内部团队成员还是外部开发者。
主要能力
该技能将贡献过程拆解为六个阶段:
-
Clarify:确认用户要构建的内容类型。Registry 包含两种条目类型:
- Block(registry/blocks/,类型 hyperframes:block):具有固定尺寸和时长的完整独立合成,例如字幕风格、VFX 效果、标题卡、下三分之一标题。
- Component(registry/components/,类型 hyperframes:component):不固定尺寸和时长的可复用片段,例如 CSS 效果、文字处理、可适配任意合成尺寸的叠加层。 同时需要收集一句话描述、视觉参考和适用人群与场景。
-
Scaffold:创建 registry 目录结构。Block 和 Component 使用不同的目录布局,命名需遵循前缀规则(2-3 个字母),所有元素 ID 必须使用该前缀以避免子合成中的冲突。registry-item.json 需要配置名称、类型、标题、描述、标签等字段,block 还需指定尺寸和时长。
-
Build:根据类型应用正确的模板。针对字幕块有强制规则:字体最小 96px(等宽字体可 64-72px)、使用描边或多层阴影保证可读性、必须调用 fitTextFontSize、卡拉 OK 高亮激活词、每个组必须硬终止(opacity 0 和 visibility hidden)、避免动画冲突。逐字动画需将每个字符包裹在带 ID 的 span 中,光标等装饰元素使用 tl.set 而非 CSS 动画以保持可定位性。定位变体包括居中、下三分之一、左对齐。VFX 块使用 Three.js 0.147.0 CDN 全局脚本,通过 tl.eventCallback onUpdate 驱动渲染,采用状态代理模式和种子化 PRNG 保证可复现性。所有类型要求 data-composition-id 匹配时间线 ID,时间线始终处于暂停状态,禁止使用 Math.random() 和 Date.now()。
-
Validate:运行 hyperframes lint(要求 0 错误)和 hyperframes validate --no-contrast(要求 0 控制台错误)。
-
Preview:通过 hyperframes render 生成预览视频,hyperframes snapshot 进行视觉 QA,npx hyperframes publish 发布到 hyperframes.dev 供审阅。目录预览图使用 PNG 存放在 docs/images/catalog/{kind}/{name}.png。内部贡献者运行脚本上传图片,外部贡献者需在 PR 中附上预览 MP4,由维护者生成并上传目录图片。
-
Ship:包含创建分支、格式化 HTML、更新 registry.json、生成目录页面、发布到 hyperframes.dev、暂存文件、提交、推送并创建 PR 等一系列步骤。所有步骤均为必需,缺失任何一步都会导致目录条目损坏。
使用方式
该技能以流程引导的形式使用,用户按照六个步骤逐步操作。每一步都有具体的命令和配置要求。最终通过 GitHub 创建 PR,需要 GitHub 账号并完成 gh auth login。
适用场景
适用于需要向 HyperFrames Registry 添加新的视频合成块或可复用组件的场景,包括字幕风格、VFX 效果、转场、标题卡、文字效果、叠加层等。
限制
质量门禁要求 lint 0 错误、validate 0 控制台错误、oxfmt 检查通过、registry.json 更新、目录页面生成、hyperframes publish 运行、预览 MP4 或目录 PNG 上传、所有 ID 唯一且带前缀。缺少 GitHub 账号需先注册并登录。具体收费、价格、平台支持等信息暂未提供。