Pular para o conteúdo
Skillpedia
Interfaces (UI/UX)280 mil · #86

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

https://github.com/affaan-m/ECC/blob/main/pi/core/skills/motion-advanced/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/affaan-m/ECC/blob/main/pi/core/skills/motion-advanced/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-advanced

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/motion-advanced/SKILL.md -o SKILL.md
Conteú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 useAnimate com async/await seguro 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 + useTransform computa valores derivados sem acionar novas renderizações.
  • Sequências useAnimate são imperativas e seguras contra interrupções — chamar animate() 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

  1. Interações de arrastar devem ser testadas em dispositivos de toque, não apenas em mouse. A prop drag funciona em ambos, mas a sensação e o limite diferem.
  2. Animações infinitas devem pausar quando document.visibilityState === "hidden". Abas em segundo plano não devem consumir GPU/CPU.
  3. O limite de deslize deve ser explícito. Nunca infira intenção apenas pela velocidade; combine verificações de offset + velocity.
  4. A ref de escopo useAnimate deve ser anexada a um elemento DOM montado. Chamar animate() antes da montagem falha silenciosamente.
  5. 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á.
  6. Todos os valores de token são importados de motion-foundations. Sem números inline.
  7. Hooks personalizados devem lidar com a limpeza. Cada window.addEventListener precisa de um removeEventListener correspondente no retorno do useEffect.
  8. 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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas