Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
heygen-com avatar

Remotion To Hyperframes

  • 207k installs
  • 39.5k repo stars
  • Updated August 5, 2026
  • heygen-com/hyperframes

Remotion to HyperFrames is a skill for translating React-based Remotion video compositions into HTML-based HyperFrames compositions with GSAP timelines.

About

Remotion to HyperFrames translation skill that ports React-based Remotion compositions to HTML-based HyperFrames (GSAP) compositions. Enforces linting for blockers, maps Remotion APIs to HF equivalents, and includes SSIM-validated test corpus.

  • Remotion API mapping to HyperFrames equivalents
  • Automated lint detection for unsupported patterns
  • SSIM-validated test corpus (T1-T4 tiers)

Remotion To Hyperframes by the numbers

  • 207,370 all-time installs (skills.sh)
  • +10,926 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #46 of 1,335 Generative Media skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/heygen-com/hyperframes --skill remotion-to-hyperframes

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs207k
repo stars39.5k
Security audit2 / 3 scanners passed
Last updatedAugust 5, 2026
Repositoryheygen-com/hyperframes

How do you migrate Remotion compositions to HyperFrames?

Migrate video compositions from Remotion to HyperFrames HTML-based format.

Who is it for?

Software engineers migrating Remotion video projects to HyperFrames

Skip if: New HyperFrames videos, After Effects or Framer Motion sources, reverse export to Remotion, or Remotion mentions without an explicit migrate request.

When should I use this skill?

When user explicitly asks to port, convert, migrate, or translate a Remotion composition

What you get

HyperFrames index.html with GSAP timeline, SSIM-validated render diff, lint report, and TRANSLATION_NOTES.md documenting untranslated patterns.

  • HyperFrames index.html
  • TRANSLATION_NOTES.md
  • SSIM diff report

By the numbers

  • Tiered test corpus T1–T4 contains 4 fixtures total
  • T4 escape-hatch lint validates 8 of 8 cases
  • Documents ~80% mechanical translation coverage for typical Remotion compositions

Files

SKILL.mdMarkdownGitHub ↗

Remotion to HyperFrames

Overview

Translate Remotion (React-based) video compositions into HyperFrames (HTML + GSAP) compositions. Most Remotion idioms have direct HyperFrames equivalents — the translation is mechanical for ~80% of typical compositions. This skill encodes the mapping and guards against the lossy 20% by refusing to translate patterns that don't fit HF's seek-driven model and recommending the runtime interop pattern from PR #214 instead.

The skill ships with a tiered test corpus (T1–T4, 4 fixtures total) that grades translations against measured SSIM thresholds. Don't translate without running the eval — a translation that "looks right" but renders 0.05 SSIM lower than the validated baseline is silently wrong.

When to use

Use this skill ONLY when the user explicitly asks to migrate from Remotion. Example trigger phrases:

  • "port my Remotion project to HyperFrames"
  • "convert this Remotion code to HyperFrames"
  • "migrate from Remotion"
  • "translate this Remotion comp"
  • "rewrite this as HyperFrames HTML"

Do NOT use this skill when:

  • (a) The user is authoring a new HyperFrames composition, even if they have or are A/B-testing a similar Remotion video.
  • (b) The user mentions Remotion in passing without asking for migration.
  • (c) The user shares Remotion code as reference material rather than asking for a translation.
  • (d) The user asks for "the same video as my Remotion one" without explicitly asking to migrate the source — treat that as a fresh HyperFrames build.

When in doubt, default to authoring a native HyperFrames composition with the hyperframes skill instead.

Workflow

Step 1: Lint the source

Run `scripts/lint_source.py` over the Remotion source directory. The lint detects patterns that can't translate cleanly:

  • Blockers (refuse + recommend interop): useState, useReducer, useEffect/useLayoutEffect with non-empty deps, async calculateMetadata, third-party React UI libraries (MUI, Chakra, Mantine, antd, shadcn, Radix, NextUI).
  • Warnings (translate after dropping the construct): @remotion/lambda config, delayRender, useCallback, useMemo, custom hooks.
  • Info (translate with note): staticFile, interpolateColors.

If any blocker fires, stop. Read `references/escape-hatch.md` and surface the recommendation message. Warnings don't stop translation — drop the offending construct in step 3 and note the gap in TRANSLATION_NOTES.md. @remotion/lambda config is the canonical warning case: the skill drops the import + renderMediaOnLambda(...) calls but translates the rest of the composition.

Step 2: Plan the translation

Read `references/api-map.md` — the index of every Remotion API and its HF equivalent or per-topic reference. Identify which topic references you'll need based on what the source uses:

Source containsLoad reference
Composition, defaultProps, schema, calculateMetadata`parameters.md`
Sequence, Series, Loop, AbsoluteFill, Freeze`sequencing.md`
useCurrentFrame, interpolate, spring, Easing, interpolateColors`timing.md`
Audio, Video, Img, IFrame, staticFile, delayRender`media.md`
TransitionSeries, @remotion/transitions`transitions.md`
@remotion/lottie`lottie.md`
@remotion/google-fonts/<Family>, Font.loadFont, @font-face`fonts.md`

Don't load all of them — load only what the specific source needs.

Step 3: Generate the HF composition

Emit index.html with:

  • Root <div id="stage"> carrying the composition's data-composition-id, data-start="0", data-duration (in seconds), data-fps, data-width, data-height, plus one data-* per scalar prop.
  • A flat list of scene divs with data-start / data-duration / data-track-index.
  • Inline <style> for layout; CSS sets the from state of every animated property.
  • A single <script> tag at the bottom containing one paused gsap.timeline({paused: true}). Every Remotion useCurrentFrame() derivation becomes a tween on this timeline at the right offset.
  • window.__timelines["<composition-id>"] = tl; registers the timeline with HF's runtime.

Custom React subcomponents inline as repeated HTML using the prop interface as the template (see `parameters.md` for the per-instance data-* pattern).

Step 4: Validate

Run the eval harness — `references/eval.md` for the full guide. Quick path:

# Render Remotion baseline (after npm install in the fixture)
cd remotion-src && npx remotion render <CompositionId> out/baseline.mp4

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

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

Threshold: ~0.02 below p05 of the source's complexity tier (see eval.md's validated thresholds table). If the diff fails, run `scripts/frame_strip.sh` to see _which_ frames diverged, then re-read the relevant timing/sequencing/media reference.

Critical: both renders must use matching pixel format. Set Config.setVideoImageFormat("png") + Config.setColorSpace("bt709") in the Remotion source's remotion.config.ts — otherwise the diff measures encoder differences (~0.05 SSIM hit), not translation fidelity.

Step 5: Document gaps

Anything that didn't translate cleanly (volume ramps dropped, custom presentations approximated, fonts substituted) gets a TRANSLATION_NOTES.md written next to the HF output. See `references/limitations.md` for the format.

What this skill explicitly does NOT do

  • Translate React state machines. Compositions that drive animation via useState + useEffect are not deterministic frame-capture targets in HyperFrames' seek-driven model. Recommend the runtime interop pattern.
  • Run Remotion's render pipeline alongside HyperFrames. That's the runtime interop pattern from PR #214 — a separate solution for compositions that fail this skill's lint.

(@remotion/lambda is _not_ a blocker — Lambda config is deployment, not animation. The skill drops it as a warning and translates the rest. See `references/escape-hatch.md`.)

How to grade your own translation

Run the test corpus orchestrator:

./assets/test-corpus/run.sh

It runs T1, T2, T3 (render + diff) and T4 (lint validation), prints a per-tier pass/fail table, and emits an aggregate JSON report. Use this to verify the skill is working end-to-end on a clean checkout — and as a regression check after editing any reference.

Validated baseline (as of 2026-04-27):

TierComposition shapeMean SSIMThreshold
T1single-element fade-in0.9740.95
T2multi-scene + spring + audio + image0.9850.95
T3data-driven, custom subcomponents, count-up0.9530.90
T4escape-hatch (8 lint cases)8/8 passn/a

Related skills

How it compares

Pick remotion-to-hyperframes only for explicit Remotion-to-HyperFrames ports with SSIM validation; use general-video for native HyperFrames authoring from scratch.

FAQ

When should remotion-to-hyperframes be used?

remotion-to-hyperframes applies only when the user explicitly asks to port, convert, migrate, or translate Remotion source to HyperFrames. New HyperFrames authoring, passing Remotion mentions, or matching a Remotion video without migrating source should use general-video instead.

What Remotion patterns block remotion-to-hyperframes translation?

scripts/lint_source.py treats useState, useReducer, useEffect with deps, async calculateMetadata, and third-party React UI libraries like MUI, Chakra, and shadcn as blockers. Those compositions should use the runtime interop escape hatch documented in references/escape-hatch.md.

How does remotion-to-hyperframes verify translation quality?

remotion-to-hyperframes renders Remotion and HyperFrames outputs, then runs scripts/render_diff.sh for SSIM. Thresholds sit about 0.02 below validated tier p05 values; T1 mean SSIM 0.974 and T3 mean 0.953 are documented baselines as of 2026-04-27.

Is Remotion To Hyperframes safe to install?

skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.