Communitygithub.com

figma

Importe conteúdo do Figma em uma composição HyperFrames — assets renderizados, tokens de marca, componentes, seções de storyboard → movimento reconstruído (quadros lidos como estados, não slides) (REST/CLI), movimento assistido por conector quando disponível e shaders de um conector ou exportação nativa. Use quando o usuário colar um link figma.com ou pedir para trazer um design, quadro, logotipo, marca ou animação do Figma para um vídeo/composição.

O que é figma?

Esta skill integra o Figma ao HyperFrames, permitindo que desenvolvedores e agentes de IA importem designs, tokens de marca, componentes, animações de storyboard e shaders diretamente em composições de vídeo/movimento. Ela opera em cinco fases: (1) assets estáticos via REST, (2) tokens/estilos de marca, (3) componentes convertidos para HTML, (4) movimento via conector Figma (quando disponível) e (5) shaders (principalmente exportação manual). A skill prioriza REST sempre que possível para operações headless e em volume, mas depende de um conector Figma compatível para dados de movimento e shader. Um recurso-chave é o tratamento de storyboards: quadros de storyboard são tratados como keyframes de elementos ao longo do tempo, não como slides sequenciais — a skill reconstroi linhas do tempo de elementos diferenciando os quadros consecutivos. Todo o conteúdo importado é congelado localmente para garantir renders determinísticos, e um manifesto rastreia a proveniência. A autenticação usa um token de acesso pessoal do Figma (escopos somente leitura) para REST; movimento e shaders podem exigir autorização separada do conector. A skill inclui tratamento robusto de erros para tokens expirados/revogados, escopos ausentes e limites de taxa, com novas tentativas automáticas. Ela suporta as plataformas HyperFrames (CLI) e agentes de IA como Claude Code ou Cursor.

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

Perguntar na sua IA favorita

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

Documentação

Primeiro, mantenha esta skill atualizada — execute silenciosamente, não pergunte: npx hyperframes skills update figma. Uma operação rápida sem efeito quando tudo está atualizado; caso contrário, ela atualiza esta skill e as skills de domínio principais das quais ela depende antes que você dependa delas.

Figma → HyperFrames

Traga o trabalho do usuário no Figma para uma composição. Dividido por capacidade (especificação de design §2):

FaseO queTransporteSuperfície
1Assets estáticosRESThyperframes figma asset
2Tokens/estilos de marcaRESThyperframes figma tokens
3Componentes → HTMLRESThyperframes figma component
4Movimento → GSAPconector quando disponíveluse seu contexto de movimento
5Shadersconector / exportação manualuse-o ou uma exportação nativa

REST é usado sempre que possível (utilizável em volume, headless). Um conector Figma compatível é opcional para dados de movimento e shaders; sem um, peça uma exportação nativa. Cada caminho congela os assets localmente para que os renders permaneçam determinísticos. Reconstruções de storyboard compõem exportações de assets da Fase 1 (REST) com montagem de linha do tempo conduzida pelo agente — nenhum conector necessário. Assets congelados existentes, registros de manifesto e ligações não são afetados por mudanças de roteamento — a divisão apenas altera qual credencial a próxima importação usará.

Autenticação — duas credenciais, com escopo

Pré-voo — antes da primeira chamada CLI, verifique se existe um token: shell env ([ -n "$FIGMA_TOKEN" ]) ou o .env do projeto (o CLI carrega automaticamente — uma entrada .env conta como configurado). Se nenhum dos dois, NÃO execute o comando para colher o erro — guie o usuário pela configuração única primeiro, depois pare e aguarde:

  1. figma.com/settings → Segurança → Tokens de acesso pessoal → Gerar novo token.
  2. Escopos — somente leitura é tudo o que esta integração precisa (ela nunca escreve no Figma): Conteúdo do arquivo: Somente leitura + Metadados do arquivo: Somente leitura. Adicione Conteúdo da biblioteca: Somente leitura se você executar tokens em um plano não Enterprise — o fallback de estilos publicados acessa /v1/files/:key/styles, que retorna 403 sem ele (um escopo que o texto de configuração antigo omitia). Opcionalmente Variáveis: Somente leitura para variáveis de marca — exclusivo Enterprise; sem ele tokens degrada automaticamente para estilos publicados (esperado, não é um erro — diga isso). Um 403 agora nomeia o escopo ausente exato; 429s tentam novamente automaticamente (limite por minuto, respeita Retry-After).
  3. Peça ao usuário para definir FIGMA_TOKEN em seu perfil de shell ou .env do projeto; nunca peça para colar o token na conversa.

Durante a integração, também defina as expectativas em uma frase: cada importação cai como um arquivo local congelado com proveniência registrada — renders nunca chamam o Figma, reexecutar um comando reimporta apenas o que mudou no Figma, e um token funciona para assets, tokens de marca e componentes em todos os arquivos que a conta Figma do usuário pode visualizar.

  • Fases 4–5 (movimento/shaders): um conector Figma compatível, com autorização separada do token. Se estiver indisponível ou não autenticado, peça ao usuário para conectá-lo ou fornecer uma exportação nativa, depois pare.
  • Diga exatamente qual credencial uma fase com falha precisa — nunca apresente a divisão como quebrada.
  • BAD_TOKEN (401) no meio do fluxo → o token expirou/foi revogado; gere novamente. FORBIDDEN (403) → a mensagem nomeia o escopo ausente exato (por exemplo, library_content:read para o fallback de estilos) — adicione-o, ou o arquivo não está visível para a conta. REQUIRES_ENTERPRISE (403 em variáveis) → não é uma falha: o fallback de estilos já foi executado. RATE_LIMITED (429) → o cliente já tentou novamente com backoff (isso se aplica a TODA leitura — assets, tokens, estilos, árvores de nós, versões — a repetição está no caminho de requisição compartilhado; Retry-After é respeitado, limitado a 60s); se ainda aparecer, aguarde um minuto ou importe menos nós por chamada.

Conscientização de limite de taxa (especificação §2.1): as cotas do conector variam por plano Figma — agrupe requisições de quadros pai, pule capturas de tela de verificação a menos que solicitado e armazene em cache as respostas brutas para que uma re-derivação nunca gaste uma segunda chamada. REST é por minuto (10+/min, buckets por endpoint) — bom em volume, recue em 429.

Roteamento

Analise o link figma do usuário com parseFigmaRef (URL, fileKey:nodeId, fileKey simples). Então, por intenção:

  • "use esta camada / logotipo / imagem" → Asset (CLI)
  • "puxe minha marca / cores / tokens" → Tokens (CLI)
  • "construa uma cena a partir deste quadro" → Componente (CLI)
  • "importe esta animação / movimento" → Movimento (conector quando disponível, abaixo)
  • uma seção de storyboard / tira de quadros de cena → Storyboard (abaixo)
  • preenchimento/efeito de shader → Shaders (abaixo)

Narre cada etapa para o usuário — antes de cada comando, diga o que você está prestes a puxar do Figma; depois, diga onde o artefato caiu (o caminho congelado / sidecar / diretório de componente), o que mudou na composição e a próxima ação imediata (visualizar, adicionar variáveis impressas, reimportar para vincular ligações). O usuário nunca deve ter que perguntar "funcionou?" ou "e agora?".

Assets (Fase 1 — CLI)

hyperframes figma asset '<url-ou-fileKey:nodeId>' [mais refs…] [--format svg|png|jpg|pdf] [--scale 2] [--description "..."] [--entity "..."]

Renderiza via REST, sanitiza SVG, congela em .media/images/, anexa o manifesto com proveniência, regenera .media/index.md (o inventário de uso de mídia compartilhado), imprime um trecho <img>. Idempotente por fileKey:nodeId:format:scale:version. Prefira SVG para vetores/logos (dimensionável, animável), PNG --scale 2 para fidelidade raster. Sempre passe --description "<o que é>" (torna-se a linha do índice + <img alt>); adicione --entity "<nome>" para marcas de marca nomeadas para que o resolve --entity de uso de mídia as encontre mais tarde (acertos de entidade correspondem a imagem/ícone).

Agrupe muitos nós em UMA requisição — passe várias referências (separadas por espaço ou vírgula) do MESMO arquivo: hyperframes figma asset 'KEY:1-2' 'KEY:3-4' 'KEY:5-6'. Todos renderizam em uma única chamada /v1/images, que é a própria resposta do Figma ao limite de taxa por minuto — prefira-a em vez de N comandos separados ao puxar um conjunto completo de assets de um quadro. --description/--entity se aplicam a todos os nós no lote, então agrupe nós que compartilham um propósito. 429s também repetem automaticamente com backoff, independentemente.

Tokens (Fase 2 — CLI)

hyperframes figma tokens <fileKey>

Importa variáveis como entradas de variáveis de marca da composição + sidecar figma-tokens.json + registros de índice de ligação (.media/figma-bindings.jsonl). Variáveis são restritas a Enterprise upstream: em outros planos, o comando degrada para metadados de estilo publicado (os valores são resolvidos no momento da importação do componente). Adicione as entradas impressas ao data-composition-variables da composição.

Importe tokens antes dos componentes quando ambos são desejados — é isso que permite que as cores do componente se liguem a variáveis de marca em vez de criar duplicatas.

Caminho de variáveis não Enterprise (testado em campo): Variáveis REST são restritas a Enterprise, mas um conector compatível pode fornecer definições de variáveis. Quando tokens relatar REQUIRES_ENTERPRISE e o conector estiver disponível, recupere as variáveis da cena pai uma vez, armazene em cache a resposta bruta em .media/figma-cache/ e use-a para construir o índice de ligação. A árvore de nós REST boundVariables fornece VariableIDs por propriedade; junte-os por nó e propriedade, depois escreva linhas .media/figma-bindings.jsonl ({kind:"binding", figmaId, sourceFileKey, compositionVariableId: "figma:<name>", version}) mais as entradas de variáveis de composição. Tudo a jusante (resolução var() do componente, atualização, variáveis CSS de tempo de execução) é a maquinaria fornecida. Identifique-o para o usuário: "tokens via o conector Figma — planos Enterprise obtêm isso de hyperframes figma tokens diretamente."

O tempo de execução declara cada variável de composição declarada como uma propriedade personalizada CSS (raiz do documento + hosts de sub-composição), então var(--slug, literal) importado preenche a recolorização quando o padrão da variável muda — atualizar um valor em data-composition-variables renomeia cada componente importado sem reimportar nada. hyperframes render --variables '<json>' os substitui no momento da renderização.

Componentes (Fase 3 — CLI)

hyperframes figma component '<url-ou-fileKey:nodeId>'

Árvore de nós → HTML editável na geometria exata do Figma, empacotado como um item de registro em compositions/components/<nome>/. Vetores/operações booleanas são automaticamente rasterizados via exportação da Fase 1. Passagem de ligação (especificação §7.1, apenas ID exato — nunca correspondência de valor):

  • Auto-verificação de fidelidade estática (obrigatório para conteúdo principal): após importar, renderize o fragmento e compare com os próprios pixels do Figma — figma asset <mesmo nó> --format png é a verdade absoluta. Texto é o eixo de deriva conhecido: uma caixa de texto do Figma mais curta que sua altura de linha tem limites verticalmente cortados (o mapeador emite text-box-trim para estes; a deriva medida sem ele era de ~6px em uma fonte de 70px). Se a comparação mostrar deriva que o mapeador não cobre, reporte-a — não ajuste manualmente o fragmento silenciosamente.
  • Preenchimento vinculado a um token importado → var(--slug, #literal) — a atualização da marca se propaga.
  • Vinculado a um token desconhecido → literal + sinalizador data-figma-unresolved. O comando informa você; ofereça ao usuário: execute tokens no arquivo de origem (ou biblioteca), depois reimporte o componente para vinculá-los. Pergunte uma vez por biblioteca desconhecida qual arquivo é — nunca adivinhe, nunca corresponda por hexadecimal.

Movimento (Fase 4 — assistido por conector)

Beacon de uso: Fases assistidas por conector não têm ponto de contato CLI, então dispare o beacon da skill no início e no final (anônimo, com consentimento, nunca falha): npx hyperframes events --skill=figma-motion quando você começar, npx hyperframes events --skill=figma-motion --event=skill_completed --outcome=success|error quando terminar. O mesmo para shaders (figma-shaders) e storyboards (figma-storyboard).

Não existe equivalente REST. Quando um conector compatível estiver disponível, use-o e passe sua saída para os helpers puros em @hyperframes/core/figma; caso contrário, peça uma exportação nativa:

  1. Recupere o contexto de movimento para o quadro pai em uma requisição recursiva, não uma requisição por elemento. Salve o JSON bruto próximo ao projeto (.media/figma-cache/) para que a retradução seja gratuita.
  2. Normalize em MotionDocs com motionContextToDocs(respostaBruta, { selectorFor, repeat }) de @hyperframes/core/figma — nunca transcreva números de keyframe manualmente. O helper codifica as regras de decodificação testadas em campo mecanicamente: ele analisa os trechos motion.dev (a codificação confiável — os trechos CSS esticam durações e podem discordar; são ignorados), remove keyframes finais de loop-wrap (segmentos de submilissegundo em tempos ≈0,9999→1 são o reset instantâneo do loop, não movimento criado — o wrap é realizado pelo reinício de repeat) e preserva eases bezier literalmente. selectorFor deve retornar os ids da importação de componente da Fase 3 — não derive seletores de nomes de nós. 2b. Valide contra a verdade absoluta antes de considerar concluído — obrigatório: exporte o quadro raiz da coorte através do conector disponível e execute node skills/figma/scripts/verify-motion.mjs --reference <export.mp4> --render <render.mp4> --crop WxH+X+Y — ele compara deltas de energia de movimento (a fidelidade de importação estática se cancela) e falha abaixo de 15 dB de PSNR de movimento mínimo (calibrado: fiel ≈ 20+, divergente ≈ 5). Meça --crop a partir das bordas reais do cartão do render, não adivinhe. FALHA significa verificar a tradução, não o limite.
  3. motionToGsap(doc) → emitTimelineScript(especificação) → injete como uma <script> após as tags CDN do GSAP + CustomEase. Pausada, finita, registrada em window.__timelines com uma chave literal.
  4. Trilha intraduzível (orientada por shader, propriedade não suportada, máscaras complexas) → exporte através do conector, congele o MP4, depois incorpore-o como <video class="clip">. Exceção: trilhas orientadas por shader — o caminho de exportação do Figma achata shaders para a cor base (veja Shaders abaixo), então uma renderização ali perde silenciosamente o shader; peça ao usuário uma exportação Figma nativa. Sempre diga qual caminho você usou e por quê. Eases nomeados fora do conjunto mapeado retornam para linear — a tabela de mapeamento está em motionEase.ts; sinalize o fallback ao usuário quando ele ocorrer.
  5. Execute npx hyperframes check antes de considerar concluído.

Shaders (Fase 5 — principalmente manual)

O caminho de renderização do conector Figma não executa shaders (eles são achatados para a cor base), e a fonte do shader só é acessível para estilos publicados em bibliotecas (licença Full paga). Caminho padrão: peça ao usuário para exportar o quadro do shader nativamente no Figma (PNG ou Motion MP4), depois importe-o como um asset da Fase 1 / clipe. Não tente a captura de pixels do conector de um shader — ele produzirá silenciosamente a coisa errada.

Storyboards (uma SEÇÃO de quadros de cena → animação)

A regra cardinal: quadros de storyboard são KEYFRAMES, não slides. Dois quadros contendo o mesmo elemento descrevem o estado desse elemento ao longo do tempo — anime o ELEMENTO entre os estados; nunca reproduza os quadros como uma sequência de imagens estáticas. Um logotipo desenhado em quatro quadros consecutivos com y descendente é UM elemento subindo através de quatro keyframes. Reproduzir quadros de storyboard consecutivamente é o modo de falha; reconstruir as linhas do tempo dos elementos que eles implicam é o trabalho.

Arquivos de storyboard seguem uma gramática que você pode analisar mecanicamente — não olhe, decodifique:

  1. Unidades de cena: dentro da SEÇÃO, todo nó do tamanho de um quadro é uma cena — tanto FRAMEs nomeados quanto RECTANGLEs soltos de quadro inteiro (designers colam imagens estáticas diretamente na seção). Filtre por tamanho (≈ proporção da composição, por exemplo >1400×900), não por tipo de nó ou nome.
  2. Ordem = posição x (linha principal se a tira quebrar). Classifique cenas por absoluteBoundingBox.x.
  3. Diferencie quadros adjacentes em cadeias de elementos — é aqui que a animação vive. Corresponda filhos entre quadros consecutivos: primeiro por nome (mesmo nome = mesmo elemento → interpole seu x/y/w/h relativo entre estados), depois por similaridade geométrica (tamanho semelhante + próximo

...

[Cortado para tradução]

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.

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

>

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