motion-advanced
Faz seu agente criar animações complexas em interfaces. Ajuda com efeitos como arrastar e soltar, gestos e animações de texto ou SVG.
O que ela faz
Esta ferramenta permite criar animações complexas e interativas para sites feitos com React ou Next.js. Ela ajuda a fazer elementos que se movem, respondem ao toque, ou mudam de forma, como desenhos que aparecem ou textos que digitam sozinhos.
Quando usar
- ✓Quando você quer que um item possa ser arrastado pela tela.
- ✓Para fazer textos aparecerem letra por letra ou palavra por palavra.
- ✓Ao criar desenhos animados em SVG ou botões que mudam ao passar o mouse.
Exemplo do que pedir para a IA
“Crie uma animação para que um card possa ser arrastado para os lados e desapareça se for arrastado muito longe.”
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
Por dentro, ela usa técnicas avançadas para controlar o movimento dos elementos na tela. Ela pode fazer animações de forma contínua ou em sequências, garantindo que tudo funcione suavemente e sem travar, mesmo em dispositivos com tela sensível ao toque.
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-advancedOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/motion-advanced/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.
Motion Avançado
Padrões de animação complexos, interativos e baseados em física.
Requer que motion-foundations seja configurado primeiro.
Use estes quando motion-patterns não for suficiente.
Quando Ativar
- Construindo folhas de arrastar para descartar, gestos de deslizar ou listas reordenáveis
- Animando texto palavra por palavra, caractere por caractere ou como um contador em tempo real
- Desenhando caminhos SVG, transformando ícones ou animando progresso circular
- Escrevendo um hook de animação personalizado (
useScrollReveal, botão magnético, seguidor de cursor) - Sequenciando animações de múltiplos passos imperativamente com
useAnimate - Construindo spinners, esqueletos de brilho, indicadores de pulso ou estados de botão de carregamento
Saídas
Esta habilidade produz:
- Interações de arrastar: cartões arrastáveis, folhas de arrastar para descartar, listas
Reorder.Group - Hooks de gestos: detecção de deslizar, pressionamento longo, contorno de pinça
- Componentes de animação de texto: revelação de palavras, máquina de escrever de caracteres, contador de números
- Animação SVG: desenho de caminho, transformação de ícone, anel de progresso de traço
- Hooks personalizados:
useScrollReveal,useHoverScale,useNavigationDirection,useInViewOnce - Sequências imperativas via
useAnimatecomasync/awaitseguro contra interrupções - Componentes de carregamento: spinner, brilho, ponto de pulso, barra de progresso, estado de carregamento do botão
Princípios
- Movimento baseado em física (
useSpring,springs.*) sempre parece mais natural do que baseado em duração para manipulação direta. useMotionValue+useTransformcomputa valores derivados sem acionar novas renderizações.- Sequências
useAnimatesão imperativas e seguras contra interrupções — chamaranimate()no meio do voo cancela a animação anterior automaticamente. - Valores de movimento (
useMotionValue,useSpring) são seguros para SSR e não causam erros de hidratação.
Regras
- Interações de arrastar devem ser testadas em dispositivos de toque, não apenas em mouse. A prop
dragfunciona em ambos, mas a sensação e o limite diferem. - Animações infinitas devem pausar quando
document.visibilityState === "hidden". Abas em segundo plano não devem consumir GPU/CPU. - O limite de deslize deve ser explícito. Nunca infira intenção apenas pela velocidade; combine verificações de
offset+velocity. - A ref de escopo
useAnimatedeve ser anexada a um elemento DOM montado. Chamaranimate()antes da montagem falha silenciosamente. - Valores de movimento não devem ser recriados na renderização.
useMotionValue(0)dentro do corpo de um componente está correto;new MotionValue(0)em uma renderização não está. - Todos os valores de token são importados de
motion-foundations. Sem números inline. - Hooks personalizados devem lidar com a limpeza. Cada
window.addEventListenerprecisa de umremoveEventListenercorrespondente no retorno douseEffect. - A transformação de SVG requer contagens de comandos de caminho iguais. Caminhos com estruturas de comando diferentes se ajustam em vez de interpolar.
Orientação de Decisão
Escolhendo a API avançada correta
| Cenário | API |
|---|---|
| Arrastar com física ao soltar | drag + dragTransition: springs.release |
| Lista reordenável por arrastar | Reorder.Group + Reorder.Item |
| Descartar com deslocamento de arrastar | Verificação de deslocamento drag="y" + onDragEnd |
| Deslizar para a esquerda/direita | Verificação de deslocamento drag="x" + onDragEnd |
| Pressionamento longo | Hook useLongPress |
| Valor suavizado ao longo do tempo | useSpring |
| Valor derivado de outro | useTransform |
| Sequência de múltiplos passos | useAnimate com async/await |
| Animação imperativa única | animate() de motion |
| Texto entrando palavra por palavra | Atraso em spans inline-block |
| Desenho de SVG em | pathLength 0 → 1 |
| Transformação de SVG | Tween de atributo d (comandos iguais) |
| Progresso circular | Tween strokeDashoffset |
Quando usar useSpring vs uma transição de mola
useSpring |
transition: springs.* |
|
|---|---|---|
| Usar para | Seguidor de cursor, valores rastreados por ponteiro | Mudanças de estado discretas |
| Atualizações | Contínuas, em cada quadro | Acionadas por mudança de estado |
| Interrupção | Suave — a física retoma da velocidade | Reinicia do valor atual |
Conceitos Principais
useMotionValue + useTransform
Computação reativa sem novas renderizações:
const x = useMotionValue(0)
const opacity = useTransform(x, [-200, 0, 200], [0, 1, 0])
// opacity updates every frame as x changes — no setState, no re-render
useAnimate
Retorna [scope, animate]. A ref de escopo deve ser anexada a um elemento DOM.
Chamadas animate() são seguras contra interrupções — chamar no meio do voo cancela a execução anterior.
const [scope, animate] = useAnimate()
…
Perguntas frequentes
Preciso saber programar muito para usar isso?
Não é preciso ser um expert, mas é recomendado ter um conhecimento básico de React ou Next.js, pois esta ferramenta é um complemento para esses ambientes.
Isso funciona em qualquer site?
Esta ferramenta é específica para projetos que usam as bibliotecas de desenvolvimento web React ou Next.js.
Posso criar animações que parecem físicas, como se estivessem em um mundo real?
Sim, a ferramenta permite criar animações que usam princípios de física, tornando os movimentos mais naturais e realistas, especialmente para interações como arrastar e soltar.
Detalhes
Descrição original do autor
Advanced motion patterns for React / Next.js — drag & drop, gestures, text animations, SVG path drawing, custom hooks, imperative sequences (useAnimate), loaders, and the full API decision tree. Requires motion-foundations. Use when building drag and drop, gestures, text or SVG animation, or imperative animation sequences in React or Next.js.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #86
- 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