Communitygithub.com

empro-labs-animation-skill

Projeta e constrói microinterações, transições, loaders e animações scroll-linked em CSS, Web Animations API ou GSAP, com foco em especificação prévia e acessibilidade.

O que é empro-labs-animation-skill?

Esta skill permite que um agente de IA (como Claude Code, Cursor, Codex) projete e implemente animações web de forma estruturada e acessível. Ela segue um fluxo de duas etapas: primeiro, escreve uma especificação de movimento (ANIMATION.md) e aguarda aprovação do usuário; depois, gera o código de animação usando CSS, Web Animations API ou GSAP. A skill é especialmente útil para desenvolvedores que desejam adicionar microinterações, transições de página, efeitos de scroll, loaders e outros tipos de movimento a uma interface web, garantindo que o código respeite `prefers-reduced-motion` e um orçamento de desempenho. Ela é compatível com qualquer projeto web (HTML, React, Vue, Svelte, Next.js) e inclui verificações iniciais para reutilizar arquivos e tokens existentes, além de uma fase de auditoria final para garantir qualidade e acessibilidade, como a ausência de animações em props caras (width, height) e loops infinitos com controles de pausa.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/aj9599995/Empro-Lab-Animation-Skill/tree/main

Perguntar na sua IA favorita

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

Documentação

Empro Labs Animation Skill

Skill de design de movimento web. Duas etapas: escreva a especificação de movimento (ANIMATION.md) primeiro, depois escreva o código.

ANIMATION.md é um arquivo salvo no projeto. Pode ser editado manualmente, reutilizado em outros projetos e lido por outras ferramentas.

Os caminhos neste arquivo são relativos à pasta da skill (~/.claude/skills/empro-labs-animation-skill/). Use caminhos absolutos ao executar os scripts.

Solicitação

A solicitação do usuário do comando de barra:

$ARGUMENTS

Se a solicitação acima estiver vazia, faça uma pergunta: o que deve se mover, e para onde? Então inicie a Fase A.

Fluxo principal

Fase A  Compreender a entrada  ──→  Fase B  Escrever ANIMATION.md (usuário aprova)  ──→  Fase C  Implementar  ──→  Fase D  Auditar

Verificações iniciais (nesta ordem)

  1. O projeto possui ANIMATION.md? → Reutilize-o, edite-o ou reconstrua-o, conforme o usuário solicitar.
  2. Possui DESIGN.md (da skill de web-design)? → Herde suas cores, fontes e direção de estilo. Mantenha o movimento consistente com ele.
  3. Possui tokens de movimento (variáveis --motion-* ou um arquivo de movimento)? → Reutilize-os. Não invente novos valores.
  4. Já possui código de animação? → Execute python scripts/analyze_motion.py <project> --inventory primeiro, para saber o que existe antes de propor alterações.
  5. Nenhum dos acima → Fase A.

Fase A: Compreender

As entradas podem ser combinadas:

EntradaO que fazer
URL de referênciaExecute python scripts/capture_motion.py --url [URL] --output ./motion-capture. Leia capture.json para durações reais, easings, propriedades animadas e efeitos scroll-linked. Use top.png para o mood.
Vídeo ou captura de tela do movimentoDescreva o gatilho, a duração aproximada e a sensação da easing. Confirme os números com o usuário.
Palavras-chave ("snappy", "cinematic")Associe-as a uma personalidade em references/motion-personalities.md.
Nome de marca ("como Linear")Capture o site ao vivo se ele estiver acessível. Caso contrário, peça uma URL de referência. Não adivinhe o movimento de memória de uma marca.
Código existenteExecute o script de inventário e mantenha o que funciona.

A1. Personalidade (faça no máximo duas perguntas)

  • Sensação: calma, snappy, divertida ou cinematográfica?
  • Tipo de página: com muito conteúdo (o movimento não atrapalha) ou vitrine (o movimento pode liderar)?

Mostre um ou dois candidatos de references/motion-personalities.md, cada um com uma justificativa de uma linha. O usuário confirma.

A2. Nível de interação (obrigatório, não pule)

Consulte references/interaction-tiers.md.

NívelExperiênciaFerramentas
L1 MicroHover, foco, pressionar, alternâncias, pequenas mudanças de estadoApenas transições CSS
L2 CoreografadoEntrada e saída, listas escalonadas, modais, gavetas, mudanças de rota, loadersKeyframes CSS, Web Animations API ou uma timeline GSAP
L3 História de scrollRevelações scroll-linked, fixação, parallax, seções acionadas por uma timelineGSAP + ScrollTrigger, ou animações CSS scroll-driven com um fallback

L3 é limitado a duas seções fixadas por página. Cada seção da página declara seu nível na especificação.

A3. Stack

Verifique package.json e o framework (HTML puro, React, Vue, Svelte, Next.js). Escolha as ferramentas com references/tooling.md. Padrão: CSS e Web Animations API. Adicione GSAP apenas para L3 ou timelines complexas.

Fase B: Escrever ANIMATION.md

Siga references/animation-md-template.md. Dez seções:

  1. Personalidade & Princípios do Movimento
  2. Tokens de Movimento (durações, easings, distâncias)
  3. Inventário de Coreografia (tabela: elemento, gatilho, propriedade, duração, easing, atraso, fallback de movimento reduzido)
  4. Movimento de Componente (padrão, hover, focus-visible, active, disabled, enter, exit)
  5. Comportamento de Scroll
  6. Transições de Página & Rota
  7. Orçamento de Desempenho
  8. Acessibilidade
  9. O que Fazer e o que Não Fazer (pelo menos 8 itens, pelo menos 5 deles "Não Fazer")
  10. Dependências

Mostre um resumo ao usuário e aguarde aprovação. Em seguida, salve ANIMATION.md na raiz do projeto.

Fase C: Implementar

  1. Tokens em toda parte. Cada duração e easing é uma variável, como var(--motion-duration-base). Sem números mágicos dentro dos componentes.
  2. Anime apenas propriedades baratas. transform e opacity primeiro. clip-path e filter são permitidos em elementos pequenos. Nunca anime width, height, top, left, margin ou padding, a menos que ANIMATION.md registre uma exceção com um motivo.
  3. Movimento reduzido faz parte da primeira versão, não de um patch posterior. O movimento é removido e as mudanças de estado permanecem. Os tokens de distância vão para zero sob movimento reduzido, e o bloco prefers-reduced-motion em templates/motion-tokens.css mostra o padrão.
  4. Use os arquivos iniciais quando o projeto ainda não tiver uma camada de movimento: templates/motion-tokens.css e templates/reveal.js.
  5. Loops precisam de uma saída. Qualquer loop infinite para ou simplifica sob movimento reduzido. Qualquer loop com duração superior a cinco segundos ganha um controle de pausa.
  6. Limpe o JavaScript. Mate timelines GSAP e ScrollTriggers ao desmontar (use gsap.context() ou useGSAP). Desconecte observadores e remova listeners.
  7. Mantenha o movimento em um só lugar. Coloque os tokens em um arquivo e as receitas em módulos pequenos. Não espalhe valores de temporização entre componentes.

Fase D: Auditar

  1. Execute a auditoria estática: python scripts/analyze_motion.py <project> --strict. Corrija todos os erros. Revise todos os avisos e corrija-os ou justifique-os no ANIMATION.md.
  2. Execute as verificações no navegador:
    • Ative o movimento reduzido (DevTools → Rendering → prefers-reduced-motion: reduce). Confirme que não há movimento e que o conteúdo ainda está visível.
    • Reduza a CPU (4×) e grave o painel Performance enquanto o movimento é reproduzido. Procure por quadros longos.
    • Verifique a largura de um telefone (390 px). Procure por overflow horizontal de elementos animados.
  3. Percorra references/quality-checklist.md.
  4. Relate o que passou, o que falhou e o que você corrigiu.

Linhas vermelhas (cada item deve passar)

  • Toda animação no ANIMATION.md tem um fallback de movimento reduzido.
  • Apenas transform, opacity e exceções registradas são animados.
  • Todas as durações e easings vêm de tokens.
  • Todo loop infinite respeita o movimento reduzido, e qualquer loop com duração superior a cinco segundos tem um controle de pausa.
  • Nada pisca mais de três vezes por segundo.
  • O feedback interativo aparece em até 100 ms. Microanimações têm 250 ms ou menos. Transições de entrada e de rota têm 500 ms ou menos.
  • Feedback apenas no hover tem um estado de foco no teclado e um equivalente por toque.
  • Em larguras de 600 px ou menos, nenhum elemento animado causa scroll horizontal, e seções fixadas são desativadas ou simplificadas.
  • Animações JavaScript são limpas ao desmontar.

Índice de referências

Leia apenas os arquivos de que a fase atual precisa. Não carregue todos.

ArquivoConteúdoLer quando
references/animation-md-template.mdModelo de saída do ANIMATION.md (10 seções)Fase B
references/motion-principles.mdPor que e quando animar, regras de temporização e easingFases A e B
references/interaction-tiers.mdDefinições dos níveis L1, L2 e L3 com padrões de códigoFases A2 e B
references/motion-personalities.mdQuatro predefinições de personalidade com valores de tokenFases A1 e B
references/tooling.mdCSS vs WAAPI vs GSAP vs Motion vs View Transitions vs LottieFase A3
references/component-recipes.mdBotão, cartão, accordion, modal, gaveta, toast, abas, loadersFase C
references/gsap-recipes.mdTimelines GSAP, ScrollTrigger, matchMedia, limpeza em ReactFase C (apenas GSAP)
references/scroll-patterns.mdRevelação, barra de progresso, pilha fixa, parallax, scroll horizontalFases B (scroll) e C
references/performance.mdOrçamento de quadros, regras amigáveis ao compositor, downgrade móvelFases B e D
references/accessibility.mdMovimento reduzido, critérios de movimento WCAG, gatilhos vestibularesFases B e D
references/quality-checklist.mdLista de verificação de auditoria de 100 pontosFase D

Scripts

ScriptUsoNecessidades
scripts/analyze_motion.pyAuditoria estática do CSS e JS de um projeto. Encontra animações de layout, transition: all, loops infinitos, durações longas e falta de tratamento de movimento reduzido. --inventory lista os valores de temporização existentes.Python 3 (apenas biblioteca padrão)
scripts/capture_motion.pyRegistra animações declaradas e em execução em uma URL ao vivo, rola a página e verifica o que ainda é executado com movimento reduzido. Gera capture.json e top.png.Python 3, pip install playwright, python -m playwright install chromium

Ambos os scripts aceitam --help.

Modelos

ArquivoUso
templates/motion-tokens.cssVariáveis de token, keyframes base, regras de revelação e o bloco de movimento reduzido. Copie para o projeto.
templates/reveal.jsRevelação de scroll sem dependências com IntersectionObserver que respeita movimento reduzido.

Idioma

Escreva o ANIMATION.md e os resumos no idioma do usuário. Mantenha CSS, JavaScript e nomes de tokens em inglês.

Cadeia de fallback

  • O script de captura falha (sem Playwright, ou o site bloqueia o navegador) → peça uma captura de tela ou uma gravação curta de tela e construa a partir dessa descrição.
  • A referência usa uma biblioteca de animação que você não consegue identificar → diga isso e pergunte se deve combinar a sensação ou o movimento exato.
  • Nenhuma entrada → faça uma pergunta sobre a sensação e, em seguida, use a personalidade calma.

Habilidades Relacionadas