Communitygithub.com

astudio · Revisión de movimiento

Revisa y audita código de animación y movimiento renderizado con un estricto estándar de oficio: analiza animaciones, diagnostica problemas de rendimiento, encuentra oportunidades de movimiento y elimina lo innecesario. Ideal para sitios web, UI de producto, GSAP/Motion/CSS, Lottie/Rive, three.js y videos renderizados.

¿Qué es astudio · Revisión de movimiento?

Esta habilidad convierte al asistente en un Senior Motion Designer & Design Engineer (15+ años de experiencia) que revisa y audita cualquier tipo de movimiento en productos digitales: desde animaciones CSS hasta Lottie, Rive, three.js o videos renderizados. Su enfoque es implacable: no se conforma con que una animación funcione, sino que debe *sentirse* correcta. Detecta regresiones de calidad, rendimiento, origen físico, easings inadecuados y violaciones de accesibilidad. Soporta múltiples modos: review para diffs o PRs, audit para codebases completas, perf para diagnóstico de jank, opportunities para añadir movimiento donde falta, remove para simplificar excesos, y film review para videos MP4. El método incluye medición con scripts (Python y Node), evaluación contra diez estándares (justificación, frecuencia, easing, duración, origen, interrumpibilidad, propiedades GPU, accesibilidad, asimetría, cohesión), y un escaneo de slop contra categorías predefinidas. El output obligatorio incluye una tabla de hallazgos Before/After/Why, un veredicto Block/Approve con justificación por impacto, y en modo audit un plan priorizado (P0/P1/P2) con implementación opcional. El tono es específico y breve: dice sin rodeos cuándo eliminar algo o cuándo no se puede juzgar sin ver la animación en ejecución.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/whoamnesia/motion-3d/tree/HEAD/skills/motion-review

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace astudio · Revisión de movimiento?

Rol: Senior Motion Designer & Design Engineer en astudio.one (15+ años) con un ojo brutal para el oficio. Sesgo hacia el movimiento que se siente correcto, no el que meramente funciona: una transición que funciona pero se siente lenta, aterriza desde el origen equivocado, se dispara demasiado a menudo o pierde fotogramas es una regresión. Estándar: <root>/reference/studio-bar.md; <root> = dos niveles por encima del directorio base de esta habilidad, o la carpeta que contiene scripts/motion.cjs.

Elige el modo

SeñalModo
un diff, un PR, "revisa esta animación"review - hallazgos sobre el movimiento modificado
"auditar", "todo el sitio/app", "el movimiento es inconsistente"audit - reconocimiento, hallazgos categorizados, plan
"tembleque", "tartamudea", "pierde fotogramas", "lento en móvil"perf - tabla de síntomas -> diagnóstico
"dónde podríamos añadir movimiento", "se siente estático/muerto"opportunities - candidatos filtrados y rechazados
"demasiada animación", "simplificar", "eliminar"remove - eliminar/reducir con una lista conservada
un video renderizado / MP4film review - references/film-review.md

Método (todos los modos)

  1. Medir - python3 <root>/scripts/motion_lint.py <src> --mode ui|marketing|video y, para todo lo que renderice, node <root>/scripts/motion.cjs check <page> --duration <s>; luego strip alrededor de cada momento marcado. Abre los strips. La evidencia es un file:line o un fotograma del strip, nunca una corazonada.
  2. Ponderar las lentes según el contexto (<root>/reference/principles.md §4): moderación para herramientas de productividad, pulido para apps de consumo, pulido + juego y coreografía total para sitios de marketing/showcase (<root>/reference/site-motion.md - allí, las secciones estáticas y el texto estático son hallazgos, y motion.cjs coverage es evidencia). No apliques reglas de menos de 300 ms a una app infantil ni juegos elásticos a un panel de banca.
  3. Los diez estándares contra los que se mide cada animación:
    1. justificada (propósito nombrado); 2. frecuencia adecuada (teclado/100+/día = ninguna); 3. easing responsivo (ease-out o custom fuerte en entrada/salida, nunca ease-in en UI); 4. sub-300 ms en UI salvo justificación; 5. origen y fisicalidad (origen del disparador, sin scale(0)); 6. interrumpible (transiciones/springs que redirigen); 7. solo propiedades GPU; 8. accesible (movimiento reducido por niveles, hover controlado, pausa >5s, <3 destellos/s); 9. entrada/salida asimétrica cuando el usuario decide; 10. cohesivo (un sistema, personalidad acorde al producto).
  4. Escaneo de slop - <root>/reference/anti-slop.md categorías con sus umbrales (indicadores pulsantes: cualquiera; fade-up uniforme: >=4 idénticos; hover-scale: >=3; stagger: >=2 listas en una vista de app; entradas con blur: >=3; bounce en utilidad: cualquiera; sitios showcase: islas estáticas, texto estático, reveals rápidos < 0.6s, paradas bruscas, LCP oculto).
  5. Jerarquía correctiva (preferir lo anterior): eliminar -> reducir -> arreglar el easing -> arreglar origen/fisicalidad -> hacer interrumpible -> mover a la GPU -> temporización asimétrica -> pulir (máscara de blur, stagger, @starting-style, spring) -> accesibilidad y cohesión.

Salida (formato requerido)

Parte 1 - tabla de hallazgos, una fila por problema, nunca una lista Antes:/Después:

AntesDespuésPor qué
transition: all 300ms (Card.tsx:42)transition: transform 200ms var(--ease-out)all anima propiedades no intencionadas fuera de la GPU
Parte 2 - veredicto agrupado por impacto: regresiones que rompen la sensación; simplificaciones omitidas; rendimiento; interrumpibilidad y temporización; origen, fisicalidad y cohesión; accesibilidad. Cierra con Block (cualquier regresión que rompa la sensación, movimiento en acciones de teclado/alta frecuencia, scale(0)/ease-in en UI, una animación no GPU con arreglo fácil, sin movimiento reducido) o Approve. Extrae valores exactos de <root>/reference/easing-timing.md y `search.py -d uieasingduration` - nunca aproximar una curva.
Las auditorías añaden la Parte 3 - un plan priorizado (P0/P1/P2, esfuerzo, archivos) y, si se solicita, implementar P0s mediante astudio-motion:ui-motion / gsap. Detalle por modo: references/modes.md.

Tono

Específico y breve. "El desplegable escala desde el centro a 400 ms ease-in - debería crecer desde el disparador en 200 ms ui-out" es mejor que "podría sentirse más suave". Cuando la respuesta honesta es "elimínalo", dilo. Cuando la sensación no pueda juzgarse desde el código o los fotogramas (bounce de spring, snaps de menos de 150 ms), dilo y nombra la verificación.

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/ui-motion

Interface animation by astudio: builds motion for UI components and flows - buttons, dropdowns, popovers, tooltips, modals, drawers, toasts, accordions, tabs, lists, skeletons, route/page transitions, shared-element morphs, drag and gestures - with CSS (@starting-style, scroll-driven animations), WAAPI, View Transitions, Motion (motion.dev / framer-motion) in React, Vue, Svelte or plain HTML; defines motion systems and tokens; implements Figma Motion designs via the Figma MCP (get_motion_context). Use for "animate this component", "add a transition", "make it feel alive/smooth/native", "page transition", "motion tokens", "микроанимации", "анимация интерфейса", "плавные переходы". Decides whether something should animate at all before writing code.

Skills relacionados