All skills
heygen-com avatar

/remotion-to-hyperframes

@ff6e210
by HeyGenheygen-com/hyperframes55k stars
4,998

Port an existing Remotion (React) composition's source to HyperFrames HTML. Use ONLY on an explicit ask to port/convert/migrate/translate a Remotion source — one-way, Remotion-only. A passing Remotion mention, reference-only code, or "make something like my Remotion video" is a fresh build (/general-video). Unclear → /hyperframes.

Use this Skill: https://skilld.dev/gh/heygen-com/hyperframes/remotion-to-hyperframes

This session only. Nothing lands on disk.

assetstest-corpustier-2-multi-sceneREADME.md

≈819 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Tier 2 — title-image-outro

What it tests

Three-scene composition. Each scene exercises a different Remotion idiom:

  1. Scene 1 (0–2 s) — TitleScene with spring({damping:12, stiffness:100, mass:1}) driving a transform: scale() on text. Tests the lossy spring → GSAP ease translation.
  2. Scene 2 (2–4 s) — ImageScene that fades in a staticFile-loaded image and linearly scales it from 0.8 → 1.0. Tests asset paths + linear interpolate.
  3. Scene 3 (4–6 s) — OutroScene with a 1-s linear fade-in. Sanity check after the harder scenes.

A silent 6-second WAV plays throughout at volume={0.5}. Tests <Audio> translation.

If a translation passes T2, the skill correctly handles <Sequence> boundaries, <Audio> / <Img> / staticFile, and the Remotion spring → GSAP ease heuristic.

Translation walk-through

Remotion HyperFrames
<Sequence from={0} durationInFrames={60}> host <div data-composition-src="compositions/scene-1.html" data-start="0" data-duration="2" data-track-index="0">
spring({frame, fps, config: {damping:12, stiffness:100, mass:1}}) gsap.to(target, { scale: 1, duration: 0.7, ease: "back.out(1.4)" })
<Audio src={staticFile("music.wav")} volume={0.5} /> <audio src="assets/music.wav" data-start="0" data-duration="6" data-volume="0.5" data-track-index="1">
<Img src={staticFile("square.png")} /> <img src="../assets/square.png"> inside compositions/scene-2.html (with setup.sh copying into both trees)
interpolate(frame, [0, 15], [0, 1]) at 30 fps gsap.to(target, { opacity: 1, duration: 0.5, ease: "none" })

The scene crossfading is a HyperFrames idiom, not a Remotion one: at scene boundaries each scene sub-composition sets its own gsap.set(scene, { opacity: 0 }) at its local end so the scene disappears at the right time. Remotion does this implicitly by virtue of <Sequence>'s durationInFrames.

How to render and evaluate

# 1. Generate the binary assets (PNG + WAV) via ffmpeg
./setup.sh

# 2. Render Remotion baseline
cd remotion-src && npm install && npm run render

# 3. Render HyperFrames translation
cd ../hf-src && npx hyperframes render --output ../hf.mp4

# 4. Compare
../../../scripts/render_diff.sh ./remotion-src/out/baseline.mp4 ./hf.mp4 ./diff

Why threshold 0.95?

Same threshold as T1 (expected.json codifies it for the orchestrator). Spring → back.out(1.4) came in cleaner than predicted during calibration — the validated mean is 0.985 against the 0.95 gate. If the translation breaks anything else (spring overshoot wrong, stagger off, asset path drift), mean SSIM will fall well below 0.95 — that's the failure signal.

Source: SKILL.md on GitHub

1 warning3d3 checks · Risk SAFE
  • Gen Agent Trust Hub3d

    The skill is a specialized tool for migrating Remotion video compositions to HyperFrames HTML. It includes a security-conscious linter that identifies and blocks non-deterministic or side-effect-heavy React patterns (like useState or side-effects in useEffect) from being translated. It uses standard industry tools (ffmpeg, npm) and official vendor resources from trusted and well-known services.

  • Socket3d

    No alerts

  • Snyk3d

    Risk: MEDIUM · 1 issue

Signed by skilld at ff6e210. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 18 hours ago.

Activeupdated 4 days ago

README badge

README badge for heygen-com/hyperframes/remotion-to-hyperframes