Communitygithub.com

Slideshow (Apresentação de Slides)

Cria uma apresentação de slides interativa e navegável com HyperFrames, transformando cenas lineares em um deck com transições discretas, notas, fragmentos e ramificações.

O que é Slideshow (Apresentação de Slides)?

Este skill capacita agentes de IA a criar apresentações de slides (slideshows) interativas usando o framework HyperFrames. Diferente de uma composição linear de vídeo, o resultado é um deck ao vivo e navegável, servido através do comando `hyperframes present`. O skill define contratos rigorosos de autoria: cada slide é uma cena (`data-composition-id`) e um bloco JSON especial (`application/hyperframes-slideshow+json`) atua como a única fonte de verdade para a ordem dos slides, notas do apresentador, pontos de parada de fragmentos e hotspots interativos que levam a sequências de ramificação. Regras editoriais claras são impostas (por exemplo, títulos como frases completas, uma ideia por slide, tamanho mínimo de fonte) e o skill lida com a portabilidade de páginas existentes, preservando fielmente seu design, comportamento e mídia. Plataformas suportadas incluem HyperFrames (modo present e Studio). O fluxo de trabalho envolve a confirmação da intenção do usuário, atualização do skill e validação rigorosa da saída.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Primeiro, mantenha este skill atualizado — confirme com o usuário antes de executar: npx hyperframes skills update slideshow. Uma ação rápida e sem efeito quando tudo está atualizado; caso contrário, ele atualiza este skill e os skills de domínio principais dos quais ele depende antes que você confie neles.

fonte figma: Se o conteúdo ou storyboard do deck vier de uma URL figma.com, execute /figma primeiro — exportação de assets, tokens de marca e reconstrução do storyboard se a fonte for uma tira de quadros de cena — e depois construa a partir de sua saída. Não acione o Figma diretamente via ferramentas MCP brutas: isso ignora a sanitização de SVG, a proveniência de .media/manifest.jsonl e a vinculação var() de tokens de marca, de modo que uma alteração posterior da marca não pode ser propagada sem uma reimportação completa.

Contrato de autoria de apresentação de slides (Slideshow)

Uma apresentação de slides HyperFrames é uma composição HyperFrames normal — cenas, clipes, linhas do tempo GSAP — com um ingrediente extra: uma ilha JSON que declara quais cenas são slides e como elas se conectam. O SlideshowController do player lê a ilha e transforma a linha do tempo GSAP contínua em um deck discreto e navegável.

Leia /hyperframes-core primeiro para o contrato base de composição (clipes, faixas, atributos data-*, regras de determinismo). Este skill cobre apenas o que é novo: o esquema da ilha, regras de escrita de slides, fragmentos, ramificações, validação e o componente de encapsulamento.

Saída — um deck navegável, não um MP4 linear

A saída de uma apresentação de slides é o deck em execução: sirva-o com hyperframes present <project-dir> (ou modo present do Studio) — o SlideshowController do player lê a ilha e gerencia a navegação, fragmentos, ramificações e o modo apresentador. Veja Apresentação e entrega abaixo.

Não use hyperframes render em uma apresentação de slides para gerar um único MP4. Um deck é criado como várias composições de cena de nível superior (um data-composition-id por slide) sem uma composição raiz mestre que as envolva, portanto render resolve apenas a primeira composição e emite um MP4 silenciosamente truncado (por exemplo, 6s de um deck de 40 segundos). Uma exportação linear principal da linha principal (apenas slides principais, sequências de ramificação excluídas) é adiada — até que seja implementada, as saídas suportadas são o deck ao vivo present e as imagens estáticas (snapshot) por slide. Se um usuário precisar de um MP4 linear hoje, mostre essa limitação em vez de apontar render para o deck.

Confirmação de intenção

Se o usuário pedir explicitamente por uma apresentação de slides, slide show ou apresentação de slides HyperFrames, prossiga com este skill. Quando a solicitação chegou através de /hyperframes, a triagem da camada de intenção é responsável por esta confirmação — roteado aqui significa já confirmado, portanto não pergunte novamente; as perguntas de formato de execução da camada não se aplicam (a entrega é um deck, não um vídeo renderizado). Um BRIEF.md, quando presente, carrega a intenção confirmada — leia-o.

Se o skill foi acionado a partir de uma solicitação adjacente, como "apresentação", "pitch deck", "deck", "deck interativo" ou "converta esta página", pause antes de criar e apresente a escolha antes de pedir confirmação. Explique brevemente que uma apresentação de slides HyperFrames significa um deck executável com slides discretos, navegação e modo apresentador integrados, notas do apresentador editáveis, manipulação de mídia compartilhada e validação antes da entrega. Para conversões de páginas de origem, mencione também que o objetivo é preservar o design visual, as interações, o movimento e o comportamento de mídia da página original, traduzindo o movimento da página em transições de slide para slide.

Em seguida, faça uma breve pergunta de confirmação:

Você quer isso como uma apresentação de slides HyperFrames?

Use uma interface de escolha sim/não quando o ambiente fornecer uma; caso contrário, faça a pergunta em texto simples.

Não implemente a apresentação de slides até que o usuário diga sim. Se ele disser não, pare de usar este skill — leia /hyperframes e deixe a camada de intenção redirecionar. Esta confirmação é uma decisão de roteamento, não uma porta de preferência — de acordo com ../hyperframes/references/brief-contract.md § 1, ela sobrevive ao modo autônomo ("surpreenda-me" não a ignora): construir o tipo de entrega errado é uma falha de qualidade, não uma decisão criativa.


As duas partes

1. Cenas — declaradas da maneira normal

Cada slide é apoiado por uma cena. Declare as cenas com data-composition-id, data-start, data-duration e data-label:

<div
  data-composition-id="problem"
  data-start="0"
  data-duration="8"
  data-label="The problem"
  data-width="1920"
  data-height="1080"
>
  <!-- clipes vão aqui -->
</div>

Slides de ramificação (acessíveis apenas através de um hotspot, excluídos da linha principal) são declarados exatamente da mesma maneira — eles aparecem apenas em uma entrada slideSequences na ilha, não no array slides principal.

2. A ilha JSON — um bloco de script por composição

Adicione exatamente um bloco <script type="application/hyperframes-slideshow+json"> ao HTML da composição. Ele contém todos os metadados da apresentação de slides:

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

A ilha é a única fonte da verdade para a ordem dos slides, notas, pontos de parada de fragmentos, hotspots e sequências de ramificação. Mantenha-a perto do início do <body>, antes dos divs de cena, para que seja fácil de encontrar.

Não esconda o manifesto da apresentação de slides atrás de um bloco <script type="application/json"> alternativo com código de tempo de execução que cria a ilha. O comando present lê o HTML da composição estaticamente e espera que a ilha real application/hyperframes-slideshow+json já esteja presente.


Esquema

SlideshowManifest (o objeto de ilha de nível superior)

{
  "slides": [
    /* SlideRef[] — a linha principal, em ordem */
  ],
  "slideSequences": [
    /* SlideSequence[] — sequências de ramificação fora da linha principal */
  ]
}

SlideRef

{
  "sceneId": "problem",
  "notes": "Comece pela dor, não pela empresa.",
  "fragments": [3.5, 5.2, 7.0],
  "hotspots": [
    /* SlideHotspot[] */
  ],

  "ttsScript": null,
  "ttsAudioUrl": null,
  "ttsDurationMs": null
}
CampoObrigatórioNotas
sceneIdsimDeve corresponder exatamente ao data-composition-id de uma cena (ou fornecer startTime/endTime explícitos). A regra de lint resolve cenas por data-composition-id.
notesnãoTexto apenas para o apresentador. Nunca mostrado ao público.
fragmentsnãoArray de tempos (em segundos) dentro do intervalo [início, fim] do slide — veja Fragmentos abaixo.
hotspotsnãoSobreposições interativas que acionam uma ramificação — veja Ramificações abaixo.
startTimenãoOpcional. Substitui os limites de tempo da cena correspondente; o padrão é o início/fim da cena.
endTimenãoOpcional. Substitui os limites de tempo da cena correspondente; o padrão é o início/fim da cena.
ttsScript, ttsAudioUrl, ttsDurationMsnãoReservado. Os campos de esquema existem, mas a reprodução de TTS ainda não está conectada. Omita, a menos que esteja pré-populando para uma versão futura.

SlideHotspot

{
  "id": "h1",
  "label": "Como calculamos isso?",
  "target": "market-deep-dive",
  "region": { "x": 60, "y": 10, "w": 35, "h": 20 }
}
CampoObrigatórioNotas
idsimÚnico dentro do slide.
labelsimTexto do tooltip / botão mostrado ao público.
targetsimDeve corresponder a um SlideSequence.id em slideSequences.
regionnãoCaixa delimitadora percentual do slide: {x, y, w, h} em 0-100. Omita para renderizar o hotspot como um botão de slide inteiro.

SlideSequence

{
  "id": "market-deep-dive",
  "label": "Metodologia de dimensionamento de mercado",
  "slides": [{ "sceneId": "mkt-1" }, { "sceneId": "mkt-2" }]
}

slides dentro de uma sequência usa a mesma forma SlideRef que a linha principal. Fragmentos e hotspots aninhados são permitidos.


Regras de escrita de slides

Estas são restrições rígidas, não sugestões. Um slide que as violar será substituído imediatamente quando um revisor o vir.

  • O título é uma afirmação de frase completa, não um rótulo. Escreva "PMEs gastam 14 horas/semana em agendamento manual" não "Problema de agendamento". A frase deve fazer sentido sozinha se o visual for ignorado.
  • Uma ideia + um visual por slide. Se você estiver tentado a adicionar um segundo grupo de marcadores ou um segundo gráfico, divida o slide.
  • Comece pela conclusão. O ponto mais forte vem primeiro — no slide e na ordem do deck. Investidores leem da esquerda para a direita, de cima para baixo, e param.
  • Dimensionamento de mercado apenas bottom-up. Nunca escreva "TAM de $50B" sem mostrar a matemática. Construa a partir da economia unitária: contas × ACV, ou transações × take-rate.
  • Tamanho mínimo de fonte equivalente a 30pt. Em 1920×1080, um título tem 72-96px; o corpo do texto tem 48px. Nunca fique abaixo de 40px para qualquer texto que o público precise ler.
  • Pesquise no catálogo ativo antes de construir manualmente qualquer visual nomeado. Para cada aparência, efeito, gráfico, tratamento ou transição que um slide precisar — "linhas de varredura CRT", "glitch", "corrida de gráfico de barras", "varredura brilhante", "janela de terminal" — execute npx hyperframes catalog --query "<o visual, em inglês claro>" --json e leia os principais resultados antes de criar os clipes do slide. A pesquisa não precisa de nada instalado: nenhum projeto, nenhum add anterior, nenhuma conta. Ela classifica todo o registro hospedado (~400 blocos e componentes) de qualquer diretório. npx hyperframes add <nome> coloca o código-fonte do bloco no deck, onde você o personaliza no local. Isso se aplica com força extra ao portar uma página de origem: um bloco real é melhor do que a aproximação simplificada que as regras de portabilidade abaixo proíbem.

Portabilidade de páginas de origem

Ao converter uma página existente em uma apresentação de slides, a fidelidade à origem faz parte do contrato. Não substitua widgets específicos da origem por aproximações simplificadas, a menos que o usuário peça explicitamente por um redesign.

  • Preserve o design visual, a linguagem de movimento, o comportamento interativo, o comportamento de mídia e os recursos de apresentação da página original o mais fielmente possível na prática. Quando o sistema de apresentação de slides suportar o modo apresentador, inclua notas do apresentador usando o comportamento de notas editáveis compartilhadas, em vez de uma implementação específica do deck.
  • Porte os visuais mecânicos do DOM/CSS/JS da origem o mais exatamente possível na prática: players personalizados, visualizadores de canvas, linhas do tempo, cabeças de reprodução, hastes, círculos em expansão, estados de hover e outros detalhes interativos devem sobreviver à conversão.
  • Trate elementos <video> / <audio> nativos como a fonte da verdade para qualquer cromo de mídia personalizado, visualizador de canvas, forma de onda, grade de batida ou cabeça de reprodução. Conecte os eventos de mídia da origem (play, pause, timeupdate, seeking, seeked, ended, ratechange, volumechange) e derive o estado visual de media.currentTime; não execute um temporizador separado que possa se afastar da reprodução real.
  • Cada <video> ou <audio> copiado com src deve ter atributos de temporização HyperFrames antes da validação: data-start e data-duration, mais data-has-audio="true" quando o áudio nativo audível deve ser preservado. Use o intervalo de tempo da cena para mídia específica do slide; para vídeos de evidência controlados pelo usuário que podem ser reproduzidos a partir de vários slides focados, use um intervalo de todo o deck. Não deixe preload="none" na mídia; use metadata ou auto.
  • Resolva os tokens de fonte da origem antes da validação. Se preservar fontes personalizadas da origem, adicione regras @font-face para arquivos de fonte locais/capturados. Se usar fallbacks do sistema, substitua declarações tokenizadas como font-family: var(--f-body) por pilhas concretas seguras para renderização, como system-ui, sans-serif ou ui-monospace, monospace; não deixe var(...) como o valor da família de fontes.
  • Audite a origem quanto a movimentos de página atípicos, especialmente comportamento impulsionado por scroll, wheel, toque, estado de hash, redimensionamento ou um loop requestAnimationFrame. Trate viewports fixos com camadas "world" traduzidas/escaladas, parallax, painéis fixos, scroll horizontal, linhas do tempo depuradas por scroll, snap de seção e câmeras de zoom para elemento como comportamento da origem. O scroll é frequentemente o gatilho de transição da origem, portanto, preserve a transição extraindo suas paradas de progresso, easing e estados de câmera/foco, e depois hospede esse movimento na navegação da apresentação de slides por meio de posições de timeline, fragmentos ou um hook de player/estrutura reutilizável. Wrappers independentes que pulam para pontos de retenção de slide ainda precisam de um hook de transição de câmera de navegação explícito; calcular transformações de câmera por slide não é suficiente. Não simule uma transição literal de rolagem para baixo da página dentro do slide; o visualizador deve sentir uma viagem/zoom de câmera de um ponto focal para outro, não ver uma página da web sendo rolada. Mantenha cada movimento de câmera de slide para slide contínuo: evite paradas de rota intermediárias que invertam a direção x/y ou reduza o zoom de forma descontrolada.

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]

Habilidades Relacionadas