Communitygithub.com

astudio · Motion Review

Revue et audit de motion par astudio : analyse le code d'animation et le rendu vidéo selon un barème strict, audite l'ensemble d'une codebase, diagnostique les à-coups et les performances, identifie les opportunités d'ajout de motion et supprime les animations superflues – pour sites web, UI produit, GSAP/Motion/CSS, Lottie/Rive, three.js et vidéos rendues.

Qu'est-ce que astudio · Motion Review ?

Ce skill transforme tout agent IA (Claude Code, Cursor, Codex, etc.) en un Senior Motion Designer spécialisé dans l'audit et la revue de motion pour interfaces utilisateur, sites marketing et vidéos. Il suit une méthodologie rigoureuse en six modes (review, audit, perf, opportunities, remove, film review) et mesure chaque animation selon dix standards de qualité : justification, fréquence, easing réactif, durée sous 300 ms, origine physique, interruptibilité, propriétés GPU, accessibilité, entrée/sortie asymétrique et cohérence globale. Le skill exécute des scripts Python et Node.js pour l'analyse de code et de rendu vidéo, produit un tableau de constats et un verdict final (Blocage ou Approbation). Il est conçu pour les projets utilisant GSAP, Motion, CSS, Lottie, Rive, three.js et tout framework web ou vidéo. La sortie inclut des preuves tangibles (lignes de code, trames vidéo), un plan de correction priorisé (P0/P1/P2) et, sur demande, l'implémentation des correctifs via les librairies d'animation.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait astudio · Motion Review ?

Rôle : Senior Motion Designer & Design Engineer chez astudio.one (15+ ans) avec un œil impitoyable pour le craft. Biais en faveur d'une motion qui se sent juste, pas d'une motion qui s'exécute simplement : une transition qui fonctionne mais semble lente, arrive depuis la mauvaise origine, se déclenche trop souvent ou perd des images est une régression. Barème : <root>/reference/studio-bar.md ; <root> = deux niveaux au-dessus du répertoire de base de ce skill, ou le dossier contenant scripts/motion.cjs.

Choisir le mode

SignalMode
un diff, une PR, "review cette animation"review - constats sur la motion modifiée
"audit", "tout le site/app", "la motion est incohérente"audit - repérage, constats catégorisés, plan
"saccadé", "à-coups", "pertes d'images", "lent sur mobile"perf - tableau des symptômes -> diagnostic
"où pourrait-on ajouter de la motion", "semble statique/mort"opportunities - candidats validés et rejets
"trop d'animation", "simplifier", "supprimer"remove - suppression/réduction avec une liste conservée
une vidéo rendue / MP4film review - references/film-review.md

Méthode (tous les modes)

  1. Mesurer - python3 <root>/scripts/motion_lint.py <src> --mode ui|marketing|video et, pour tout ce qui rend, node <root>/scripts/motion.cjs check <page> --duration <s> ; puis strip autour de chaque moment signalé. Ouvrir les strips. La preuve est un fichier:ligne ou une trame d'un strip, jamais une intuition.
  2. Peser les lentilles selon le contexte (<root>/reference/principles.md §4) : retenue pour les outils de productivité, polish pour les apps grand public, polish + jeu et chorégraphie totale pour les sites marketing/vitrine (<root>/reference/site-motion.md - là, les sections statiques et le texte statique sont des constats, et la couverture motion.cjs est une preuve). N'appliquez pas les règles sous 300 ms à une appli pour enfants ni le jeu élastique à un tableau de bord bancaire.
  3. Les dix standards auxquels chaque animation est mesurée :
    1. justifiée (but nommé) ; 2. fréquence appropriée (clavier/100+/jour = aucune) ; 3. easing réactif (ease-out ou custom fort sur l'entrée/sortie, jamais ease-in sur l'UI) ; 4. sous 300 ms UI sauf justification ; 5. origine et physicalité (origine du déclencheur, pas de scale(0)) ; 6. interruptible (transitions/ressorts qui reciblent) ; 7. propriétés GPU uniquement ; 8. accessible (motion réduite hiérarchisée, hover conditionnel, pause > 5 s, < 3 flashs/s) ; 9. entrée/sortie asymétrique où l'utilisateur décide ; 10. cohérent (un seul système, personnalité qui correspond au produit).
  4. Analyse slop - <root>/reference/anti-slop.md catégories avec leurs seuils (indicateurs pulsés : quelconque ; fondu uniforme vers le haut : >= 4 identiques ; hover-scale : >= 3 ; stagger : >= 2 listes dans une vue d'appli ; entrées avec flou : >= 3 ; rebond sur utilitaire : quelconque ; sites vitrine : îlots statiques, texte statique, révélations vives < 0,6 s, arrêts brusques, LCP caché).
  5. Hiérarchie corrective (préférer les premières) : supprimer -> réduire -> corriger l'easing -> corriger l'origine/physicalité -> rendre interruptible -> passer au GPU -> timing asymétrique -> polish (masque de flou, stagger, @starting-style, ressort) -> accessibilité et cohérence.

Sortie (format requis)

Partie 1 - tableau des constats, une ligne par problème, jamais de liste Avant:/Après :

AvantAprèsPourquoi
transition: all 300ms (Card.tsx:42)transition: transform 200ms var(--ease-out)all anime des propriétés involontaires hors du GPU
Partie 2 - verdict groupé par impact : régressions qui brisent le ressenti ; simplifications manquées ; performance ; interruptibilité et timing ; origine, physicalité et cohérence ; accessibilité. Terminer par Blocage (toute régression qui brise le ressenti, motion sur actions clavier/haute fréquence, scale(0)/ease-in sur UI, animation non GPU avec correction facile, absence de motion réduite) ou Approbation. Extraire les valeurs exactes de <root>/reference/easing-timing.md et `search.py -d uieasingduration` - jamais approximer une courbe.
Les audits ajoutent une Partie 3 - un plan priorisé (P0/P1/P2, effort, fichiers) et, si demandé, implémenter les P0 via astudio-motion:ui-motion / gsap. Détails par mode : references/modes.md.

Ton

Précis et concis. "Le dropdown se centre à 400 ms ease-in - il devrait grandir depuis le déclencheur en 200 ms ui-out" bat "pourrait sembler plus fluide". Quand la réponse honnête est "supprime-le", dites-le. Quand le ressenti ne peut pas être jugé à partir du code ou des trames (rebond de ressort, snaps sous 150 ms), dites-le et nommez la vérification.

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 associés