hyperframes-core

作者: heygen-com

HyperFrames HTML 组合合约。用于组合结构、数据属性、剪辑、轨道、子组合、变量、媒体播放、确定性渲染规则以及最小可渲染项目的验证。

npx skills add https://github.com/heygen-com/hyperframes --skill hyperframes-core

HyperFrames Core

HyperFrames renders video from HTML. A composition is an HTML file whose DOM declares timing with data-* attributes, whose animation runtime is seekable, and whose media playback is owned by the framework.

This skill is the technical contract — how to build one hyperframes project. The body below is the build guide; per-topic detail lives in references/ (index next), read on demand. Other concerns live in the sibling domain skills — hyperframes-animation, hyperframes-creative, media-use, hyperframes-cli, hyperframes-registry. The capability map in /hyperframes says what each one covers.

References

FileRead it to…
references/minimal-composition.mdstart from the smallest renderable composition skeleton
references/composition-patterns.mdchoose monolithic vs modular; structure a modular index.html; pick a sub-comp archetype
references/data-attributes.mdlook up any data-* (root / clip / sub-comp host / legacy aliases); use class="clip"
references/tracks-and-clips.mdpick data-track-index, handle same-track overlap / z-index, time a clip relative to another
references/sub-compositions.mdwire a sub-composition (host attrs, <template>, per-instance vars) and animate inside it
references/variables-and-media.mddeclare variables; place <video>/<audio>, set volume, trim
references/determinism-rules.mdbuild a seekable timeline; determinism bans; the animatable-property allowlist; layout / text fit
references/full-screen-motion.mdauthor full-frame motion with shared backgrounds
references/storyboard-format.mdauthor a STORYBOARD.md plan (+ the parsed manifest)
references/review-loop.mdrun the plan → sketch → build review passes on a live board — shared by every storyboard-planning workflow
references/production-loop.mdtake an approved plan to a delivered video — the stage dependencies (audio, frames, assembly, transitions, captions, verify, deliver) a freeform build follows directly
references/brief-contract.mdthe brief's ground rules — mode derivation (collaborative / autonomous), shared field registry, question invariants (the asking itself lives in /hyperframes → the intent layer)
references/brief-format.mdauthor BRIEF.md — the confirmed intent document a workflow's Setup writes and every later step reads
references/script-format.mdauthor the optional SCRIPT.md locked narration
references/subagent-dispatch.mdmap subagent dispatch verbs (parallel fan-out / background / wait) to your harness
references/frame-worker-core.mdthe shared frame-worker role contract — each narrative workflow's packet builder prepends it to that workflow's sub-agents/frame-worker.md delta
references/tailwind.mdwork in a Tailwind v4 project (init --tailwind; runtime contract differs from Studio's v3)

For animation runtime specifics (GSAP API, Lottie, Three.js, etc.) go to hyperframes-animationadapters/<runtime>.md.

Building a composition

Two root forms (not interchangeable)

  • Standalone (top-level index.html) — root <div data-composition-id="…"> sits directly in <body>, no <template> wrapper (wrapping it hides all content and breaks rendering).
  • Sub-composition (loaded via data-composition-src) — root must be wrapped in <template>.

⚠ Transport rule: the runtime only clones <template> contents; everything outside (incl. <head> styles/scripts) is discarded — put <style>/<script> inside the template. ⚠ Host-id rule: the host slot's data-composition-id must exactly equal the inner template's data-composition-id and the window.__timelines["<id>"] key — no -mount/-slot/-host suffix.

File shape, host wiring, and the pre-render checklist → references/sub-compositions.md.

Root must be sized (silent layout bug)

The standalone root needs an explicit sized box (width/height in px), and every ancestor down to a height:100% element must have a resolved height — otherwise a flex/100% child collapses to ~0 and content piles into the top-left corner. Do not rely on automated gates alone to catch this; inspect a snapshot. Skeleton → references/minimal-composition.md.

One paused timeline

Each composition registers exactly one gsap.timeline({ paused: true }) at window.__timelines["<id>"] (key = root data-composition-id), built synchronously at page load. Render duration = root data-duration, not timeline length. Don't manually nest sub-timelines into the host. Full contract (incl. non-GSAP runtimes) → references/determinism-rules.md + hyperframes-animation/adapters/.

First-pass lint gotchas (a guaranteed first build failure)

Two rules that lint does catch, but only after the fact — write them right the first time:

  • The root composition element must carry data-start="0" (alongside data-composition-id/data-width/data-height); omitting it fails lint with root_composition_missing_data_start.
  • Never pair a CSS initial transform with a GSAP tween on the same property — the CSS value and the tween's start fight and lint rejects it with gsap_css_transform_conflict. Set the initial state inside the tween with gsap.fromTo(el, { x: -40 }, { x: 0 }) instead of a CSS transform: translateX(-40px).

Non-negotiable rules (silent bugs automated gates may miss)

Surfaced here; full rationale in the linked reference. Do not violate:

  • No render-time clocks / unseeded Math.random / network / input-state; no repeat: -1 (use a finite count). → determinism-rules.md
  • Animate only the visual-property allowlist; never tween display or raw visibility. GSAP autoAlpha and zero-duration timeline boundary sets are the only visibility exceptions, and only on non-clip elements or wrappers inside a clip. The framework alone controls .clip visibility. Do not gsap.set later-scene clips at page load. → determinism-rules.md
  • No <br> in body text; transformed elements must be block-level + sized; pulsing absolute decoratives need peak clearance. → determinism-rules.md
  • <video>/<audio> work at any nesting depth (including inside a sub-comp <template> or wrapper); the framework owns playback and seeks/decodes media wherever it lives. The one caveat is timelines, not placement: a sub-comp timeline can't animate host-root elements. → variables-and-media.md
  • Every id must be unique across the assembled page; inside a sub-comp, prefix ids with the composition id (#<id>-hero). Duplicate <video>/<img> ids render blank — the producer injects frames by getElementById, and cross-file dupes slip past lint. → composition-patterns.md
  • A full-screen scene fill goes on a full-bleed child (position:absolute; inset:0), never on the composition root itself — the producer's frame compositing can drop the root element's own background (the frame renders black) even though preview/snapshot show it correctly. → composition-patterns.md

Editing existing compositions

  • Read the files first. Preserve unrelated timing, tracks, IDs, variables, media paths.
  • Match existing composition IDs and timeline keys.
  • Adding a clip: pick a non-overlapping data-track-index or adjust surrounding timing intentionally.
  • data-hidden on any composition element hides it in BOTH preview and render, overriding its time window; it is non-destructive/reversible and toggled by Studio's timeline eye icon.
  • Adding a sub-composition: verify its internal data-composition-id before wiring the host.

Validation

Use hyperframes-cli for command details

  • npx hyperframes check passes (0 findings across lint, runtime, layout, motion, and contrast)
  • Projects with sub-compositions: npx hyperframes snapshot --at <midpoints> and eyeball each frame
  • npx hyperframes preview for review (the user can edit anything in Studio's timeline)
  • npx hyperframes render only after the user approves

来自 heygen-com 的更多技能

hyperframes-cli
heygen-com
HyperFrames CLI dev loop — `npx hyperframes` for scaffolding (init), validation (lint, inspect), preview, render, and environment troubleshooting (doctor, browser, info, upgrade). Use when running any of these commands or troubleshooting the HyperFrames build/render environment. For asset preprocessing commands (`tts`, `transcribe`, `remove-background`), invoke the `hyperframes-media` skill instead.
developmenttestingapi
hyperframes-animation
heygen-com
HyperFrames的所有动画知识——原子运动规则、多阶段场景蓝图、场景过渡、更广泛的动态设计技术,以及七种运行时适配器(默认GSAP,外加Lottie、Three.js、Anime.js、CSS关键帧、Web Animations API、TypeGPU)。适用于任何运动或动画任务:选取2-4条规则进行组合,或加载蓝图,或查询特定运行时的API(例如GSAP缓动函数/Lottie播放器/Three.js混合器)。HyperFrames原生特性:单一暂停时间线,安全跳帧,...
creativedevelopmentdesign
hyperframes-media
heygen-com
为HyperFrames合成提供资产预处理——多供应商TTS(HeyGen / ElevenLabs / Kokoro本地)、多供应商BGM(Google Lyria / 本地MusicGen)、Whisper转录、背景移除及字幕编写。用于npx hyperframes tts、bgm、transcribe、remove-background、语音/供应商选择、音乐情绪提示、字幕/副标题/歌词/卡拉OK/逐词样式。
mediaaudiovideo
hyperframes-registry
heygen-com
安装并将注册表块和组件接入HyperFrames组合中。在运行hyperframes add、安装块或组件、将已安装项接入index.html或处理hyperframes.json时使用。涵盖add命令、安装位置、块子组合接入、组件片段合并、注册表发现,以及编写新块或组件以向上游贡献(构思→脚手架→验证→PR)。
developmentapicode-review
general-video
heygen-com
用作自定义HyperFrames HTML视频合成创作的后备方案,适用于无专门工作流程的场景。涵盖较长或多场景作品、品牌/宣传片、蒙太奇、标题卡、动态海报、静态循环以及任意长度或格式的自由创作。不适用于营销产品推广(product-launch-video)、通用网站转视频(website-to-video)、主题解说(faceless-explainer)、GitHub PR视频(pr-to-video)、为现有素材添加字幕等场景。
videocreativemedia
motion-graphics
heygen-com
当用户需要一段简短、以设计为主导的动态图形,且动态本身即为信息时使用:动态文字排版、数字或统计计数、图表/数据可视化效果、标志片头、品牌组合、底部三分之一、标注、社交覆盖层、动画标题/推文/新闻条目、动态海报或快速捕捉页面高亮。通常时长在10秒以内,最长约30秒,无叙事弧线、画外音或真人实拍主体。可渲染为MP4或透明叠加层。不适用于较长、多场景、带旁白或品牌宣传片的作品……
creativevideodesign
hyperframes-read-first
heygen-com
对于任何制作、创建、生成、编辑、动画化或渲染视频、动画、动态图形、解说视频、标题卡、叠加层、带字幕视频、产品宣传片、网站视频、公关或更新日志视频、数据蒙太奇、动态海报或HyperFrames HTML合成的请求,请从此处开始。当用户希望HyperFrames创作或渲染完成的MP4/网络视频、选择工作流程,或在产品发布视频、无脸解说视频、网站转视频等之间路由时,请在其他视频或动画技能之前使用此功能。
creativevideomedia
hyperframes-creative
heygen-com
非动画创意指导,用于HyperFrames视频。适用于设计规范(frame.md / design.md)处理、调色板、排版、叙述、节拍规划
creativedesignvideo