Communitygithub.com

hyperframes-keyframes

Keyframes são um contrato de pose: estados visíveis, identidade contínua do sujeito, tempo de execução seguro para busca e pixels verificados.

O que é hyperframes-keyframes?

Esta skill define o contrato de keyframes para o sistema HyperFrames, um conjunto de ferramentas e convenções para criar animações e transições visuais determinísticas, seguras para busca (seek-safe) e verificadas por pixels. Ela estabelece um conjunto rigoroso de regras para a criação de keyframes, abrangendo desde a escolha do mecanismo correto (GSAP, CSS Keyframes, Anime.js ou WAAPI) até a verificação de que a animação resultante corresponde exatamente ao prompt do criador. A skill é especialmente útil para desenvolvedores e criadores que precisam de animações previsíveis e de alta qualidade em sistemas baseados na web, evitando problemas comuns como loops infinitos, temporizadores ou motion assíncrono. Ela funciona fornecendo guias claras sobre como criar poses ladder (escadas de pose), usar canais visuais em vez de canais de layout, e verificar o resultado com ferramentas de linha de comando como `hyperframes lint`, `hyperframes check` e `hyperframes keyframes`. A skill também define limites claros entre keyframes (motion visual) e edição temporal (montagem de clipes), que pertence ao `/hyperframes-core`, garantindo que cada componente do sistema tenha uma responsabilidade bem definida.

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

Perguntar na sua IA favorita

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

Documentação

HyperFrames Keyframes

Keyframes são um contrato de pose: estados visíveis, identidade contínua do sujeito, tempo de execução seguro para busca e pixels verificados.

Use hyperframes-animation para receitas de cena amplas. Use hyperframes-cli para documentação completa de comandos. Use references/keyframe-patterns.md apenas ao escolher mecanismos de implementação, não estilo visual.

Limite de edição do criador

Keyframes possuem o motion visual, não a montagem de clipes. Cortes abruptos de intervalo de origem, corte, emenda e reordenação pertencem ao /hyperframes-core: autor um elemento de mídia por intervalo mantido, posicione-o com data-start e data-duration, e selecione seu deslocamento de origem com data-media-start. Intervalos adjacentes formam um corte abrupto. Um crossfade usa clipes sobrepostos em faixas diferentes mais keyframes de opacidade visual; fades de som usam /hyperframes-audio.

Solicitação do criadorMecanismo verdadeiro
Punch-in / punch-outKeyframe scale com x/y ou translação percentual em um wrapper visual/crop sem timeline dentro do clipe. Use um tween curto/set para um punch duro e um tween para um movimento suave.
Zoom suave multi-estado ou reenquadramentoMantenha um wrapper de sujeito ativo e autor múltiplos estados de zoom/reenquadramento como uma escada de pose com easing por segmento.
Pan, reenquadramento ou movimento Ken BurnsAnimar translação do wrapper mais escala. A geometria é de autoria; isso não é rastreamento facial ou reenquadramento semântico automático.
Movimentos de câmera encadeadosEncadeie beats de transformação rotulados em uma timeline registrada segura para busca.
Match cut ou whip pan/hyperframes-animation possui a transição visual; /hyperframes-registry fornece primitivas; keyframes preservam a geometria, direção e velocidade de autoria. Não há descoberta automática de molduras correspondentes.
Reenquadramento com crop e máscaraInterpole clip-path ou uma máscara em um wrapper visual interno para cortar/reenquadrar sem alterar o tempo da fonte. Keyframes de polígono podem formar uma transição de polígono/máscara.
Corte de wipe direcional ou corte íris/revelaçãoAnime um limite de máscara/clip em clipes visuais sobrepostos; /hyperframes-animation possui a coreografia da transição.
Transição de tela divididaMantenha ambos os clipes visuais posicionados pelo core, então keyframe seus wrappers de crop/máscara internos e geometria do divisor.
Retemporização constante da fonte/hyperframes-core possui data-playback-rate normalizado (0.1..5) para imagem segura para renderização e som com preservação de tom. É constante para todo o elemento de mídia.
Rampas de velocidade da fonteNão suportado: não há envelope de taxa de reprodução variável no tempo. Pré-processe um ativo de mídia derivado, então coloque-o através do core.
Congelamento / pausaUma pose visual, quadro final da fonte ou subcomposição finalizada pode segurar. Congelamento arbitrário no meio da fonte não é suportado; pré-processe um segmento derivado/estático, coloque-o como seu próprio clipe, então retome com outro intervalo de origem.

Ao editar imagem e som juntos, carregue /hyperframes-core, esta skill para motion visual, e /hyperframes-audio para fades, crossfades, automação de volume, ducking/carve, ou efeitos nas faixas posicionadas.

Um tratamento de transição visual ou corte não é um corte temporal ou emenda de origem. /hyperframes-core possui a timeline, o tempo do clipe e os intervalos de origem; keyframes apenas animam a transição visível ou o corte em wrappers dentro desses clipes. Para receitas combinadas de imagem/som copiáveis, use /hyperframes-core → references/creator-editing-recipes.md.

Procedimento

  1. Identifique o sujeito animado, estados visíveis, estado final e tempo de execução.
  2. Escolha o menor mecanismo que comprove o prompt. Leia references/keyframe-patterns.md apenas se o mecanismo não estiver claro.
  3. Autor keyframes seguros para busca no tempo de execução declarado. Construa sincronamente e registre a instância de execução.
  4. Verifique com hyperframes lint, hyperframes check, hyperframes keyframes, um --shot focado e snapshots nos tempos de prova.
  5. Se a prova falhar, corrija os keyframes de origem e reexecute o menor diagnóstico falho antes de renderizar.

Contrato

  • Nomeie o sujeito em movimento.
  • Nomeie as poses necessárias para provar o movimento pretendido, incluindo o estado final.
  • Keyframe canais visíveis, não estado auxiliar oculto.
  • Preserve a identidade do objeto quando a continuidade importar.
  • Crossfade apenas quando o movimento pretendido for substituição ou dissolução.
  • Segure estados legíveis ou semânticos o tempo suficiente para serem vistos.
  • O quadro final é parte da animação, não uma limpeza.
  • Não reinicie para o repouso a menos que solicitado.
  • Não termine em preto a menos que solicitado.
  • Se estiver editando uma cena inicial, preserve layout, cópia, ativos, cores e estado final, a menos que seja solicitado a redesenhar.

Regras de Execução

GSAP:

  • construir sincronamente no carregamento da página
  • use gsap.timeline({ paused: true })
  • registre como window.__timelines[compositionId]
  • a chave de registro deve corresponder a data-composition-id
  • não chame tl.play() para motion crítico de renderização
  • mantenha repetições finitas

CSS keyframes:

  • duração finita e contagem de iterações
  • atraso determinístico
  • animation-fill-mode: both
  • use data-start quando o tempo pertence a um clipe

Anime.js:

  • crie sincronamente
  • autoplay: false
  • duração finita e loops
  • empurre cada instância para window.__hfAnime

WAAPI:

  • duration finita
  • fill: "both"
  • construção determinística
  • a superfície de texto não lista WAAPI; verifique com --shot (que busca WAAPI) e snapshots

Nunca use para motion crítico de renderização:

  • Date.now()
  • performance.now()
  • Math.random() sem semente
  • gatilhos de hover/scroll
  • temporizadores
  • timelines criadas assincronamente
  • requestAnimationFrame não registrado
  • loops 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;

Use rótulos para estados semânticos. Use parâmetros de posição em vez de atrasos encadeados. Use immediateRender: false para tweens from()/fromTo() posteriores que tocam a mesma propriedade.

Formas de Keyframe

  • Array de keyframes: escada de pose com duração/easing por etapa.
  • Keyframes percentuais: tempo exato dentro de um tween.
  • Arrays de propriedade: mudanças multi-parada compactas.
  • ease: "none" no pai quando cada parada carrega seu próprio easing.
  • easeEach quando cada segmento deve compartilhar a mesma sensação.

Não copie distâncias numéricas ou tempo de exemplos. Derive-as da geometria e duração reais da composição.

Para um sujeito se movendo entre duas caixas, prefira um tween de transformação contínua ou FLIP. Divida x/y/scale em vários keyframes com easing apenas quando o espectador deve sentir beats distintos; cada segmento muda a velocidade e pode ser lido como um soluço.

Canais

Prefira canais visuais/compositor: x/y/z, xPercent/yPercent, scale, rotationX/Y/Z, skew, transformOrigin, svgOrigin, opacity, autoAlpha, clip-path, máscaras, variáveis CSS, valores SVG path/dash, transformações de câmera, uniformes de shader.

Evite canais de layout/ciclo de vida: top/left/right/bottom, width/height, margin/padding, display, visibility, criação tardia de DOM, sobreposições auxiliares fazendo motion do sujeito.

Para mudanças de visibilidade, use autoAlpha na timeline GSAP registrada e buscável, ou um tl.set() com duração zero em um limite explícito. Alveje apenas um elemento que não seja clipe ou um wrapper dentro do clipe; nunca alveje o .clip em si. Nunca faça tween de duração com visibility bruto, e nunca faça tween com display.

Escolha de Mecanismo

Escolha o menor mecanismo que comprove o prompt:

NecessidadeMecanismo
Mesmo sujeito muda de caixa ou hierarquiaelemento compartilhado / FLIP
Sujeito viaja por uma rota visívelpath travel
Traço cresce ou traçastroke draw
Forma se transforma em outra formashape interpolation
Limite de revelação é visívelclip, máscara, ou uniforme de shader
Muitos itens se movem com ordemstagger / atraso indexado
O próprio texto se movesubdivisão de linha, palavra, caractere ou banda
Superfície dobra, estica ou cortacontra-transforma pai/filho
UI tem estadosmáquina de estado explícita
Cena tem profundidadeDOM 3D, Three.js, ou keyframes de câmera/objeto WebGL

Mecanismos podem combinar, mas cada um deve esclarecer a ideia. Decoração não é prova.

Tempo

  • Antecipação apenas quando esclarece causa ou direção.
  • Aceleração deixa o repouso.
  • Prova de pico mostra o mecanismo inequivocamente.
  • Follow-through vende energia e direção.
  • Overshoot apenas quando o sujeito deve parecer elástico ou tátil.
  • Viagem de path a velocidade constante geralmente precisa de ease: "none".
  • Estados discretos de UI geralmente precisam de um sharp ease-out.
  • Elementos repetidos precisam de deslocamentos ordenados, não tempo idêntico.
  • Travas finais precisam de segurações mais longas do que poses de transição.
  • Suavidade significa velocidade contínua no mesmo sujeito.
  • Não sobreponha tweens que escrevem a mesma propriedade de transformação, a menos que a sobreposição seja intencional e verificada.
  • Evite animar grandes mudanças de clip-path/máscara enquanto a mesma superfície hero também está escalando ou viajando; use revelações aninhadas depois que o movimento principal se estabelecer.

Texto

Preserve caixas de linha, espaçamento entre palavras, legibilidade e ajuste final. Se o texto se move internamente, mova os glifos ou bandas mascaradas, não apenas decorações ao redor do texto. Snapshots de quadros legíveis.

SVG

Para crescimento de traço, prefira DrawSVGPlugin, depois stroke-dasharray/stroke-dashoffset. Para interpolação de forma, prefira MorphSVGPlugin; converta primitivas para paths quando necessário e divida silhuetas complexas em partes mais simples.

3D

Escala sozinha é falsa profundidade. Use perspectiva em um pai estável, transform-style: preserve-3d, viagem em z, rotação, movimento de câmera/mundo, oclusão e ordem de camada quando objetos se cruzam.

Use um ou dois ângulos de diagnóstico que exponham a relação de profundidade. Se a prova angulada não mostrar cruzamento de profundidade, melhore z/câmera/oclusão.

Canvas / WebGL

Keyframe posição da câmera, alvo da câmera, transformação do objeto, opacidade do material, uniformes de shader e intensidade de pós-processamento através de estado determinístico. Renderize a partir do tempo HyperFrames. Use --ghost porque caixas de marcador não podem ver motion interno do canvas.

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

Escolha <selector> para o sujeito animado real. Escolha <times> para o primeiro quadro, poses de prova, final-menos-seguração e final exato. Escolha <angle> apenas quando a profundidade deve ser provada.

FerramentaProva
keyframesalvos, paradas explícitas, paths, traços, movimento composto pai/filho, paradas CSS, registro Anime
--shotfantasmas, forma da rota, espaçamento temporal, projeção DOM 3D, prova de seletor focado
--layout stripmovimento no lugar, sobreposições, contato, escala/opacidade sutil, ondas de texto
--ghostcanvas, WebGL, motion de shader, 3D renderizado
snapshot --atmáscaras, legibilidade de texto, estado completo, trava final, cauda preta/reset

Se a prova do seletor parecer errada:

  1. reexecute --json
  2. encontre o alvo animado real
  3. atire nesse alvo
  4. snapshot de quadros completos
  5. confie em pixels pintados sobre logs

Leitura de Diagnóstico

flat significa que não há poses intermediárias explícitas. keyframes significa que paradas explícitas existem. `m

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

Habilidades Relacionadas