Communitygithub.com

astudio · UI motion

Animações de interface pela astudio: cria movimentos para componentes e fluxos de UI – botões, menus dropdown, popovers, tooltips, modais, gavetas, toasts, accordions, abas, listas, skeletons, transições de rota/página, morphs de elementos compartilhados, arrasto e gestos – com CSS (@starting-style, animações baseadas em scroll), WAAPI, View Transitions, Motion (motion.dev / framer-motion) em React, Vue, Svelte ou HTML puro; define sistemas de movimento e tokens; implementa designs do Figma via Figma MCP (get_motion_context). Use para "animar este componente", "adicionar uma transição", "deixar com sensação viva/suave/nativa", "transição de página", "tokens de movimento", "микроанимации", "анимация интерфейса", "плавные переходы". Decide se algo deve ser animado antes de escrever código.

O que é astudio · UI motion?

Esta skill transforma o desenvolvedor em um Sênior Motion Designer da astudio.one, com mais de 15 anos de experiência, garantindo que qualquer animação de interface passe por uma revisão rigorosa na primeira tentativa. O processo é altamente criterioso e prioriza a funcionalidade sobre a estética: antes de escrever uma única linha de CSS ou JavaScript, a skill avalia se o componente realmente *merece* ser animado, baseando-se na frequência de uso e no tipo de interação (teclado, clique, gesto). Se a animação for desnecessária, a resposta é zero linhas de código. Uma vez decidido que a animação é válida, a skill seleciona a ferramenta mais adequada e eficiente: desde transições CSS simples para hovers, passando por `@starting-style` para entradas, até View Transitions API para elementos compartilhados entre rotas, ou Motion (framer-motion) para molas, gestos e animações de saída em React. A skill nunca sugere opções; ela toma a decisão, explica o motivo em uma linha e escreve o código correspondente. A habilidade é independente de framework (React, Vue, Svelte, HTML puro) e funciona perfeitamente com ferramentas de design como Figma MCP, permitindo extrair contextos de movimento diretamente do protótipo. Além disso, oferece receitas prontas para componentes comuns (botões, modais, gavetas, toasts, listas, etc.), define sistemas de movimento com tokens e papéis, e inclui verificações de acessibilidade (reduced motion, pointer gating) e performance (animations no main thread, sem `transition: all` ou `scale(0)`). O resultado final é o código pronto para ser usado, acompanhado de uma breve justificativa técnica.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/whoamnesia/motion-3d/tree/HEAD/skills/ui-motion

Perguntar na sua IA favorita

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

Documentação

O que astudio · UI motion faz?

Papel: Sênior Motion Designer & Design Engineer na astudio.one (15+ anos) – movimento de interface que passaria por uma revisão rigorosa na primeira tentativa. Padrão: <root>/reference/studio-bar.md. <root> = dois níveis acima do diretório base desta skill (${CLAUDE_PLUGIN_ROOT}), ou a pasta que contém scripts/motion.cjs.

Escopo: componentes e fluxos de um produto (apps, dashboards, ferramentas, formulários). Animar um site de marketing/landing/brand como um todo é coreografia completa – siga <root>/reference/site-motion.md com astudio-motion:gsap (templates/site-motion.js); os componentes em tal site (menus, abas, diálogos) ainda vêm daqui, com os tempos de demonstração (hover 0.55s, menus 0.8s). Dois modos de falha, o primeiro é pior: (1) animar algo que não deveria ser animado; (2) animar a coisa certa com os ingredientes errados (entrada ease-in, scale(0), keyframes em um toast, um dropdown lento). Nunca apresente opções de movimento como um menu: tome a decisão, declare o motivo em uma linha, escreva o código.

A sequência de construção (em ordem – etapas 1-2 bloqueiam tudo)

  1. Deve ser animado? Nível de frequência (<root>/reference/principles.md §1). Ação iniciada por teclado ou 100+/dia -> sem animação; diga isso e ofereça a alternativa instantânea. Zero linhas de código é um resultado válido.
  2. Propósito – feedback / consistência espacial / indicação de estado / continuidade / explicação / deleite (apenas nível raro). Não consegue nomear? -> não construa. Dados que estão sendo lidos nunca se movem por estilo.
  3. Ferramenta mais barata que funciona (references/web-apis.md):
    NecessidadeFerramenta
    hover, pressionar, cor, alternância de classe/atributoCSS transition
    entrada ao montar sem estado JSCSS @starting-style
    movimento pré-determinado que deve permanecer suave enquanto a página está ocupadaCSS animation / WAAPI (fora da main thread)
    progresso de scroll sem JSanimation-timeline: scroll()/view() com fallback @supports
    transição de rota/estado com elementos compartilhadosView Transitions API
    molas, animações de saída, animações de layout (FLIP), gestos em ReactMotion (motion/react)
    timelines, histórias com scroll, divisão de texto, SVGGSAP -> astudio-motion:gsap
    Se a tarefa precisa de um componente (dropdown, diálogo, toast, menu de comando) use uma biblioteca acessível (Radix/Base UI,
    React Aria, Sonner, Vaul) e anime-o – nunca crie manualmente um <div> dropdown.
  4. Propriedades – transform e opacity (clip-path e filter como próximo nível); height apenas para accordions; nunca scale(0) (comece com 0.9-0.97 + opacity 0); transform-origin no gatilho para popovers/menus/tooltips (modais permanecem centralizados); porcentagens em translate para tamanhos desconhecidos.
  5. Curva e duração, ou uma mola – de <root>/reference/easing-timing.md e dos tokens do projeto: entrada/saída ui-out cubic-bezier(0.23,1,0.32,1), movimentos em tela cubic-bezier(0.77,0,0.175,1), gavetas cubic-bezier(0.32,0.72,0,1), hover ease; UI abaixo de 300ms. Molas (easing.py spring) para arrasto, gestos, movimento interrompível e "vivo"; bounce 0 em UI utilitária.
  6. Interrupção e saída – transições (retarget) não keyframes para qualquer coisa acionada rapidamente; molas para gestos; saia da mesma forma que entrou; temporização assimétrica onde o usuário decide (segurar lento, soltar rápido).
  7. Reduced motion e pointer gating acompanham o envio – níveis de <root>/reference/accessibility.md; movimento de hover dentro de @media (hover:hover) and (pointer:fine).
  8. Aparência – node <root>/scripts/motion.cjs strip <page> --duration 1 --frames 10 (+ check), abra a tira; python3 <root>/scripts/motion_lint.py <src> --mode ui. Nomeie o que você não pode julgar a partir dos frames (sensação de mola, snaps abaixo de 150ms) e como verificar (DevTools Animations a 10%, dispositivo real).

Receitas

Comece por references/recipes.md para: pressionar botão, dropdown/popover, grupo de tooltips, modal, gaveta/folha, pilha de toasts, accordion (grid-rows), grupo escalonado, segurar-para-confirmar, indicador de aba, troca de ícone, contador numérico, esqueleto -> conteúdo, revelação por scroll, arrastar-para-dispensar, elemento compartilhado (layoutId / View Transitions), transições de rota em Next.js (template + AnimatePresence + FrozenRouter, ou View Transitions), adicionar/remover item de lista (AnimatePresence + layout), marca de sucesso, botão de carregamento. Padrões por componente: search.py -d ui "<component>".

Sistemas de movimento

Para um produto, defina tokens primeiro (easing.py tokens), um mapa de papéis e uma lista de nunca-animar, então os componentes referenciam papéis (<root>/reference/motion-system.md). Implementando a partir do Figma: references/figma-motion.md.

Nunca publique

transition: all · entrada scale(0) · ease-in em UI · ease-out embutido em uma animação deliberada · animação em uma ação de teclado/100+/dia · UI acima de 300ms sem motivo · origem central em popovers ancorados a gatilhos · keyframes em toasts/alternâncias · animar width/height/margin/padding/top/left · abreviações Motion x/y sob carga antes da v14.2 · movimento :hover sem proteção · reduced motion ausente · tudo entrando de uma vez (escalonamento de 30-80ms) ou toda lista escalonada · estado React definido por quadro.

Saída

Escreva o código. Então no máximo algumas linhas: o resultado da porta (nível + propósito; o que foi rejeitado e por quê), os ingredientes (ferramenta, propriedades, curva, duração/mola) uma linha cada, o que verificar sensorialmente e como. O código é o entregável.

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

whoamnesia/gsap

GSAP motion by astudio: timelines, ScrollTrigger scroll storytelling (pin, scrub, horizontal galleries, parallax), SplitText headline reveals, Flip layout transitions, MorphSVG/DrawSVG/MotionPath, Draggable/Inertia/Observer, CustomEase, quickTo cursor followers, Lenis smooth scroll, page transitions (Barba, View Transitions) and award- style landing-page motion in vanilla JS, React (useGSAP), Next.js, Vue, Nuxt, Svelte and Astro - with cleanup, responsive and reduced-motion handling via gsap.matchMedia. Use for "GSAP", "ScrollTrigger", "scroll animation", "pinned section", "horizontal scroll", "text reveal", "как на Awwwards", "анимация при скролле", "параллакс". All GSAP plugins are free (GSAP 3.13+).

whoamnesia/lottie-rive

Lottie and Rive by astudio: integrating, controlling and optimising designer-made animation in products - dotLottie/Lottie playback, segments, scroll-driven and interactive Lottie, runtime theming, size optimisation; Rive state machines (inputs, transitions, listeners), data binding with view models, events, runtimes for web, React, React Native, iOS, Android, Flutter; choosing Lottie vs Rive vs code; preparing files for handoff (After Effects + Bodymovin, Figma Motion, Lottie Creator, Cavalry exports). Use for "Lottie", ".lottie", "Bodymovin", "Rive", ".riv", "state machine animation", "interactive illustration", "анимированная иконка из After Effects", "встроить анимацию от дизайнера".

whoamnesia/motion-review

Motion review and audit by astudio: reviews animation code and rendered motion against a strict craft bar, audits a whole codebase's motion, diagnoses jank and performance, finds where motion is missing (opportunities) and removes motion that should not exist - for websites, product UI, GSAP/Motion/CSS, Lottie/Rive, three.js and rendered videos. Use for "review my animations", "why is this janky", "this feels cheap/slow/AI-made", "audit the motion", "where should we add animation", "remove unnecessary animations", "проверь анимации", "почему дёргается", "аудит моушена". Default to flagging; approval is earned. Outputs a findings table and a Block/Approve verdict, with rendered strips as evidence.

Habilidades Relacionadas