Communitygithub.com

hyperframes-core

El contrato de composición de HyperFrames: construye un proyecto renderizable. Se usa para la estructura de composición, los atributos de temporización `data-*` y clases como `clip`.

¿Qué es hyperframes-core?

HyperFrames Core es el contrato técnico fundamental para construir composiciones de video renderizables a partir de HTML. Define cómo estructurar un archivo HTML cuyos elementos DOM declaran temporización mediante atributos `data-*`, permitiendo que el tiempo de ejecución de la animación sea buscable y que la reproducción de medios esté controlada por el framework. Es útil para desarrolladores que desean crear proyectos de video narrativo con alta fidelidad, aprovechando la potencia de HTML, CSS y JavaScript (especialmente GSAP) para animaciones deterministas y sincronizadas. Soporta plataformas como HyperFrames Studio y la línea de comandos `hyperframes-cli`. El skill detalla las reglas no negociables, las formas raíz (independiente vs. sub-composición), referencias detalladas en archivos markdown y un flujo de validación con `npx hyperframes check`, garantizando que el proyecto sea deterministico, predecible y renderizable correctamente.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

HyperFrames Core

HyperFrames renderiza video desde HTML. Una composición es un archivo HTML cuyo DOM declara temporización con atributos data-*, cuyo tiempo de ejecución de animación es buscable y cuya reproducción de medios es controlada por el framework.

Esta skill es el contrato técnico: cómo construir un proyecto hyperframes. El cuerpo siguiente es la guía de construcción; los detalles por tema residen en references/ (índice a continuación), léelos bajo demanda. Otras preocupaciones viven en skills de dominio relacionadas: hyperframes-animation, hyperframes-creative, media-use, hyperframes-cli, hyperframes-registry. El mapa de capacidades en /hyperframes indica qué cubre cada una.

Referencias

ArchivoLéelo para…
references/minimal-composition.mdempezar desde el esqueleto de composición renderizable más pequeño
references/composition-patterns.mdelegir entre monolítico vs modular; estructurar un index.html modular; seleccionar un arquetipo de sub-comp
references/data-attributes.mdconsultar cualquier data-* (raíz / clip / host de sub-comp / alias heredados); usar class="clip"
references/tracks-and-clips.mdelegir data-track-index, manejar solapamiento / z-index en la misma pista, temporizar un clip relativo a otro
references/creator-editing-recipes.mdcopiar recetas verdaderas de corte/recorte/reordenación/recronometraje/congelación/cámara/máscara/encadenado/edición de audio y sus límites
references/sub-compositions.mdconectar una sub-composición (atributos del host, <template>, variables por instancia) y animar dentro de ella
references/variables-and-media.mddeclarar variables; colocar <video>/<audio>, ajustar volumen, recortar
references/determinism-rules.mdconstruir una línea de tiempo buscable; prohibiciones de determinismo; lista blanca de propiedades animables; ajuste de diseño / texto
references/full-screen-motion.mdcrear movimiento a pantalla completa con fondos compartidos
references/storyboard-format.mdredactar un plan STORYBOARD.md (+ el manifiesto analizado)
references/review-loop.mdejecutar las pasadas de revisión plan → boceto → construcción en un tablero en vivo — compartido por todo flujo de planificación de guion gráfico
references/production-loop.mdllevar un plan aprobado a un video entregado — las dependencias de etapa (audio, fotogramas, ensamblaje, transiciones, subtítulos, verificación, entrega) que un montaje libre sigue directamente
references/brief-contract.mdlas reglas básicas del brief — derivación de modo (colaborativo / autónomo), registro de campos compartidos, invariantes de preguntas (la pregunta en sí reside en /hyperframes → la capa de intención)
references/brief-format.mdredactar BRIEF.md — el documento de intención confirmado que el Setup de un flujo de trabajo escribe y que todo paso posterior lee
references/script-format.mdredactar el SCRIPT.md opcional de narración fija
references/subagent-dispatch.mdmapear verbos de envío de subagentes (ramificación paralela / fondo / espera) a tu sistema
references/frame-worker-core.mdel contrato compartido del rol frame-worker — cada constructor de paquete de flujo narrativo lo antepone al delta de sub-agents/frame-worker.md de ese flujo
references/tailwind.mdtrabajar en un proyecto Tailwind v4 (init --tailwind; el contrato en tiempo de ejecución difiere del v3 de Studio)

Para detalles específicos del tiempo de ejecución de animación (API de GSAP, Lottie, Three.js, etc.) ve a hyperframes-animation → adapters/<runtime>.md.

Construir una composición

Dos formas raíz (no intercambiables)

  • Independiente (index.html de nivel superior) — el <div data-composition-id="…"> raíz se coloca directamente en <body>, sin envoltorio <template> (envolverlo oculta todo el contenido y rompe el renderizado).
  • Sub-composición (cargada via data-composition-src) — la raíz debe estar envuelta en <template>.

⚠ Regla de transporte: el runtime solo clona el contenido de <template>; todo lo externo (incluyendo estilos/scripts de <head>) se descarta — coloca <style>/<script> dentro de la plantilla. ⚠ Regla de ID de host: el data-composition-id del espacio del host debe coincidir exactamente con el data-composition-id de la plantilla interna y con la clave window.__timelines["<id>"] — sin sufijo -mount/-slot/-host.

Forma del archivo, conexión del host y lista de verificación previa al renderizado → references/sub-compositions.md.

La raíz debe tener tamaño (error de diseño silencioso)

La raíz independiente necesita un cuadro con tamaño explícito (width/height en px), y cada ancestro hasta un elemento con height:100% debe tener una altura resuelta — de lo contrario, un hijo flex/100% colapsa a ~0 y el contenido se acumula en la esquina superior izquierda. No confíes solo en compuertas automatizadas para detectar esto; inspecciona una captura. Esqueleto → references/minimal-composition.md.

Una línea de tiempo en pausa

Cada composición registra exactamente una gsap.timeline({ paused: true }) en window.__timelines["<id>"] (clave = data-composition-id raíz), construida sincrónicamente al cargar la página. La duración del renderizado = data-duration raíz, no la longitud de la línea de tiempo. No anides manualmente sub-líneas de tiempo en el host. Contrato completo (incluyendo runtimes no GSAP) → references/determinism-rules.md + hyperframes-animation/adapters/.

Errores comunes del primer lint (fallo garantizado en la primera compilación)

Dos reglas que lint sí detecta, pero solo después del hecho — escríbelas correctamente la primera vez:

  • El elemento raíz de la composición debe llevar data-start="0" (junto con data-composition-id/data-width/data-height); omitirlo hace que lint falle con root_composition_missing_data_start.
  • Nunca combines un transform CSS inicial con un tween de GSAP en la misma propiedad — el valor CSS y el inicio del tween entran en conflicto y lint lo rechaza con gsap_css_transform_conflict. Establece el estado inicial dentro del tween con gsap.fromTo(el, { x: -40 }, { x: 0 }) en lugar de un CSS transform: translateX(-40px).

Reglas no negociables (errores silenciosos que las compuertas automatizadas pueden pasar por alto)

Expuestas aquí; justificación completa en la referencia vinculada. No las violes:

  • Sin relojes en tiempo de renderizado / Math.random sin semilla / red / estado de entrada; sin repeat: -1 (usa un conteo finito). → determinism-rules.md
  • Anima solo la lista blanca de propiedades visuales; nunca apliques tween a display o visibility cruda. Las únicas excepciones de visibilidad son autoAlpha de GSAP y los límites de línea de tiempo de duración cero, y solo en elementos que no son clips o envoltorios dentro de un clip. El framework solo controla la visibilidad de .clip. No apliques gsap.set a clips de escenas posteriores al cargar la página. → determinism-rules.md
  • Sin <br> en el texto del cuerpo; los elementos transformados deben ser de nivel de bloque + con tamaño; los decorativos absolutos pulsantes necesitan espacio libre máximo. → determinism-rules.md
  • <video>/<audio> funcionan a cualquier profundidad de anidamiento (incluyendo dentro de un <template> o envoltorio de sub-comp); el framework controla la reproducción y busca/decodifica medios donde sea que estén. La única advertencia son las líneas de tiempo, no la ubicación: una línea de tiempo de sub-comp no puede animar elementos raíz del host. → variables-and-media.md
  • Cada id debe ser único en la página ensamblada; dentro de una sub-comp, prefija los ids con el id de la composición (#<id>-hero). Los ids duplicados de <video>/<img> se renderizan en blanco — el productor inyecta fotogramas mediante getElementById, y los duplicados entre archivos pasan desapercibidos para lint. → composition-patterns.md
  • El relleno de una escena a pantalla completa va en un hijo que ocupe todo el espacio (position:absolute; inset:0), nunca en la raíz de la composición — la composición de fotogramas del productor puede eliminar el background del propio elemento raíz (el fotograma se renderiza negro) aunque la vista previa/snapshot lo muestren correctamente. → composition-patterns.md

Editar composiciones existentes

  • Lee los archivos primero. Preserva la temporización, pistas, IDs, variables y rutas de medios no relacionadas.
  • Coincide con los IDs de composición y claves de línea de tiempo existentes.
  • Agregar un clip: elige un data-track-index que no se superponga o ajusta la temporización circundante intencionalmente.
  • data-hidden en cualquier elemento de composición lo oculta TANTO en la vista previa como en el renderizado, anulando su ventana de tiempo; no es destructivo/reversible y se alterna con el icono de ojo de la línea de tiempo de Studio.
  • Agregar una sub-composición: verifica su data-composition-id interno antes de conectar el host.

Validación

Usa hyperframes-cli para detalles de comandos

  • npx hyperframes check pasa (0 hallazgos en lint, tiempo de ejecución, diseño, movimiento y contraste)
  • Proyectos con sub-composiciones: npx hyperframes snapshot --at <puntos medios> y revisa visualmente cada fotograma
  • npx hyperframes preview --background para revisión (el usuario puede editar cualquier cosa en la línea de tiempo de Studio, y el servidor sobrevive al comando invocador)
  • npx hyperframes render solo después de que el usuario lo apruebe

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 relacionados