motion-foundations
Ajuda seu agente a configurar as bases para animações em interfaces. Define regras e padrões para animações funcionarem bem em diferentes dispositivos.
O que ela faz
Esta ferramenta ajuda a configurar animações em sites feitos com React ou Next.js. Ela define regras e valores básicos para que as animações funcionem bem em diferentes dispositivos e para todos os usuários, incluindo aqueles que preferem menos movimento.
Quando usar
- ✓Ao iniciar um novo componente animado.
- ✓Ao definir as configurações de velocidade e 'suavidade' das animações.
- ✓Ao garantir que animações não atrapalhem usuários com preferência por menos movimento.
Exemplo do que pedir para a IA
“Configure as animações básicas para o meu site.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ela cria um conjunto de 'tokens' (valores pré-definidos para tempo, distância, etc.) e regras. Isso garante que as animações sejam consistentes, acessíveis e seguras para carregar em servidores.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill motion-foundationsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/motion-foundations/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Fundamentos de Movimento
A camada base do sistema de movimento. Define cada valor, restrição e
regra que as habilidades downstream (motion-patterns, motion-advanced) herdam.
Carregue esta habilidade antes que qualquer trabalho de animação comece.
Quando Ativar
- Iniciando qualquer componente animado do zero
- Configurando tokens, predefinições de mola ou valores de easing
- Implementando suporte a
prefers-reduced-motion - Depurando incompatibilidades de hidratação de estados iniciais de animação
- Avaliando se uma animação deve existir
Saídas
Esta habilidade produz:
- Um objeto
motionTokenscompartilhado (duração, easing, distância, escala) - Um mapa de predefinições
springscompartilhado (5 configurações nomeadas) - Um portão
shouldAnimate()usado por todos os componentes - Padrões de animação compatíveis com acessibilidade via
useReducedMotion - Estados iniciais seguros para SSR com zero avisos de hidratação
Princípios
O movimento deve fazer pelo menos uma das seguintes coisas ou deve ser removido:
- Guiar a atenção
- Comunicar o estado
- Preservar a continuidade espacial
A responsividade sempre supera a suavidade. Uma animação de 60 fps que causa atraso na entrada é pior do que nenhuma animação.
Regras
Estas são inegociáveis. Elas se aplicam a cada componente do sistema.
- Use apenas
motion/react. Nunca importe deframer-motion. Nunca misture os dois na mesma árvore. initialdeve corresponder à saída do servidor. Se o servidor renderizaropacity: 1, a propinitialtambém deve seropacity: 1. Sem exceções.- Movimento reduzido substitui tudo. Quando
useReducedMotion()retornatrueouprefersReducedétrue, todas as transformações são desabilitadas. Transições de opacidade de ≤ 0,2s são o único fallback permitido. - Nunca anime propriedades de layout.
width,height,top,left,margin,paddingsão banidos deanimate. Use apenastransformeopacity. - Todos os valores de token vêm de
motionTokens. Durações e easings codificados em arquivos de componentes são proibidos. - Todas as configurações de mola vêm do mapa
springs. Valores inline destiffness/dampingsão proibidos. "use client"é obrigatório em todos os arquivos que importam demotion/react.- Nunca leia
windowounavigatorno nível do módulo. Sempre proteja comtypeof window !== "undefined".
Orientação para Decisão
Escolhendo uma duração
| Token | Use quando |
|---|---|
instant |
Exibição/ocultação de tooltip, anel de foco, atualização de badge |
fast |
Feedback de botão, troca de ícone, alternância de chip |
normal |
Abertura de modal, expansão de card, entrada de elemento de página |
slow |
Entrada de herói, transição de página inteira |
crawl |
Narrativa deliberada; use com moderação |
Escolhendo uma mola
| Preset | Use quando |
|---|---|
snappy |
UI padrão — botões, chips, itens de navegação |
gentle |
Cards, modais, painéis chegando suavemente |
bouncy |
Momentos lúdicos — estados vazios, onboarding |
instant |
Tooltips, popovers, dropdowns |
release |
Liberação de arrastar — sensação natural de física |
Quando desabilitar a animação completamente
Desabilite (faça shouldAnimate() retornar false) quando:
prefersReducedétrueisLowEndétruee a animação não é essencial- O elemento está fora da tela e nunca entrará na viewport
- A animação é puramente decorativa, sem propósito de UX
Conceitos Principais
Sistema de tokens
// lib/motion-tokens.ts
export const motionTokens = {
duration: {
instant: 0.08,
fast: 0.18,
normal: 0.35,
slow: 0.6,
crawl: 1.0,
},
easing: {
smooth: [0.22, 1, 0.36, 1],
sharp: [0.4, 0, 0.2, 1],
bounce: [0.34, 1.56, 0.64, 1],
linear: [0, 0, 1, 1],
},
distance: {
xs: 4,
sm: 8,
md: 16,
lg: 24,
xl: 48,
},
scale: {
subtle: 0.98,
press: 0.95,
pop: 1.04,
},
}
export const springs = {
snappy: { type: "spring", stiffness: 300, damping: 30 },
gentle: { type: "spring", stiffness: 120, damping: 14 },
bouncy: { type: "spring", stiffness: 400, damping: 10 },
instant: { type: "spring", stiffness: 600, damping: 35 },
release: { type: "spring", stiffness: 200, damping: 20, restDelta: 0.001 },
}
Flags de tempo de execução
// lib/motion-config.ts
export const motionConfig = {
isLowEnd() {
return (
typeof navigator !== "undefined" &&
navigator.hardwareConcurrency <= 4
)
},
prefersReduced() {
return (
typeof window !== "undefined" &&
window.matchMedia("(prefers-reduced-motion: reduce)").matches
)
},
…
Perguntas frequentes
O que são 'tokens' de animação?
São valores pré-definidos para coisas como duração (quão rápido algo se move), distância (o quão longe se move) e suavidade (como o movimento acelera e desacelera).
Por que é importante 'prefers-reduced-motion'?
Algumas pessoas preferem que os sites tenham menos animações por motivos de acessibilidade ou para evitar distrações. Essa configuração respeita essa preferência.
O que significa 'SSR-safe'?
Significa que as animações são configuradas para carregar corretamente mesmo quando o site é processado em um servidor antes de chegar ao navegador do usuário, evitando erros visuais.
Detalhes
Descrição original do autor
Motion tokens, spring presets, performance rules, device adaptation, accessibility enforcement, and SSR safety for React / Next.js using motion/react. Foundation layer — all other motion skills depend on this. Use when setting up motion tokens, spring presets, reduced-motion handling, or SSR-safe animation in React or Next.js.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #87
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
frontend-design
Orienta seu agente na criação de interfaces visuais únicas e intencionais. Ajuda a definir a direção estética e a escolher tipografia.
anthropics/skills
paperclip-capsules
Ajuda seu agente a criar visuais para 'cápsulas'. Isso inclui arte para agentes, status e identificação visual.
paperclipai/paperclip
wireframe
Faz seu agente desenhar telas de forma simples. É útil para planejar o visual de aplicativos antes de criá-los.
paperclipai/paperclip