Communitygithub.com

hyperframes-keyframes

Los keyframes son un contrato de pose: estados visibles, identidad de sujeto continua, tiempo de ejecución seguro para búsqueda y píxeles verificados.

¿Qué es hyperframes-keyframes?

HyperFrames Keyframes es una skill especializada en la creación y gestión de keyframes para animaciones visuales en el ecosistema HyperFrames. Su propósito es garantizar que los keyframes sean un contrato de pose verificable, cumpliendo con requisitos como estados visibles, identidad de sujeto continua, tiempo de ejecución seguro para búsqueda y píxeles verificados. La skill se centra exclusivamente en el movimiento visual, dejando el montaje de clips, cortes duros y transiciones temporales a `/hyperframes-core` y el audio a `/hyperframes-audio`. Soporta múltiples plataformas de animación como GSAP, CSS Keyframes, Anime.js y WAAPI, y proporciona reglas estrictas de tiempo de ejecución para garantizar la determinismo y la capacidad de búsqueda. Además, incluye un flujo de trabajo de procedimiento y un conjunto de comandos CLI para linting, verificación y captura de pruebas visuales. Es útil para desarrolladores que necesitan animaciones predecibles y verificables en aplicaciones web, especialmente en contextos donde la sincronización y la fidelidad visual son críticas.

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

Preguntar en tu IA favorita

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

Documentación

HyperFrames Keyframes

Los keyframes son un contrato de pose: estados visibles, identidad de sujeto continua, tiempo de ejecución seguro para búsqueda y píxeles verificados.

Usa hyperframes-animation para recetas de escena amplias. Usa hyperframes-cli para documentación completa de comandos. Usa references/keyframe-patterns.md solo al elegir mecanismos de implementación, no el estilo visual.

Límite de edición del creador

Los keyframes poseen el movimiento visual, no el montaje de clips. Los cortes duros de rango de origen, recorte, empalme y reordenación pertenecen a /hyperframes-core: autoriza un elemento multimedia por rango conservado, colócalo con data-start y data-duration, y selecciona su desplazamiento de origen con data-media-start. Los rangos adyacentes forman un corte duro. Una transición encadenada usa clips superpuestos en diferentes pistas más keyframes de opacidad visual; los fundidos de sonido usan /hyperframes-audio.

Solicitud del creadorMecanismo veraz
Acercar / alejar (punch-in/punch-out)Keyframe de scale con x/y o traslación porcentual en un envoltorio visual/de recorte no temporizado dentro del clip. Usa un tween conjunto/corto para un acercamiento brusco y un tween para un movimiento suave.
Zoom o reencuadre suave de múltiples estadosMantén vivo un envoltorio de sujeto y autoriza múltiples estados de zoom/reencuadre como una escalera de poses con easing por segmento.
Panorámica, reencuadre o movimiento de cámara Ken BurnsAnima la traslación del envoltorio más la escala. La geometría es autorizada; esto no es seguimiento facial ni reencuadre semántico automático.
Movimientos de cámara encadenadosEncadena beats de transformación etiquetados en una línea de tiempo registrada y segura para búsqueda.
Corte de coincidencia o giro panorámico (match cut/whip pan)/hyperframes-animation posee la transición visual; /hyperframes-registry proporciona primitivas; los keyframes preservan la geometría, dirección y velocidad autorizadas. No existe descubrimiento automático de fotogramas de coincidencia.
Reencuadre con recorte y máscaraInterpola clip-path o una máscara en un envoltorio visual interno para recortar/reencuadrar sin cambiar el tiempo de origen. Los keyframes de polígono pueden formar una transición de polígono/máscara.
Corte de transición direccional o corte de iris/revelaciónAnima un límite de máscara/clip a través de clips visuales superpuestos; /hyperframes-animation posee la coreografía de transición.
Transición de pantalla dividida (split-screen handoff)Mantén ambos clips visuales colocados por el núcleo, luego keyframe sus envoltorios internos de recorte/máscara y la geometría del divisor.
Re-temporización constante de origen (constant source retime)/hyperframes-core posee data-playback-rate normalizado (0.1..5) para imagen segura para renderizado y sonido con preservación de tono. Es constante para todo el elemento multimedia.
Rampas de velocidad de origen (source speed ramps)No compatible: no hay envolvente de velocidad de reproducción variable en el tiempo. Preprocesa un recurso multimedia derivado, luego colócalo a través del núcleo.
Congelación / pausa (freeze / hold)Una pose visual, el fotograma de origen final o una subcomposición terminada pueden mantenerse. No se admite la congelación arbitraria en medio del origen; preprocesa un segmento fijo/derivado, colócalo como su propio clip, luego reanuda con otro rango de origen.

Al editar imagen y sonido juntos, carga /hyperframes-core, esta skill para movimiento visual y /hyperframes-audio para fundidos, transiciones encadenadas, automatización de volumen, ducking/carve o efectos en las pistas colocadas.

Un tratamiento de transición visual o recorte no es un recorte temporal de origen o empalme. /hyperframes-core posee la línea de tiempo, la sincronización de clips y los rangos de origen; los keyframes solo animan la transición visible o el recorte en envoltorios dentro de esos clips. Para recetas combinadas de imagen/sonido copiables, usa /hyperframes-core → references/creator-editing-recipes.md.

Procedimiento

  1. Identifica el sujeto animado, estados visibles, estado final y tiempo de ejecución.
  2. Elige el mecanismo más pequeño que demuestre la solicitud. Lee references/keyframe-patterns.md solo si el mecanismo no está claro.
  3. Autoriza keyframes seguros para búsqueda en el tiempo de ejecución declarado. Construye sincrónicamente y registra la instancia de tiempo de ejecución.
  4. Verifica con hyperframes lint, hyperframes check, hyperframes keyframes, un --shot enfocado, y capturas de pantalla en tiempos de prueba.
  5. Si la prueba falla, corrige los keyframes de origen y vuelve a ejecutar el diagnóstico fallido más pequeño antes de renderizar.

Contrato

  • Nombra el sujeto en movimiento.
  • Nombra las poses necesarias para probar el movimiento previsto, incluyendo el estado final.
  • Keyframe canales visibles, no estado auxiliar oculto.
  • Preserva la identidad del objeto cuando la continuidad importa.
  • Transición encadenada solo cuando el movimiento previsto es reemplazo o disolución.
  • Mantén los estados legibles o semánticos el tiempo suficiente para verlos.
  • El fotograma final es parte de la animación, no una limpieza.
  • No restablezcas al reposo a menos que se solicite.
  • No termines en negro a menos que se solicite.
  • Si editas una escena inicial, preserva el diseño, la copia, los activos, los colores y el estado final a menos que se pida rediseñar.

Reglas de Tiempo de Ejecución

GSAP:

  • construye sincrónicamente en la carga de la página
  • usa gsap.timeline({ paused: true })
  • registra como window.__timelines[compositionId]
  • la clave del registro debe coincidir con data-composition-id
  • no llames tl.play() para el movimiento crítico de renderizado
  • mantén los repeticiones finitas

Keyframes CSS:

  • duración finita y número de iteraciones
  • retardo determinista
  • animation-fill-mode: both
  • usa data-start cuando la temporización pertenece a un clip

Anime.js:

  • crea sincrónicamente
  • autoplay: false
  • duración y bucles finitos
  • inserta cada instancia en window.__hfAnime

WAAPI:

  • duration finita
  • fill: "both"
  • construcción determinista
  • la superficie de texto no lista WAAPI; verifica con --shot (busca WAAPI) y capturas de pantalla

Nunca uses para movimiento crítico de renderizado:

  • Date.now()
  • performance.now()
  • Math.random() sin semilla
  • disparadores de hover/scroll
  • temporizadores
  • líneas de tiempo creadas asincrónicamente
  • requestAnimationFrame no registrado
  • bucles infinitos

Esqueleto GSAP

const root = document.querySelector("[data-composition-id]");
const compositionId = root.dataset.compositionId;
const tl = gsap.timeline({ paused: true });

tl.addLabel("state-a", 0);
tl.to(".subject", {
  keyframes: [
    { x: 0, opacity: 1, duration: 0.2 },
    { x: 120, opacity: 1, duration: 0.4, ease: "power2.out" },
    { x: 100, opacity: 1, duration: 0.2, ease: "power2.inOut" },
  ],
  ease: "none",
});

window.__timelines = window.__timelines || {};
window.__timelines[compositionId] = tl;

Usa etiquetas para estados semánticos. Usa parámetros de posición en lugar de retrasos encadenados. Usa immediateRender: false para tweens from()/fromTo() posteriores que toquen la misma propiedad.

Formas de Keyframe

  • Keyframes de array: escalera de pose con duración/easing por paso.
  • Keyframes de porcentaje: temporización exacta dentro de un tween.
  • Arrays de propiedades: cambios multi-parada compactos.
  • ease: "none" en el padre cuando cada parada lleva su propio easing.
  • easeEach cuando cada segmento debe compartir la misma sensación.

No copies distancias numéricas o temporizaciones de los ejemplos. Derívalas de la geometría y duración real de la composición.

Para un sujeto que se mueve entre dos cajas, prefiere un tween de transformación continua o FLIP. Divide x/y/scale en múltiples keyframes con easing solo cuando el espectador deba sentir beats distintos; cada segmento cambia la velocidad y puede leerse como un tropiezo.

Canales

Prefiere canales visuales/de compositor: x/y/z, xPercent/yPercent, scale, rotationX/Y/Z, skew, transformOrigin, svgOrigin, opacity, autoAlpha, clip-path, máscaras, variables CSS, valores de ruta/dash SVG, transformaciones de cámara, uniformes de shader.

Evita canales de diseño/ciclo de vida: top/left/right/bottom, width/height, margin/padding, display, visibility, creación tardía de DOM, superposiciones auxiliares que hacen movimiento de sujeto.

Para cambios de visibilidad, usa autoAlpha en la línea de tiempo GSAP registrada y buscable, o un tl.set() de duración cero en un límite explícito. Apunta solo a un elemento no clip o un envoltorio dentro del clip; nunca apuntes a .clip en sí mismo. Nunca hagas tween de duración con visibility bruto, y nunca hagas tween de display.

Elección de Mecanismo

Elige el mecanismo más pequeño que demuestre la solicitud:

NecesidadMecanismo
El mismo sujeto cambia de caja o jerarquíaelemento compartido / FLIP
El sujeto viaja una ruta visiblerecorrido de ruta
El trazo crece o trazadibujo de trazo
Una forma se convierte en otrainterpolación de forma
El límite de revelación es visibleclip, máscara o uniforme de shader
Muchos elementos se mueven con ordenescalonamiento / retardo indexado
El texto mismo se muevesubdivisión de línea, palabra, carácter o banda
La superficie se dobla, estira o recortacontra-transformación padre/hijo
La interfaz de usuario tiene estadosmáquina de estados explícita
La escena tiene profundidadDOM 3D, Three.js o keyframes de cámara/objeto WebGL

Los mecanismos pueden combinarse, pero cada uno debe aclarar la idea. La decoración no es prueba.

Temporización

  • Anticipación solo cuando aclara causa o dirección.
  • Aceleración sale del reposo.
  • Prueba máxima muestra el mecanismo inequívocamente.
  • Seguimiento (follow-through) vende energía y dirección.
  • Sobreimpulso (overshoot) solo cuando el sujeto debe sentirse elástico o táctil.
  • El recorrido de ruta a velocidad constante generalmente necesita ease: "none".
  • Los estados discretos de interfaz de usuario generalmente necesitan un ease-out agudo.
  • Los elementos repetidos necesitan desplazamientos ordenados, no temporización idéntica.
  • Los bloqueos finales necesitan mantenimientos más largos que las poses de transición.
  • Suavidad significa velocidad continua en el mismo sujeto.
  • No superpongas tweens que escriban la misma propiedad de transformación a menos que la superposición sea intencional y verificada.
  • Evita animar cambios grandes de clip-path/máscara mientras la misma superficie principal también está escalando o viajando; usa revelaciones anidadas después de que el movimiento principal se asiente.

Texto

Preserva las cajas de línea, el espaciado de palabras, la legibilidad y el ajuste final. Si el texto se mueve internamente, mueve los glifos o bandas enmascaradas, no solo decoraciones alrededor del texto. Captura fotogramas legibles.

SVG

Para el crecimiento de trazo prefiere DrawSVGPlugin, luego stroke-dasharray/stroke-dashoffset. Para la interpolación de formas prefiere MorphSVGPlugin; convierte primitivas a rutas cuando sea necesario y divide siluetas complejas en partes más simples.

3D

La escala sola es profundidad falsa. Usa perspectiva en un padre estable, transform-style: preserve-3d, viaje en z, rotación, movimiento de cámara/mundo, oclusión y orden de capas cuando los objetos se crucen.

Usa uno o dos ángulos de diagnóstico que expongan la relación de profundidad. Si la prueba angulada no muestra cruce de profundidad, mejora z/cámara/oclusión.

Canvas / WebGL

Keyframe la posición de la cámara, el objetivo de la cámara, la transformación del objeto, la opacidad del material, los uniformes del shader y la intensidad del postprocesamiento a través del estado determinista. Renderiza desde el tiempo de HyperFrames. Usa --ghost porque las cajas de marcador no pueden ver el movimiento interno del canvas.

Prueba CLI

npx hyperframes lint
npx hyperframes check
npx hyperframes keyframes .
npx hyperframes keyframes . --json
npx hyperframes keyframes . --runtime all
npx hyperframes keyframes . --selector "<selector>" --shot "<file>" --samples <n>
npx hyperframes keyframes . --selector "<selector>" --shot "<file>" --layout strip --from <t0> --to <t1>
npx hyperframes keyframes . --shot "<file>" --ghost --angle <angle>
npx hyperframes snapshot . --at <times>

Elige <selector> para el sujeto animado real. Elige <times> para el primer fotograma, poses de prueba, final-menos-mantener y final exacto. Elige <angle> solo cuando la profundidad deba demostrarse.

HerramientaDemuestra
keyframesobjetivos, paradas explícitas, rutas, trazas, movimiento padre/hijo compuesto, paradas CSS, registro de Anime
--shotfantasmas, forma de ruta, espaciado de tiempo, proyección DOM 3D, prueba de selector enfocado
--layout stripmovimiento en el lugar, superposiciones, contacto, escala/opacidad sutil, ondas de texto
--ghostcanvas, WebGL, movimiento de shader, 3D renderizado
snapshot --atmáscaras, legibilidad de texto, estado completo, bloqueo final, colas de negro/restablecimiento

Si la prueba del selector parece incorrecta:

  1. vuelve a ejecutar --json
  2. encuentra el objetivo animado real
  3. dispara ese objetivo
  4. captura fotogramas completos
  5. confía en los píxeles pintados sobre los registros

Lectura de Diagnóstico

flat significa que no hay poses intermedias explícitas. keyframes significa que existen paradas explícitas. `m... [truncado para traducción]

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-core

The HyperFrames composition contract — build one renderable project. Use for composition structure, the `data-*` timing attributes, `class=

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-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