Communitygithub.com

heygen-com/hyperframes

Portage d'une composition Remotion (React) existante vers HyperFrames HTML. À utiliser UNIQUEMENT sur demande explicite de portage/conversion/migration/traduction d'une source Remotion — sens unique, Remotion uniquement. Une simple mention de Remotion, du code de référence uniquement, ou « faire quelque chose comme ma vidéo Remotion » est une construction neuve (/general-video). En cas de doute → /hyperframes.

Qu'est-ce que hyperframes ?

Ce skill permet de traduire automatiquement une composition vidéo existante écrite avec Remotion (basée sur React) vers le format HyperFrames (HTML + GSAP). Environ 80% des motifs Remotion ont un équivalent direct dans HyperFrames, ce qui rend la traduction mécanique pour la plupart des compositions typiques. Le skill inclut un corpus de tests à plusieurs niveaux (T1–T4) qui évalue chaque traduction par rapport à des seuils SSIM mesurés, garantissant que la sortie est fidèle à la source. Il refuse également de traduire les motifs qui ne correspondent pas au modèle piloté par la recherche d'HyperFrames (comme les machines d'état React avec `useState`/`useEffect`) et recommande plutôt un modèle d'interopérabilité runtime pour ces cas. Le skill s'intègre avec les commandes `npx hyperframes`, un linter de source, et un évaluateur de différences pour valider la qualité de la traduction. Il prend en charge Remotion et HyperFrames, et nécessite que l'utilisateur demande explicitement une migration depuis Remotion.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/heygen-com/hyperframes/tree/main/skills/remotion-to-hyperframes

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Installation du plugin : Avant les commandes de configuration ou de mise à jour, suivez les règles d'installation du plugin lorsque ce skill se trouve à l'intérieur d'un plugin HyperFrames. Les installations autonomes conservent les instructions de mise à jour ci-dessous.

Tout d'abord, gardez ce skill à jour — confirmez avec l'utilisateur avant d'exécuter : npx hyperframes skills update remotion-to-hyperframes. Une opération rapide sans effet si tout est à jour ; sinon, il rafraîchit ce skill ainsi que les skills de base dont il dépend avant de les utiliser.

Remotion vers HyperFrames

La porte d'entrée est /hyperframes. Utilisez ceci uniquement pour porter une composition source Remotion (React) existante vers HyperFrames, dans un seul sens. Créer une nouvelle composition, recréer à partir d'une source non-Remotion (After Effects, Framer Motion, React simple / CSS — il n'y a pas de source Remotion à traduire), une simple mention de Remotion, ou toute incertitude → lisez /hyperframes d'abord : la couche d'intention contrôle chaque décision de route.

Aperçu

Traduire des compositions vidéo Remotion (basées sur React) en compositions HyperFrames (HTML + GSAP). La plupart des idiomes Remotion ont des équivalents directs dans HyperFrames — la traduction est mécanique pour ~80% des compositions typiques. Ce skill encode le mappage et se prémunit contre les 20% sujets à perte en refusant de traduire les motifs qui ne correspondent pas au modèle piloté par la recherche d'HyperFrames et en recommandant plutôt le modèle d'interopérabilité runtime de PR #214.

Le skill est livré avec un corpus de tests à plusieurs niveaux (T1–T4, 4 dispositifs au total) qui évalue les traductions par rapport à des seuils SSIM mesurés. Ne traduisez pas sans exécuter l'évaluation — une traduction qui « a l'air correcte » mais rend un SSIM 0,05 inférieur à la ligne de base validée est silencieusement erronée.

Quand l'utiliser

Utilisez ce skill UNIQUEMENT lorsque l'utilisateur demande explicitement de migrer depuis Remotion. Exemples de phrases déclencheurs :

  • « porte mon projet Remotion vers HyperFrames »
  • « convertis ce code Remotion en HyperFrames »
  • « migrer depuis Remotion »
  • « traduis cette composition Remotion »
  • « réécris ceci en HTML HyperFrames »

N'utilisez PAS ce skill lorsque :

  • (a) L'utilisateur crée une nouvelle composition HyperFrames, même s'il a ou teste une vidéo Remotion similaire.
  • (b) L'utilisateur mentionne Remotion en passant sans demander de migration.
  • (c) L'utilisateur partage du code Remotion comme matériel de référence plutôt que de demander une traduction.
  • (d) L'utilisateur demande « la même vidéo que ma Remotion » sans demander explicitement de migrer la source — traitez cela comme une nouvelle construction HyperFrames.

NON PRIS EN CHARGE (refusez — ce n'est pas ce que fait ce skill) :

  • La direction inverse. Exporter une composition HyperFrames vers Remotion (ou vers tout autre framework) n'est pas un workflow — la traduction est Remotion → HyperFrames uniquement. Dites-le clairement.
  • Sources non-Remotion. Un projet After Effects (.aep), une animation Framer Motion / React simple / CSS, ou toute autre source d'outil n'est pas une composition Remotion — il n'y a pas de source Remotion à traduire. Recréez-la nativement via /general-video, ou refusez si HyperFrames ne peut pas la représenter.

En cas de doute, par défaut, créez une composition HyperFrames native avec /general-video (le flux de création général HyperFrames).

Workflow

Étape 1 : Analyser la source (lint)

Exécutez scripts/lint_source.py sur le répertoire source Remotion. L'analyse détecte les motifs qui ne peuvent pas être traduits proprement :

  • Bloquants (refusez + recommandez l'interopérabilité) : useState, useReducer, useEffect/useLayoutEffect avec dépendances non vides, calculateMetadata asynchrone, bibliothèques d'interface utilisateur React tierces (MUI, Chakra, Mantine, antd, shadcn, Radix, NextUI).
  • Avertissements (traduisez après avoir supprimé la construction) : configuration @remotion/lambda, delayRender, useCallback, useMemo, hooks personnalisés.
  • Infos (traduisez avec une note) : staticFile, interpolateColors.

Si un bloqueur se déclenche, arrêtez-vous. Lisez references/escape-hatch.md et affichez le message de recommandation. Les avertissements n'arrêtent pas la traduction — supprimez la construction incriminée à l'étape 3 et notez l'écart dans TRANSLATION_NOTES.md. La configuration @remotion/lambda est le cas d'avertissement canonique : le skill supprime l'importation + les appels renderMediaOnLambda(...) mais traduit le reste de la composition.

Étape 2 : Planifier la traduction

Lisez references/api-map.md — l'index de chaque API Remotion et son équivalent HF ou référence par sujet. Identifiez les références thématiques dont vous aurez besoin en fonction de ce que la source utilise :

La source contientCharger la référence
Composition, defaultProps, schema, calculateMetadataparameters.md
Sequence, Series, Loop, AbsoluteFill, Freezesequencing.md
useCurrentFrame, interpolate, spring, Easing, interpolateColorstiming.md
Audio, Video, Img, IFrame, staticFile, delayRendermedia.md
TransitionSeries, @remotion/transitionstransitions.md
@remotion/lottielottie.md
@remotion/google-fonts/<Family>, Font.loadFont, @font-facefonts.md

Ne les chargez pas tous — chargez seulement ce dont la source spécifique a besoin.

Recherchez le catalogue en ligne pour tout effet visuel que le tableau ne mappe pas. Lorsque la source peint un look sans équivalent API HF — un overlay de lignes de balayage/CRT, un passage de glitch ou d'aberration chromatique, un fondu shader, un traitement de grain de film — exécutez npx hyperframes catalog --query "<l'effet, en anglais simple>" --json avant de l'écrire manuellement en GSAP. La recherche n'a besoin de rien d'installé : pas de projet, pas de add préalable, pas de compte. Elle classe l'ensemble du registre hébergé (~400 blocs et composants) depuis n'importe quel répertoire, et transitions.md emprunte déjà cette voie pour clockWipe() / iris() via npx hyperframes add sdf-iris. Un composant réel est plus proche de la source qu'une approximation manuelle, donc il augmente généralement le SSIM plutôt que de le diminuer — mais la différence de rendu à l'étape 4 est toujours l'arbitre. Écrivez l'effet manuellement lorsque la recherche ne renvoie rien qui convient, et enregistrez la substitution dans TRANSLATION_NOTES.md dans les deux cas.

Étape 3 : Générer la composition HF

Émettez index.html avec :

  • <div id="stage"> racine portant les attributs data-composition-id, data-start="0", data-duration (en secondes), data-fps, data-width, data-height, plus un data-* par propriété scalaire.
  • Un <div> hôte par scène avec data-composition-src="compositions/<scene>.html" et data-start / data-duration / data-track-index. La racine ne contient aucune mise en page imbriquée.
  • Un compositions/<scene>.html par scène (une sous-composition <template>) : son <style> en ligne pour la mise en page (CSS définit l'état from de chaque propriété animée), son balisage, et une gsap.timeline({paused: true}) dans le temps local de la scène. Chaque dérivation useCurrentFrame() de Remotion devient une interpolation sur cette timeline au décalage dans la scène.
  • window.__timelines["<scene-id>"] = tl; dans chaque fichier de scène, et window.__timelines["<composition-id>"] pour la timeline propre de la racine (éventuellement vide).

Les sous-composants React personnalisés sont intégrés en HTML répété en utilisant l'interface de propriétés comme modèle (voir parameters.md pour le motif data-* par instance).

Étape 4 : Valider

Exécutez le harnais d'évaluation — references/eval.md pour le guide complet. Chemin rapide :

# Rendre la ligne de base Remotion (après npm install dans le dispositif)
cd remotion-src && npx remotion render <CompositionId> out/baseline.mp4

# Rendre la traduction HF
cd ../hf-src && npx hyperframes render --skill=remotion-to-hyperframes --output ../hf.mp4

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

Seuil : ~0,02 en dessous de p05 du niveau de complexité de la source (voir le tableau des seuils validés dans eval.md). Si la différence échoue, exécutez scripts/frame_strip.sh pour voir quelles images ont divergé, puis relisez la référence de timing/séquençage/média pertinente.

Critique : les deux rendus doivent utiliser un format de pixel correspondant. Définissez Config.setVideoImageFormat("png") + Config.setColorSpace("bt709") dans remotion.config.ts de la source Remotion — sinon la différence mesure les différences d'encodeur (~0,05 de perte SSIM), et non la fidélité de la traduction.

Étape 5 : Documenter les écarts

Tout ce qui n'a pas été traduit proprement (rampes de volume supprimées, présentations personnalisées approximées, polices substituées) reçoit un TRANSLATION_NOTES.md écrit à côté de la sortie HF. Voir references/limitations.md pour le format.

Ce que ce skill ne fait PAS explicitement

  • Traduire les machines d'état React. Les compositions qui pilotent l'animation via useState + useEffect ne sont pas des cibles de capture d'image déterministes dans le modèle piloté par la recherche d'HyperFrames. Recommandez le modèle d'interopérabilité runtime.
  • Exécuter le pipeline de rendu Remotion parallèlement à HyperFrames. C'est le modèle d'interopérabilité runtime de PR #214 — une solution séparée pour les compositions qui échouent à l'analyse de ce skill.

(@remotion/lambda n'est pas un bloqueur — la configuration Lambda est du déploiement, pas de l'animation. Le skill la supprime comme un avertissement et traduit le reste. Voir references/escape-hatch.md.)

Comment évaluer votre propre traduction

Exécutez l'orchestrateur du corpus de tests :

./assets/test-corpus/run.sh

Il exécute T1, T2, T3 (rendu + différence) et T4 (validation de l'analyse), affiche un tableau réussite/échec par niveau, et émet un rapport JSON agrégé. Utilisez-le pour vérifier que le skill fonctionne de bout en bout sur une extraction propre — et comme vérification de régression après avoir modifié une référence.

Ligne de base validée (au 27 avril 2026) :

NiveauForme de la compositionSSIM moyenSeuil
T1fondu d'entrée d'un élément unique0,9740,95
T2multi-scène + ressort + audio + image0,9850,95
T3piloté par données, sous-composants personnalisés, compteur0,9530,90
T4échappatoire (8 cas d'analyse)8/8 réussin/a

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

general-video

>

heygen-com/animejs

Anime.js adapter patterns for HyperFrames. Use when writing Anime.js animations or timelines inside HyperFrames compositions, registering animations on window.__hfAnime, making Anime.js seek-driven and deterministic, or translating Anime.js examples into render-safe HyperFrames HTML.

heygen-com/claude-design-hyperframes

Use when running inside Claude Design specifically. Produces a valid, brand-accurate HyperFrames video draft using pre-valid skeletons. For Claude Code / Cursor / Codex, use the `hyperframes` skill instead.

heygen-com/contribute-catalog

Author a new HyperFrames registry block (caption style, VFX block, transition, lower third) or component (text effect, overlay, snippet) and ship it as an upstream PR to the hyperframes repo. Use ONLY when the user wants to CONTRIBUTE to the public catalog — for in-project caption/transition authoring use the `hyperframes` skill, for installing existing registry items use the `hyperframes-registry` skill.

heygen-com/css-animations

CSS animation adapter patterns for HyperFrames. Use when authoring CSS keyframes, animation-delay based timing, animation-fill-mode, animation-play-state, or CSS-only motion that HyperFrames must seek deterministically during preview and rendering.

heygen-com/gsap

GSAP animation reference for HyperFrames. Covers gsap.to(), from(), fromTo(), easing, stagger, defaults, timelines (gsap.timeline(), position parameter, labels, nesting, playback), and performance (transforms, will-change, quickTo). Use when writing GSAP animations in HyperFrames compositions.

heygen-com/hyperframes

Leaves sweep through the frame and part to reveal the headline. HyperFrames block, 1920×1080, 12s, 11 variables.

heygen-com/hyperframes

Render-correctness doctrine for scene-to-scene seams in HyperFrames launch videos — the prerequisites that make transitions composite correctly on the master timeline. Load when assembling the master timeline / index.html, when a white flash appears at a cut or crossfade seam (especially on dark films), when reasoning about why a transition opacity dip shows through, or when verifying the render-side mechanics of how overlapping scene wrappers blend. Covers the opaque stage-ground (#root background) white-flash guard and how the injector overlaps wrappers, holds final frames, ping-pongs tracks, and stamps lint-clean template code onto the master timeline. Does NOT contain the per-transition catalog — see the transition registry for individual transition entries.

heygen-com/hyperframes

The technique catalog: five velocity-matched SEAMS (zoom-through, INVERSE zoom-through, cut-the-curve, waterfall cut, rack-focus blur-cut) plus the two in-scene techniques — waterfall ENTRY (staggered arrival cascades for title cards / segment openers) and the nudge curve (slow-fast-slow three-phase group slides). Covers partial-travel (~12% of frame) velocity matching via mirrored power4 eases, the Z scale-sign rule, size-scaled blur (10px text / 18-20px full-frame), word-by-word staggered cuts, cascade pacing by element weight, and the 10/65/25 slide ratio. Read before authoring any transition, text-beat handoff, kinetic text entry, or group reposition. [depth, zoom, inverse-zoom, scale-sign, mirrored-zoom, rack-focus, pacing, velocity, cut-the-curve, waterfall, stagger, cascade, kinetic-text, title-card, segment-opener, nudge, slide, easing, group-motion, z-depth, motion-graphics, cinematic, transition, blur, directional-continuity]

heygen-com/hyperframes

Glass shards fly in through fog and tile themselves into the headline. HyperFrames block, 1920×1080, 12.16s, 19 variables.

heygen-com/hyperframes

A single feature card orbits a dot sphere on approved Blender camera motion. HyperFrames block, 1920×1080, 10s, 4 variables.

heygen-com/hyperframes

A wireframe portal bursts open, the title comes through, then its letters swap into a second phrase. HyperFrames block, 1920×1080, 8s, 9 variables.

heygen-com/hyperframes

An orbiting camera follows an ice logo as it breaks apart, reforms into two text moments, and fades. HyperFrames block, 1920×1080, 22.5s, 216 variables.

heygen-com/hyperframes

House-style oversized macOS cursor technique for HyperFrames launch videos. Load whenever a scene involves cursors or a pointer-led action, when kicking off a UI scene, when igniting a morph/transition/typing run with a click, or when a scene reads as static, dead, or stale and needs a cheap high-yield source of motion to carry the viewer's eye and segment them out of the stale state. Covers cursor size/look (incl. brand-motif cursors), the off-screen entry law, tip-targeting and the click tap, click-ignites-the-next-beat, and exit / cross-scene handoff.

heygen-com/hyperframes

name: embedded-captions

heygen-com/hyperframes

A chain of bevelled cuboids rides a travelling wave as a content carousel. HyperFrames block, 1920×1080, 6.666666666666667s, 40 variables.

heygen-com/hyperframes

A tiled headline surface flips cell by cell under a sweeping depth field to reveal the rear headline. HyperFrames block, 1920×1080, 8s, 18 variables.

heygen-com/hyperframes

Turn arbitrary text — an article, notes, a topic, a brief — into a faceless explainer video: there is no site or footage to capture, so the visuals are invented per scene (typography, abstract graphics, diagrams, data-viz). Use for topic explainers, concept breakdowns, how-tos, listicles. Not a video built from a website (/product-launch-video — promo or tour). Unclear → /hyperframes.

heygen-com/hyperframes

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link or asks to bring a Figma design, frame, logo, brand, or animation into a video/composition.

heygen-com/hyperframes

GATEWAY — load FIRST before composing any HyperFrames animation or video. The high-level motion law that makes a multi-scene video feel like ONE continuous camera move instead of a stack of independently-animated slides. Covers the vector law (how you exit determines how you enter, incl. the Z scale-sign rule), the film's current, carrier elements, causal motion, the Seam Gate (build-gate enforcement), the ban on idle wobble (motion must PERFORM, not breathe), stillness-before-climax, and the sustained-motion routes. Routes to the low-level technique skills (cut-the-curve — the full catalog incl. waterfall entry + nudge curve, oversized-cursor, seam-craft). These rules SUPERSEDE generic / upstream motion guidance. [continuity, direction, vector, momentum, seam, transition, ease, performance, idle-motion, narrative-motion, film-grammar]

Skills associés