🧩 O que é / o que faz
Conceito Principal
O animation-designer é um skill especialista em animações web, transições e motion design. Ele domina dois ecossistemas complementares: Framer Motion (para React) e CSS Animations/Keyframes — produzindo desde micro-interações sutis até transições de página completas.
O skill cobre toda a cadeia de movimento em interfaces: fade ins, listas escalonadas (staggered), modais com spring physics, parallax ao rolar, contadores animados, loaders, drag-and-drop com inércia e notificações com badge animado. Cada padrão segue boas práticas de performance (GPU compositing, will-change, respeito ao prefers-reduced-motion).
Com Framer Motion
- ▸Fade in / slide na montagem do componente (
initial/animate/exit) - ▸Listas escalonadas com
staggerChildren - ▸Modais com spring physics (
AnimatePresence) - ▸Transições de página inteira
- ▸Drag and drop com
useDragControls - ▸Contadores animados com
useTransform
Com CSS / Tailwind
- ▸Keyframe animations customizadas
- ▸Classes Tailwind:
animate-spin,animate-bounce,animate-pulse - ▸Skeleton loaders com pulse
- ▸Scroll progress indicator
- ▸Parallax com
useScroll+useTransform - ▸Success checkmark e badge de notificação
🎣 Quando dispara
O Claude aciona o animation-designer quando detecta palavras-chave ligadas a movimento, transição ou motion design na sua requisição. O skill é especializado — não é chamado para qualquer CSS, apenas quando o foco é animação.
Timeline de gatilhos comuns
"adicione animação", "crie transição", "anime este componente", "motion design", "Framer Motion"
"modal que entra com slide", "botão com hover animado", "lista que aparece escalonada", "loading spinner"
"elemento aparece ao rolar", "parallax no hero", "barra de progresso de leitura"
"checkmark de sucesso", "badge com número que pulsa", "feedback visual no clique"
"navegação com fade entre rotas", "page transition com AnimatePresence", "rota que desliza"
Dica de ativação
Seja específico no pedido: diga qual componente animar, qual tecnologia preferir (Framer Motion ou CSS puro) e o efeito desejado. O skill produz código pronto para colar, não instruções genéricas.
🚀 Como melhora suas páginas
📊 Impacto em métricas de UX
prefers-reduced-motion✓ FAZER com animation-designer
- ✓Fade in de cards ao entrar na viewport (scroll-triggered)
- ✓Stagger em listas para guiar o olhar do usuário
- ✓Spring physics em modais para sensação tátil
- ✓Skeleton loader durante fetch de dados
- ✓Barra de progresso de leitura no topo da página
✗ EVITAR ao animar
- ✗Animar
width/heightdiretamente (causa reflow) - ✗Duração acima de 500ms em micro-interações
- ✗Esquecer
@media (prefers-reduced-motion) - ✗Animar
opacity + transformsemwill-changeem listas longas - ✗Looping infinito sem propósito (distrai e cansa)
A maior diferença está na percepção de resposta: uma interface que anima o feedback de ações (clique, hover, submit) parece mais rápida e confiável, mesmo que o tempo real seja idêntico. O skill garante que cada animação tenha propósito funcional, não apenas decorativo.
Performance first
O skill prioriza animar apenas propriedades compostas pelo GPU: transform e opacity. Nunca anima top/left/margin/width diretamente — isso dispara layout thrashing.
⚙️ Como funciona por dentro
- • Framer Motion
- • CSS Animations / Keyframes
- • React (
motion.*) - • Tailwind Animation Classes
- •
motion.div,AnimatePresence - •
useScroll,useTransform - •
useMotionValue - •
useDragControls
- • Fade In on Mount
- • Staggered List
- • Modal com spring
- • Page Transition
- • Scroll-triggered
- • Drag and Drop
Instalação
npm install framer-motion
// Uso básico em React
import { motion, AnimatePresence } from 'framer-motion';
Anatomia de uma animação
<motion.div initial={{ opacity: 0, y: 20 }} // estado inicial animate={{ opacity: 1, y: 0 }} // estado final exit={{ opacity: 0, y: -20 }} // saída (AnimatePresence) transition={{ duration: 0.3, ease: 'easeOut' }} > Conteúdo animado </motion.div>
✓ Boas práticas internas
- ✓Sempre inclui bloco
@media (prefers-reduced-motion) - ✓Usa easing semântico:
easeOutp/ entradas,easeInp/ saídas - ✓Duração 150–300ms para micro-interações, 300–500ms para transições
- ✓Preferência por
transform+opacity(zero layout thrashing)
✗ Padrões evitados
- ✗Animar
width,height,top,left - ✗Loops infinitos sem justificativa de UX
- ✗Duração acima de 500ms em interações frequentes
- ✗Ignorar estado de foco / acessibilidade de teclado
💬 Exemplo prático + Prompt pronto
Abaixo, um cenário real: você tem uma lista de cards de produto em React e quer que cada card apareça escalonado ao rolar a página. Eis o prompt otimizado e o código que o skill produz.
Prompt pronto para colar no Claude Code
Use o skill animation-designer para adicionar animação à lista de cards de produto no componente ProductList.tsx (React + Tailwind). Requisitos: - Cada card deve fade in + slide-up ao entrar na viewport (scroll-triggered) - Stagger de 0.1s entre cada card - Duração de 0.4s com easing easeOut - Usar Framer Motion (já instalado) - Incluir suporte a prefers-reduced-motion - Não alterar layout ou estilos existentes, só adicionar animação
Código resultante — Staggered List com scroll trigger
import { motion, useInView } from 'framer-motion'; import { useRef } from 'react'; // Variantes para o container (stagger) const containerVariants = { hidden: {}, visible: { transition: { staggerChildren: 0.1 } } }; // Variantes para cada card const cardVariants = { hidden: { opacity: 0, y: 24 }, visible: { opacity: 1, y: 0, transition: { duration: 0.4, ease: 'easeOut' } } }; export function ProductList({ products }) { const ref = useRef(null); const isInView = useInView(ref, { once: true, margin: '-60px' }); return ( <motion.ul ref={ref} variants={containerVariants} initial="hidden" animate={isInView ? "visible" : "hidden"} className="grid grid-cols-3 gap-4" > {products.map(p => ( <motion.li key={p.id} variants={cardVariants}> <ProductCard product={p} /> </motion.li> ))} </motion.ul> ); }
Pro tip: once: true
Passe once: true no useInView para que a animação dispare apenas na primeira vez que o elemento entrar na tela. Sem isso, o elemento re-anima toda vez que sair e voltar ao viewport — geralmente indesejável.
🧬 Combina com / Limites
Com quais skills compõe
O impeccable também aplica animações — especificamente transições CSS e micro-interações de polimento final (hover states, focus rings, transições de cor). A combinação é poderosa: impeccable cuida do polimento visual geral, animation-designer trata de motion design mais elaborado (scroll, spring, stagger, drag). Use impeccable primeiro para estabelecer a base visual; depois chame animation-designer para camadas de movimento mais complexas.
O algorithmic-art gera arte generativa com p5.js e canvas. A combinação com animation-designer cria visuais que unem geração procedural (formas, partículas, ruído Perlin) com motion design de interface (transições de entrada, feedback de hover). Caso de uso: backgrounds animados gerativos com p5.js + transições de componentes com Framer Motion na mesma página.
O 3d-animation-creator é o próximo módulo desta trilha: expande o motion design para o eixo Z, trabalhando com Three.js, WebGL e animações 3D no browser. A separação é clara: animation-designer domina o espaço 2D (UI, transições, scroll), enquanto 3d-animation-creator cuida de cenas tridimensionais, meshes, materiais e câmeras. Use juntos quando precisar de uma interface animada (2D) que integre um hero ou background 3D.
⚠️ Limites — quando NÃO usar
- ✗Vídeo e exportação de frames: para criar vídeos renderizados a partir de componentes React, use o skill remotion (módulo 3.3). animation-designer anima no browser, não exporta arquivos de vídeo.
- ✗Animações 3D complexas: cenas Three.js, meshes, shaders e câmeras orbitais são domínio do 3d-animation-creator, não deste skill.
- ✗Arte generativa com canvas/p5: geração procedural pura (fractais, ruído, sistemas de partículas matemáticas) é trabalho do algorithmic-art.
- ✗Projetos sem React/CSS: o skill é orientado a React (Framer Motion) e CSS moderno. Para animações em contextos nativos (iOS, Android) ou engines de game, não é a ferramenta certa.
Mapa de responsabilidades na Trilha 3
📋 Resumo do Módulo 3.1
O que você aprendeu
- ✓O animation-designer é especialista em animações web com Framer Motion e CSS
- ✓Cobre fade, slide, stagger, spring, scroll, parallax, drag e micro-interações
- ✓Dispara em pedidos explícitos de animação, motion design ou Framer Motion
- ✓Sempre inclui
prefers-reduced-motione usa transform+opacity para performance - ✓APIs principais:
motion.*,AnimatePresence,useScroll,useTransform,useDragControls - ✓Combina com impeccable (polimento), algorithmic-art (p5.js) e 3d-animation-creator (Three.js)
- ✓NÃO é substituto para vídeo (remotion) ou arte 3D (3d-animation-creator)
Trilha 3 — Mídia
Esta trilha cobre toda a camada de movimento e mídia: de animações de UI (3.1) até pipelines de vídeo com FFmpeg (3.4). Cada módulo expande o eixo de movimento em uma direção diferente.