Communitygithub.com

topcheer/ggcode

El contrato técnico de HyperFrames para construir un proyecto renderizable. Úsalo para la estructura de composición, los atributos de temporización `data-*`, `class="clip"`, pistas, subcomposiciones, variables, reproducción de medios gestionada por el marco, reglas de renderizado determinista y validación. También cubre proyectos Tailwind y los formatos de plan STORYBOARD.md / SCRIPT.md. Léelo antes de escribir HTML de composición.

¿Qué es ggcode?

Este skill define el contrato técnico central para construir composiciones de video renderizables con HyperFrames, un marco que convierte HTML en video. Proporciona las reglas fundamentales para estructurar un proyecto, incluyendo la declaración de temporización con atributos `data-*`, el uso de `class="clip"`, la gestión de pistas y subcomposiciones, y las variables. El skill detalla cómo construir una línea de tiempo determinista y buscable, con restricciones estrictas como la prohibición de relojes en tiempo de render, `Math.random` no seedeado o bucles infinitos. Cubre tanto composiciones independientes como subcomposiciones encapsuladas en `<template>`, y especifica reglas no negociables para evitar errores silenciosos: todos los elementos deben tener un tamaño explícito, los IDs deben ser únicos a nivel global, y la reproducción de medios (`<video>`/`<audio>`) es totalmente gestionada por el marco, independientemente de su profundidad de anidamiento. Además, incluye una tabla de referencias detallada para temas específicos (atributos, pistas, subcomposiciones, variables, reglas de determinismo, formatos de guion gráfico y guion, etc.), y cubre la validación mediante la CLI de HyperFrames con comandos como `check`, `snapshot` y `preview`. Es compatible con proyectos Tailwind v4 y se integra con los skills hermanos de animación, creatividad y CLI de HyperFrames. Este skill es esencial para cualquier desarrollador que desee crear composiciones de video predecibles y de alto rendimiento, y debe leerse antes de escribir cualquier HTML de composición.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/topcheer/ggcode/tree/HEAD/agent/skills/hyperframes-core

Preguntar en tu IA favorita

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

Documentación

Núcleo de HyperFrames

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

Este skill es el contrato técnico: cómo construir un proyecto de hyperframes. El cuerpo a continuación es la guía de construcción; los detalles por tema se encuentran en references/ (índice a continuación), léelos bajo demanda. Otras inquietudes residen en los skills de dominio hermanos: hyperframes-animation, hyperframes-creative, media-use, hyperframes-cli, hyperframes-registry. El mapa de capacidades en /hyperframes indica lo que cubre cada uno.

Referencias

ArchivoLéelo para…
references/minimal-composition.mdcomenzar desde el esqueleto de composición renderizable más pequeño
references/composition-patterns.mdelegir monolítico vs modular; estructurar un index.html modular; seleccionar un arquetipo de subcomp
references/data-attributes.mdbuscar cualquier data-* (raíz / clip / host de subcomp / alias heredados); usar class="clip"
references/tracks-and-clips.mdelegir data-track-index, manejar superposición / z-index en la misma pista, temporizar un clip en relación con otro
references/sub-compositions.mdcablear una subcomposición (atributos del host, <template>, variables por instancia) y animar dentro de ella
references/variables-and-media.mddeclarar variables; colocar <video>/<audio>, establecer volumen, recortar
references/determinism-rules.mdconstruir una línea de tiempo buscable; prohibiciones de determinismo; la 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 los pases de revisión planificar → bosquejar → construir en un tablero activo, compartido por todo flujo de trabajo 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, verificar, entregar). Una construcción libre sigue directamente
references/brief-contract.mdlas reglas básicas del resumen: 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 la Configuración de un flujo de trabajo escribe y que cada paso posterior lee
references/script-format.mdredactar la SCRIPT.md opcional con narración bloqueada
references/subagent-dispatch.mdmapear los verbos de despacho de subagentes (fan-out paralelo / fondo / espera) a tu arnés
references/frame-worker-core.mdel contrato del rol de frame-worker compartido: el constructor de paquetes de cada flujo de trabajo narrativo lo antepone al delta de ese flujo de trabajo en sub-agents/frame-worker.md
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.

Construyendo 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).
  • Subcomposición (cargada mediante data-composition-src): la raíz debe estar envuelta en <template>.

⚠ Regla de transporte: el tiempo de ejecución solo clona el contenido de <template>; todo lo exterior (incluyendo estilos/scripts de <head>) se descarta: coloca <style>/<script> dentro de la plantilla. ⚠ Regla de ID del host: el data-composition-id de la ranura del host debe ser exactamente igual al data-composition-id de la plantilla interna y a la clave window.__timelines["<id>"] — sin sufijos -mount/-slot/-host.

Forma del archivo, cableado 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 una caja 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% se colapsa a ~0 y el contenido se apila en la esquina superior izquierda. No confíes solo en las compuertas automatizadas para detectar esto; inspecciona una instantánea. 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 sublíneas de tiempo en el host. Contrato completo (incluyendo tiempos de ejecución que no son GSAP) → references/determinism-rules.md + hyperframes-animation/adapters/.

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

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

  • Sin relojes en tiempo de renderizado / Math.random no seedeado / red / estado de entrada; sin repeat: -1 (usa un recuento finito). → determinism-rules.md
  • Anima solo la lista blanca de propiedades visuales; nunca hagas tween de display o visibility sin procesar. autoAlpha de GSAP y los límites de línea de tiempo de duración cero son las únicas excepciones de visibilidad, y solo en elementos que no son clips o envoltorios dentro de un clip. El marco solo controla la visibilidad de .clip. No uses gsap.set para 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 y tener tamaño; los decorativos absolutos pulsantes necesitan espacio máximo. → determinism-rules.md
  • <video>/<audio> funcionan a cualquier profundidad de anidamiento (incluso dentro de un <template> de subcomp o envoltorio); el marco es dueño de la reproducción y busca/decodifica los medios dondequiera que estén. La única advertencia son las líneas de tiempo, no la ubicación: una línea de tiempo de subcomp 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 subcomp, prefija los IDs con el ID de 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 de sangría completa (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 elemento raíz (el fotograma se renderiza negro) incluso si la vista previa/snapshot lo muestra correctamente. → composition-patterns.md

Editando composiciones existentes

  • Lee los archivos primero. Conserva la temporización, pistas, IDs, variables y rutas de medios no relacionadas.
  • Empareja los IDs de composición existentes y las claves de línea de tiempo.
  • Al 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 es alternado por el icono de ojo de línea de tiempo de Studio.
  • Al agregar una subcomposición: verifica su data-composition-id interno antes de cablear 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 subcomposiciones: npx hyperframes snapshot --at <midpoints> y examina cada fotograma
  • npx hyperframes preview para revisión (el usuario puede editar cualquier cosa en la línea de tiempo de Studio)
  • npx hyperframes render solo después de la aprobación del usuario

Skills relacionados