Communitygithub.com

presentación de diapositivas

Crea presentaciones de diapositivas navegables y componibles utilizando HyperFrames, con soporte para fragmentos, ramificación y modo presentador.

¿Qué es presentación de diapositivas?

Esta skill convierte una composición normal de HyperFrames en una presentación de diapositivas discreta y navegable. Añade un 'JSON island' (una isla JSON) que declara qué escenas son diapositivas y cómo se conectan, permitiendo que el `SlideshowController` del reproductor transforme la línea de tiempo continua de GSAP en una presentación con diapositivas, navegación integrada y modo presentador. Es útil para desarrolladores y creadores que desean construir pitch decks, presentaciones interactivas o 'tour' de productos que se ejecuten en vivo con `hyperframes present`, en lugar de exportar un video MP4 lineal. La skill admite fragmentos (animaciones paso a paso dentro de una diapositiva), hotspots interactivos para ramificaciones fuera de la secuencia lineal, notas del presentador editables, validación previa a la entrega y manejo compartido de medios. También incluye reglas estrictas de autoría: cada diapositiva debe tener un titular con una afirmación completa, una idea más un solo elemento visual, y un tamaño de fuente mínimo equivalente a 30pt. Para páginas de origen, la skill preserva fielmente el diseño visual, las interacciones, el movimiento y el comportamiento multimedia, evitando simplificaciones que reduzcan la fidelidad. Soporta plataformas como Cursor y Codex, y se integra con el ecosistema de HyperFrames a través de comandos como `npx hyperframes catalog --query` para buscar y reutilizar bloques visuales del catálogo.

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

Preguntar en tu IA favorita

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

Documentación

Primero, mantén esta skill actualizada — confirma con el usuario antes de ejecutar: npx hyperframes skills update slideshow. Una operación rápida sin cambios cuando todo está actualizado; de lo contrario, actualiza esta skill junto con las skills del dominio central de las que depende, antes de confiar en ellas.

fuente figma: Si el contenido de la presentación o el storyboard provienen de una URL de figma.com, ejecuta /figma primero (exporta recursos, tokens de marca y reconstruye el storyboard si la fuente es una tira de fotogramas de escena), luego construye a partir de su salida. No manejes Figma directamente a través de herramientas MCP en bruto: eso omite la sanitización de SVG, la procedencia de .media/manifest.jsonl y la vinculación de var() de los tokens de marca, por lo que un cambio posterior de marca no puede propagarse sin una reimportación completa.

Contrato de autoría de presentación de diapositivas

Una presentación de diapositivas de HyperFrames es una composición normal de HyperFrames (escenas, clips, líneas de tiempo de GSAP) con un ingrediente adicional: una isla JSON que declara qué escenas son diapositivas y cómo se conectan. El SlideshowController del reproductor lee la isla y convierte la línea de tiempo continua de GSAP en una presentación discreta y navegable.

Lee /hyperframes-core primero para el contrato base de composición (clips, pistas, atributos data-*, reglas de determinismo). Esta skill cubre solo lo nuevo: el esquema de la isla, las reglas de escritura de diapositivas, fragmentos, ramificación, validación y el componente envolvente.

Salida: una presentación navegable, no un MP4 lineal

La salida de una presentación de diapositivas es la presentación en ejecución: sírvela con hyperframes present <directorio-del-proyecto> (o el modo de presentación de Studio); el SlideshowController del reproductor lee la isla y maneja la navegación, fragmentos, ramificación y el modo presentador. Consulta Presentación y entrega más abajo.

No ejecutes hyperframes render en una presentación de diapositivas para generar un solo MP4. Una presentación se crea con varias composiciones de escena de nivel superior (un data-composition-id por diapositiva) sin una composición raíz maestra que las envuelva, por lo que render resuelve solo la primera composición y emite un MP4 silenciosamente truncado (por ejemplo, 6 segundos de una presentación de 40 segundos). Una exportación lineal de la línea principal (solo diapositivas principales, excluidas las secuencias de ramificación) está diferida — hasta que esté disponible, las salidas admitidas son la presentación en vivo present e imágenes fijas por diapositiva snapshot. Si un usuario necesita un MP4 lineal hoy, menciona esta limitación en lugar de ejecutar render en la presentación.

Confirmación de intención

Si el usuario pide explícitamente una presentación de diapositivas, slide show o presentación de diapositivas de HyperFrames, procede con esta skill. Cuando la solicitud llegó a través de /hyperframes, el triaje de la capa de intención es el propietario de esta confirmación — si se ha enrutado aquí, ya está confirmado, así que no vuelvas a preguntar; las preguntas de forma de ejecución de la capa no aplican (el entregable es una presentación, no un video renderizado). Un BRIEF.md, cuando está presente, contiene la intención confirmada — léelo.

Si la skill se activó a partir de una solicitud adyacente como "presentación", "pitch deck", "deck", "presentación interactiva" o "convertir esta página", haz una pausa antes de crear y plantea la elección antes de pedir confirmación. Explica brevemente que una presentación de diapositivas de HyperFrames significa una presentación ejecutable con diapositivas discretas, navegación integrada y modo presentador, notas del orador editables, manejo compartido de medios y validación antes de la entrega. Para conversiones de páginas de origen, también menciona que el objetivo es preservar el diseño visual, las interacciones, el movimiento y el comportamiento multimedia de la página original, mientras se traduce el movimiento de la página en transiciones de diapositiva a diapositiva.

Luego haz una pregunta de confirmación breve:

¿Quieres esto como una presentación de diapositivas de HyperFrames?

Usa una interfaz de elección sí/no cuando el entorno la proporcione; de lo contrario, haz la pregunta en texto plano.

No implementes la presentación de diapositivas hasta que el usuario diga que sí. Si dice que no, deja de usar esta skill — lee /hyperframes y deja que la capa de intención redirija. Esta confirmación es una decisión de enrutamiento, no una puerta de preferencia — según ../hyperframes/references/brief-contract.md § 1, sobrevive al modo autónomo ("sorpréndeme" no lo omite): construir el tipo de entregable incorrecto es un fallo de calidad, no una decisión creativa.


Las dos piezas

1. Escenas — declaradas de la manera normal

Cada diapositiva está respaldada por una escena. Declara las escenas con data-composition-id, data-start, data-duration y data-label:

<div
  data-composition-id="problem"
  data-start="0"
  data-duration="8"
  data-label="El problema"
  data-width="1920"
  data-height="1080"
>
  <!-- los clips van aquí -->
</div>

Las diapositivas de ramificación (accesibles solo a través de un hotspot, excluidas de la línea principal) se declaran exactamente de la misma manera; solo aparecen en una entrada slideSequences en la isla, no en el array principal slides.

2. La isla JSON — un bloque de script por composición

Agrega exactamente un bloque <script type="application/hyperframes-slideshow+json"> al HTML de la composición. Contiene todos los metadatos de la presentación de diapositivas:

<script type="application/hyperframes-slideshow+json">
  {
    "slides": [...],
    "slideSequences": [...]
  }
</script>

La isla es la única fuente de verdad para el orden de las diapositivas, notas, puntos de retención de fragmentos, hotspots y secuencias de ramificación. Mantenla cerca de la parte superior del <body>, antes de los divs de escena, para que sea fácil de encontrar.

No ocultes el manifiesto de la presentación detrás de un bloque <script type="application/json"> alternativo más código en tiempo de ejecución que crea la isla. El comando present lee el HTML de la composición estáticamente y espera que la isla real application/hyperframes-slideshow+json ya esté presente.


Esquema

SlideshowManifest (el objeto de la isla de nivel superior)

{
  "slides": [
    /* SlideRef[] — la línea principal, en orden */
  ],
  "slideSequences": [
    /* SlideSequence[] — secuencias de ramificación fuera de línea */
  ]
}

SlideRef

{
  "sceneId": "problem",
  "notes": "Empieza con el dolor, no con la empresa.",
  "fragments": [3.5, 5.2, 7.0],
  "hotspots": [
    /* SlideHotspot[] */
  ],

  "ttsScript": null,
  "ttsAudioUrl": null,
  "ttsDurationMs": null
}
CampoRequeridoNotas
sceneIdsíDebe coincidir exactamente con el data-composition-id de una escena (o proporcionar startTime/endTime explícitos). La regla de lint resuelve escenas por data-composition-id.
notesnoTexto solo para el presentador. Nunca se muestra a la audiencia.
fragmentsnoArray de tiempos (segundos) dentro del rango [start, end] de la diapositiva — consulta Fragmentos más abajo.
hotspotsnoSuperposiciones interactivas que desencadenan una ramificación — consulta Ramificación más abajo.
startTimenoOpcional. Sobrescribe los límites de tiempo de la escena coincidente; por defecto usa el inicio/fin de la escena.
endTimenoOpcional. Sobrescribe los límites de tiempo de la escena coincidente; por defecto usa el inicio/fin de la escena.
ttsScript, ttsAudioUrl, ttsDurationMsnoReservado. Los campos del esquema existen, pero la reproducción de TTS aún no está conectada. Omítelos a menos que estés precargando para una compilación futura.

SlideHotspot

{
  "id": "h1",
  "label": "¿Cómo calculamos esto?",
  "target": "market-deep-dive",
  "region": { "x": 60, "y": 10, "w": 35, "h": 20 }
}
CampoRequeridoNotas
idsíÚnico dentro de la diapositiva.
labelsíTexto de información sobre herramientas / botón que se muestra a la audiencia.
targetsíDebe coincidir con un SlideSequence.id en slideSequences.
regionnoCuadro delimitador en porcentaje de la diapositiva: {x, y, w, h} en 0–100. Omítelo para representar el hotspot como un botón etiquetado de diapositiva completa.

SlideSequence

{
  "id": "market-deep-dive",
  "label": "Metodología de dimensionamiento del mercado",
  "slides": [{ "sceneId": "mkt-1" }, { "sceneId": "mkt-2" }]
}

slides dentro de una secuencia usa la misma forma SlideRef que la línea principal. Se permiten fragmentos y hotspots anidados.

Reglas de escritura de diapositivas

Estas son restricciones estrictas, no sugerencias. Una diapositiva que las viole será reemplazada directamente cuando un revisor la vea.

  • El titular es una afirmación con oración completa, no una etiqueta. Escribe "Las pymes dedican 14 horas/semana a la programación manual", no "Problema de programación". La oración debe ser autónoma si se ignora el elemento visual.
  • Una idea + un visual por diapositiva. Si te sientes tentado a agregar un segundo conjunto de viñetas o un segundo gráfico, divide la diapositiva.
  • Empieza con el punto clave. El punto más fuerte va primero — en la diapositiva y en el orden de la presentación. Los inversores leen de izquierda a derecha, de arriba a abajo, y se detienen.
  • Solo dimensionamiento de mercado ascendente. Nunca escribas "$50B TAM" sin mostrar las matemáticas. Construye a partir de la economía unitaria: cuentas × ACV, o transacciones × tasa de toma.
  • Tamaño de fuente mínimo equivalente a 30pt. A 1920×1080, un titular es de 72–96px; el cuerpo del texto es de 48px. Nunca uses menos de 40px para cualquier texto que la audiencia deba leer.
  • Busca en el catálogo en vivo antes de construir manualmente cualquier elemento visual con nombre. Para cada aspecto visual, efecto, gráfico, tratamiento o transición que necesite una diapositiva — "líneas de barrido CRT", "glitch", "carrera de gráficos de barras", "barrido de brillo", "ventana de terminal" — ejecuta npx hyperframes catalog --query "<el elemento visual, en inglés simple>" --json y lee los mejores resultados antes de crear los clips de la diapositiva. La búsqueda no necesita nada instalado: ni proyecto, ni add previo, ni cuenta. Clasifica todo el registro alojado (~400 bloques y componentes) desde cualquier directorio. npx hyperframes add <nombre> coloca el código fuente del bloque en la presentación, donde lo personalizas en su lugar. Esto aplica con especial fuerza al portar una página de origen: un bloque real supera a la aproximación simplificada que las reglas de portabilidad a continuación prohíben.

Portabilidad de páginas de origen

Al convertir una página existente en una presentación de diapositivas, la fidelidad a la fuente es parte del contrato. No reemplaces widgets específicos de la fuente con aproximaciones simplificadas a menos que el usuario pida explícitamente un rediseño.

  • Preserva el diseño visual, el lenguaje de movimiento, el comportamiento interactivo, el comportamiento multimedia y las capacidades de presentación de la página original con la mayor precisión práctica. Cuando el sistema de presentación de diapositivas admita el modo presentador, incluye notas del orador utilizando el comportamiento compartido de notas editables en lugar de una implementación específica de la presentación.
  • Porta los elementos visuales mecánicos del DOM/CSS/JS de origen con la mayor precisión práctica: reproductores personalizados, visualizadores de lienzo, líneas de tiempo, cabezas de reproducción, stems, círculos en expansión, estados de hover y otros detalles interactivos deben sobrevivir a la conversión.
  • Trata los elementos <video> / <audio> nativos como la fuente de verdad para cualquier marco multimedia personalizado, visualizador de lienzo, forma de onda, cuadrícula de ritmo o cabeza de reproducción. Conecta los eventos multimedia de la fuente (play, pause, timeupdate, seeking, seeked, ended, ratechange, volumechange) y deriva el estado visual de media.currentTime; no ejecutes un temporizador separado que pueda desviarse de la reproducción real.
  • Cada <video> o <audio> copiado con src debe tener atributos de temporización de HyperFrames antes del lint: data-start y data-duration, además de data-has-audio="true" cuando se deba conservar el audio nativo audible. Usa el rango de tiempo de la escena para medios específicos de la diapositiva; para videos de evidencia controlados por el usuario que puedan reproducirse desde múltiples diapositivas enfocadas, usa un rango de toda la presentación. No dejes preload="none" en los medios; usa metadata o auto.
  • Resuelve los tokens de fuente de origen antes de la validación. Si conservas fuentes de origen personalizadas, agrega reglas @font-face para los archivos de fuente locales/capturados. Si usas alternativas del sistema, reemplaza las declaraciones tokenizadas como font-family: var(--f-body) con pilas concretas seguras para renderizar como system-ui, sans-serif o ui-monospace, monospace; no dejes var(...) como valor de la familia de fuentes.
  • Audita la fuente en busca de movimiento de página atípico, especialmente el comportamiento impulsado por scroll, rueda, toque, estado de hash, redimensionamiento o un bucle requestAnimationFrame. Trata los viewports fijos con capas "world" traducidas/escaladas, paralaje, paneles fijos, desplazadores horizontales, líneas de tiempo controladas por scroll, ajuste de secciones y cámaras de zoom a elementos como comportamiento de origen. El scroll suele ser el desencadenante de transición de la fuente, por lo que preserva la transición extrayendo sus puntos de progreso, easing y estados de cámara/enfoque, luego reubica ese movimiento en la navegación de la presentación de diapositivas a través de posiciones en la línea de tiempo, fragmentos o un enganche de reproductor/arnés reutilizable. Los envoltorios independientes que saltan a puntos de retención de diapositivas aún necesitan un enganche de transición de cámara de navegación explícito; no es suficiente calcular las transformaciones de cámara por diapositiva. No simules una transición literal de desplazamiento hacia abajo de la página dentro de la diapositiva; el espectador debe sentir un viaje/zoom de cámara de un punto focal a otro, no ver una página web siendo desplazada. Mantén cada movimiento de cámara de diapositiva a diapositiva continuo: evita paradas de ruta intermedias que inviertan la dirección x/y o el zoom.

[truncado para traducción]

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 relacionados