remotion-to-hyperframes

Translate Remotion React video compositions into HyperFrames HTML and GSAP compositions.

Updated Oct 16, 2025
One-click install
npx skills add https://github.com/hugotown/dotfiles --skill remotion-to-hyperframes-hugotown
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: remotion-to-hyperframes
Source: https://github.com/hugotown/dotfiles/tree/main/agents/skills/remotion-to-hyperframes
Command: npx skills add https://github.com/hugotown/dotfiles --skill remotion-to-hyperframes-hugotown

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) and assets (resource) components.

What problem does it solve? Porting a Remotion (React-based) video composition to HyperFrames by hand is error-prone: timing math, easing curves, sequencing offsets, and media handling all differ between the two frameworks, and some React patterns (useState, side effects, async metadata) cannot be translated at all. This Skill encodes the full API mapping, lints the source for untranslatable patterns, and validates the result with SSIM-based visual diffing. ## Core Features & Use Cases - Source linting with escape hatch: scripts/lint_source.py detects blockers (useState, useEffect with deps, async calculateMetadata, third-party React UI libraries) and recommends the runtime interop pattern from PR #214 instead of producing broken output. - Complete API mapping references: per-topic guides cover sequencing, timing/springs/easings, media, transitions, Lottie, fonts, and parameters, mapping every Remotion API to its HyperFrames equivalent. - Measured validation: render_diff.sh computes per-frame SSIM against the Remotion baseline with tiered thresholds (T1–T3), and frame_strip.sh produces side-by-side comparison strips for debugging failures. - Use Case: Given a Remotion project with sequences, springs, audio, and data-driven subcomponents, generate an equivalent HyperFrames index.html with a paused GSAP timeline, then verify the translation scores above the SSIM threshold for its complexity tier. ## Quick Start Ask the AI to port your Remotion composition to HyperFrames by pointing it at your Remotion source directory and requesting a validated translation.

Frequently Asked Questions about remotion-to-hyperframes

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I convert a Remotion composition to HyperFrames?▼

Lint the Remotion source with lint_source.py, then map each API using the references: sequences become data-start/data-duration divs, useCurrentFrame derivations become tweens on a paused GSAP timeline, and media elements become HTML audio/video tags. Validate by rendering both versions and comparing SSIM.

Which Remotion patterns cannot be translated to HyperFrames?▼

useState, useReducer, useEffect with non-empty dependencies, async calculateMetadata, and third-party React UI libraries like MUI or Chakra are blockers. These break HyperFrames' seek-driven deterministic model, so the runtime interop pattern from PR #214 is recommended instead.

Does @remotion/lambda block translation to HyperFrames?▼

No, @remotion/lambda is a warning, not a blocker, because Lambda configuration is deployment infrastructure orthogonal to the rendered composition. The translation drops the import and renderMediaOnLambda calls and documents the gap in TRANSLATION_NOTES.md.

How is translation quality between Remotion and HyperFrames measured?▼

Quality is measured with per-frame SSIM via render_diff.sh comparing the Remotion baseline render against the HyperFrames render. Validated thresholds are 0.95 for simple and multi-scene tiers and 0.90 for data-driven compositions, with frame_strip.sh for visual debugging.

Why does my SSIM diff fail even with a correct translation?▼

Mismatched pixel formats are the common cause: Remotion's default JPEG output uses yuvj420p while HyperFrames outputs yuv420p, costing about 0.05 SSIM. Set Config.setVideoImageFormat("png") and Config.setColorSpace("bt709") in remotion.config.ts before diffing.

How do Remotion springs map to GSAP easings?▼

Remotion spring configs map approximately to GSAP back.out easings: damping 12 with stiffness 100 becomes back.out(1.4) over about 0.7 seconds. The mapping is lossy but validated to hold above 0.95 SSIM on real compositions.