Communitygithub.com

hyperframes-core

Le contrat de composition HyperFrames — construisez un projet rendu. Utilisé pour la structure de composition, les attributs de timing `data-*`, et les configurations de classe.

Qu'est-ce que hyperframes-core ?

HyperFrames Core est le contrat technique central pour construire des compositions vidéo à partir de HTML dans l'écosystème HyperFrames. Il définit comment structurer un projet unique rendable, en utilisant des attributs `data-*` pour le timing, un runtime d'animation scrutable, et une gestion de la lecture multimédia par le framework. Cette compétence est essentielle pour les développeurs qui créent des compositions vidéo programmatiques, supportées par des outils comme Claude Code, Cursor ou Codex. Elle fournit des références détaillées pour les compositions minimales, les patterns de composition, les attributs de données, les pistes et clips, les sous-compositions, les variables et médias, les règles de déterminisme, et plus encore. En suivant ce contrat, les utilisateurs peuvent construire des compositions vidéo déterministes, scrutables, et compatibles avec le pipeline de rendu HyperFrames. La documentation inclut des avertissements sur les bogues courants, les règles non négociables, et les étapes de validation via l'interface en ligne de commande hyperframes-cli.

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

Demander à votre IA préférée

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

Documentation

HyperFrames Core

HyperFrames rend une vidéo à partir d'HTML. Une composition est un fichier HTML dont le DOM déclare le timing avec des attributs data-*, dont le runtime d'animation est scrutable, et dont la lecture multimédia est gérée par le framework.

Cette compétence est le contrat technique — comment construire un projet hyperframes. Le corps ci-dessous est le guide de construction ; les détails par sujet se trouvent dans references/ (index suivant), lisez à la demande. Les autres préoccupations résident dans les compétences de domaine sœurs — hyperframes-animation, hyperframes-creative, media-use, hyperframes-cli, hyperframes-registry. La carte des capacités dans /hyperframes indique ce que chacune couvre.

Références

FichierLisez-le pour…
references/minimal-composition.mdcommencer par le squelette de composition minimal rendable
references/composition-patterns.mdchoisir monolithique vs modulaire ; structurer un index.html modulaire ; choisir un archétype de sous-composition
references/data-attributes.mdconsulter tout attribut data-* (racine / clip / hôte de sous-comp / alias hérités) ; utiliser class="clip"
references/tracks-and-clips.mdchoisir data-track-index, gérer le chevauchement / z-index sur la même piste, temporiser un clip par rapport à un autre
references/creator-editing-recipes.mdcopier des recettes d'édition véridiques (couper/rogner/réorganiser/retemporiser/geler/caméra/masque/fondu enchaîné/audio) et leurs limites
references/sub-compositions.mdcâbler une sous-composition (attributs hôte, <template>, variables par instance) et animer à l'intérieur
references/variables-and-media.mddéclarer des variables ; placer <video>/<audio>, régler le volume, rogner
references/determinism-rules.mdconstruire une timeline scrutable ; interdictions de déterminisme ; liste autorisée des propriétés animables ; mise en page / ajustement du texte
references/full-screen-motion.mdcréer un mouvement plein écran avec des arrière-plans partagés
references/storyboard-format.mdcréer un plan STORYBOARD.md (+ le manifeste parsé)
references/review-loop.mdexécuter les passes de révision plan → esquisse → construction sur un tableau vivant — partagé par chaque flux de travail de planification de storyboard
references/production-loop.mdtransformer un plan approuvé en une vidéo livrée — les dépendances des étapes (audio, images, assemblage, transitions, sous-titres, vérification, livraison) ; une construction libre suit directement
references/brief-contract.mdles règles de base du brief — dérivation du mode (collaboratif / autonome), registre de champs partagé, invariants de questions (la question elle-même vit dans /hyperframes → la couche d'intention)
references/brief-format.mdcréer BRIEF.md — le document d'intention confirmé que le Setup d'un flux de travail écrit et que chaque étape ultérieure lit
references/script-format.mdcréer le SCRIPT.md optionnel de narration verrouillée
references/subagent-dispatch.mdmapper les verbes de répartition des sous-agents (fan-out parallèle / arrière-plan / attente) à votre harnais
references/frame-worker-core.mdle contrat de rôle du frame-worker partagé — le constructeur de paquet de chaque flux de travail narratif le préfixe au delta sub-agents/frame-worker.md de ce flux
references/tailwind.mdtravailler dans un projet Tailwind v4 (init --tailwind ; le contrat d'exécution diffère de la v3 de Studio)

Pour les spécificités du runtime d'animation (API GSAP, Lottie, Three.js, etc.), allez dans hyperframes-animation → adapters/<runtime>.md.

Construire une composition

Deux formes racines (non interchangeables)

  • Autonome (index.html de niveau supérieur) — <div data-composition-id="…"> racine se trouve directement dans <body>, pas de wrapper <template> (l'envelopper cache tout le contenu et brise le rendu).
  • Sous-composition (chargée via data-composition-src) — la racine doit être enveloppée dans <template>.

⚠ Règle de transport : le runtime clone uniquement le contenu de <template> ; tout ce qui est à l'extérieur (y compris les styles/scripts de <head>) est ignoré — placez <style>/<script> à l'intérieur du template. ⚠ Règle d'ID hôte : le data-composition-id de l'emplacement hôte doit exactement égaler le data-composition-id du template intérieur et la clé window.__timelines["<id>"] — pas de suffixe -mount/-slot/-host.

Forme du fichier, câblage hôte, et liste de vérification pré-rendu → references/sub-compositions.md.

La racine doit être dimensionnée (bogue silencieux de mise en page)

La racine autonome a besoin d'une boîte dimensionnée explicite (width/height en px), et chaque ancêtre jusqu'à un élément height:100% doit avoir une hauteur résolue — sinon un enfant flex/100% s'effondre à ~0 et le contenu s'empile dans le coin supérieur gauche. Ne comptez pas uniquement sur des passerelles automatisées pour détecter cela ; inspectez un instantané. Squelette → references/minimal-composition.md.

Une timeline en pause

Chaque composition enregistre exactement une gsap.timeline({ paused: true }) à window.__timelines["<id>"] (clé = data-composition-id racine), construite de manière synchrone au chargement de la page. Durée de rendu = data-duration racine, pas la longueur de la timeline. N'imbriquez pas manuellement des sous-timelines dans l'hôte. Contrat complet (incluant les runtimes non GSAP) → references/determinism-rules.md + hyperframes-animation/adapters/.

Pièges de lint de première passe (un premier échec de construction garanti)

Deux règles que lint détecte effectivement, mais seulement après coup — écrivez-les correctement dès la première fois :

  • L'élément de composition racine doit porter data-start="0" (avec data-composition-id/data-width/data-height) ; l'omettre fait échouer lint avec root_composition_missing_data_start.
  • Ne jamais associer une propriété CSS transform initiale à un tween GSAP sur la même propriété — la valeur CSS et le début du tween se battent et lint le rejette avec gsap_css_transform_conflict. Définissez l'état initial à l'intérieur du tween avec gsap.fromTo(el, { x: -40 }, { x: 0 }) au lieu d'un CSS transform: translateX(-40px).

Règles non négociables (bogues silencieux que les passerelles automatisées peuvent manquer)

Révélées ici ; justification complète dans la référence liée. Ne violez pas :

  • Pas d'horloges au moment du rendu / Math.random non amorcé / réseau / état d'entrée ; pas de repeat: -1 (utilisez un nombre fini). → determinism-rules.md
  • Animez uniquement la liste autorisée des propriétés visuelles ; ne tweenez jamais display ou visibility brute. autoAlpha de GSAP et les ensembles de limites de timeline de durée nulle sont les seules exceptions de visibilité, et uniquement sur des éléments non clip ou des wrappers à l'intérieur d'un clip. Le framework seul contrôle la visibilité de .clip. Ne faites pas gsap.set sur des clips de scènes ultérieures au chargement de la page. → determinism-rules.md
  • Pas de <br> dans le corps du texte ; les éléments transformés doivent être de niveau bloc + dimensionnés ; les décoratifs absolus pulsants ont besoin de dégagement de pic. → determinism-rules.md
  • <video>/<audio> fonctionnent à toute profondeur d'imbrication (y compris à l'intérieur d'un <template> de sous-comp ou d'un wrapper) ; le framework possède la lecture et cherche/décode le média où qu'il se trouve. La seule mise en garde concerne les timelines, pas le placement : une timeline de sous-comp ne peut pas animer les éléments racine de l'hôte. → variables-and-media.md
  • Chaque id doit être unique sur la page assemblée ; à l'intérieur d'une sous-comp, préfixez les id avec l'id de la composition (#<id>-hero). Les id en double de <video>/<img> rendent vide — le producteur injecte les images par getElementById, et les doublons entre fichiers échappent à lint. → composition-patterns.md
  • Un remplissage de scène plein écran va sur un enfant pleine page (position:absolute; inset:0), jamais sur la racine de la composition elle-même — le compositing d'images du producteur peut supprimer le background propre de l'élément racine (l'image rend noire) même si l'aperçu/snapshot l'affiche correctement. → composition-patterns.md

Modifier des compositions existantes

  • Lisez d'abord les fichiers. Préservez le timing, les pistes, les ID, les variables, les chemins médias non liés.
  • Faites correspondre les ID de composition existants et les clés de timeline.
  • Ajout d'un clip : choisissez un data-track-index sans chevauchement ou ajustez intentionnellement le timing environnant.
  • data-hidden sur tout élément de composition le masque à la fois dans l'APERÇU et le rendu, remplaçant sa fenêtre temporelle ; il est non destructif/réversible et basculé par l'icône d'œil de la timeline de Studio.
  • Ajout d'une sous-composition : vérifiez son data-composition-id interne avant de câbler l'hôte.

Validation

Utilisez hyperframes-cli pour les détails des commandes

  • npx hyperframes check passe (0 résultats parmi lint, runtime, mise en page, mouvement et contraste)
  • Projets avec sous-compositions : npx hyperframes snapshot --at <midpoints> et inspectez chaque image
  • npx hyperframes preview --background pour la révision (l'utilisateur peut modifier n'importe quoi dans la timeline de Studio, et le serveur survit à la commande invocatrice)
  • npx hyperframes render uniquement après l'approbation de l'utilisateur

Individual skills in this repo

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

embedded-captions

>

faceless-explainer

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.

figma

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.

general-video

>

hyperframes

>

hyperframes-animation

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition

hyperframes-audio

>

hyperframes-cli

>

hyperframes-creative

Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use `hyperframes-animation`.

hyperframes-keyframes

>

hyperframes-registry

Install, discover, and wire registry blocks and components into HyperFrames compositions. Use when running hyperframes add or hyperframes catalog, installing one item or every block matching a tag, wiring an installed item into index.html, or working with hyperframes.json. Covers discovery, install locations, block sub-composition wiring, component snippet merging, and authoring a new block or component to contribute upstream (idea → scaffold → validate → PR).

jasonfast123/hyperframes-skills

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.

media-use

Agent Media OS, the single skill for every media need in a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the catalog misses; produce voiceover, transcription, captions, and background removal through one shared audio engine; operate on media (cut / reframe / transform); and reuse assets across projects. Also use for vague feedback that real footage looks dark, flat, boring, should feel retro/camcorder/print/ASCII, needs privacy, or needs a media reveal.

motion-graphics

>

music-to-video

Turn a music track (an audio file, a video to pull audio from, or a track generated from a mood brief) into a beat-synced video — lyric video, slideshow, or kinetic promo. The music drives all pacing; any user-supplied images/videos are cut onto the same beat grid, and a complete video needs zero assets. Narrated pieces → the input-matched workflow (see /hyperframes). Unclear → /hyperframes.

pr-to-video

Turn a GitHub pull request (a PR URL, owner/repo#N, or

remotion-to-hyperframes

Port an existing Remotion (React) composition

slideshow

>

talking-head-recut

Package an existing talking-head / interview / podcast video with timed, designed GRAPHIC OVERLAY cards — kinetic titles, lower-thirds, data callouts, quotes, side panels, picture-in-picture — synced to the transcript, on a 16:9 / 9:16 / 4:5 canvas of your choice; the clip plays untouched underneath. Trigger on

Skills associés