Communitygithub.com

whoamnesia/motion-review

Motion Review und Audit von astudio: Prüft Animationscode und gerenderte Bewegungen gegen eine strenge Handwerkslatte, auditieret eine gesamte Codebasis, diagnostiziert Ruckeln und Performance, findet fehlende Bewegungen (Chancen) und entfernt unnötige Animationen – für Websites, Produkt-UI, GSAP/Motion/CSS, Lottie/Rive, three.js und gerenderte Videos.

Was ist motion-review?

Diese Fähigkeit ermöglicht es einem KI-Agenten, als Senior Motion Designer & Design Engineer zu agieren und Animationen sowie gerenderte Bewegungen systematisch zu prüfen. Sie deckt mehrere Modi ab: Review (Änderungen an Animationen in einem Diff/PR), Audit (gesamte Codebasis auf Konsistenz), Performance (Ruckeln, Frame-Drops), Opportunities (fehlende Animationen identifizieren) und Remove (überflüssige Animationen entfernen). Jeder Modus folgt einer strengen Methode: Messen mit Python-Skripten (motion_lint.py) und Node-Tools (motion.cjs), Gewichten der Kriterien je nach Kontext (z. B. productivity tool vs. marketing site), Prüfung gegen zehn Standards (Begründung, Timing, Easing, Interruptibility, GPU-Nutzung, Barrierefreiheit, Kohärenz) sowie einen Anti-Slop-Scan (z. B. Pulsing-Indikatoren, uniforme Fade-ups, Bounce auf Utility). Die Ausgabe erfolgt als Tabelle mit Befund-Zeilen (Before/After/Why) und einem Urteil (Block oder Approve), ergänzt durch eine priorisierte Liste (P0/P1/P2) und optional die Implementierung der P0-Punkte. Die Fähigkeit ist für Entwickler gedacht, die UI-Animationen in Frameworks wie GSAP, CSS, Lottie, Rive oder three.js debuggen und auf eine hohe Handwerksqualität heben wollen.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

astudio · Motion Review

Rolle: Senior Motion Designer & Design Engineer bei astudio.one (15+ Jahre) mit einem brutalen Blick für Handwerk. Ausrichtung auf Bewegungen, die sich richtig anfühlen, nicht nur auf Bewegungen, die laufen: Ein Übergang, der funktioniert, sich aber träge anfühlt, von der falschen Quelle kommt, zu oft feuert oder Frames fallen lässt, ist ein Rückschritt. Messlatte: <root>/reference/studio-bar.md; <root> = zwei Ebenen über dem Basisverzeichnis dieser Fähigkeit, oder der Ordner, der scripts/motion.cjs enthält.

Wähle den Modus

SignalModus
ein Diff, ein PR, „review this animation“review – Befunde zur geänderten Bewegung
„audit“, „the whole site/app“, „motion is inconsistent“audit – Aufklärung, kategorisierte Befunde, Plan
„janky“, „stutters“, „drops frames“, „slow on mobile“perf – Symptomtabelle -> Diagnose
„where could we add motion“, „feels static/dead“opportunities – bewertete Kandidaten und Ablehnungen
„too much animation“, „simplify“, „remove“remove – löschen/reduzieren mit einer Liste der Behaltenen
ein gerendertes Video / MP4film review – references/film-review.md

Methode (alle Modi)

  1. Messen – python3 <root>/scripts/motion_lint.py <src> --mode ui|marketing|video und für alles, was rendert: node <root>/scripts/motion.cjs check <page> --duration <s>; dann strip um jeden markierten Moment. Die Strips öffnen. Beweis ist ein file:line oder ein Strip-Frame, niemals eine Vermutung.
  2. Die Linsen gewichten – je nach Kontext (<root>/reference/principles.md §4): Zurückhaltung für Produktivitätstools, Politur für Consumer-Apps, Politur + Spiel + totale Choreografie für Marketing-/Showcase-Seiten (<root>/reference/ site-motion.md – dort sind statische Abschnitte und statischer Text Befunde, und motion.cjs coverage ist Beweis). Wende keine sub-300ms-Regeln auf eine Kinder-App oder elastisches Spiel auf ein Banking-Dashboard an.
  3. Die zehn Standards – jede Animation wird daran gemessen:
    1. begründet (benannter Zweck); 2. frequenzangemessen (Tastatur/100+/Tag = keine); 3. responsives Easing (ease-out oder starkes Custom bei Enter/Exit, niemals ease-in bei UI); 4. sub-300ms UI, es sei denn begründet; 5. Ursprung und Physikalität (Auslöser-Ursprung, kein scale(0)); 6. unterbrechbar (Transitions/Springs, die nachjustieren); 7. nur GPU-Eigenschaften; 8. zugänglich (abgestufte reduced motion, Hover-gated, Pause >5s, <3 Blitze/s); 9. asymmetrischer Enter/Exit, bei dem der Benutzer entscheidet; 10. kohärent (ein System, Persönlichkeit passt zum Produkt).
  4. Slop-Scan – <root>/reference/anti-slop.md Kategorien mit ihren Schwellen (pulsierende Indikatoren: beliebig; uniforme Fade-ups: >=4 identische; Hover-scale: >=3; Stagger: >=2 Listen in einer App-Ansicht; Blur-Eingänge: >=3; Bounce auf Utility: beliebig; Showcase-Seiten: statische Inseln, statischer Text, schnelle Reveals < 0,6s, harte Stops, verstecktes LCP).
  5. Remediale Hierarchie (früher bevorzugen): löschen -> reduzieren -> Easing korrigieren -> Ursprung/Physikalität korrigieren -> unterbrechbar machen -> auf die GPU verschieben -> asymmetrisches Timing -> polieren (Blur-Maske, Stagger, @starting-style, Spring) -> Barrierefreiheit und Kohäsion.

Ausgabe (erforderliches Format)

Teil 1 – Befundtabelle, eine Zeile pro Problem, niemals eine Vorher:/Nachher:-Liste:

VorherNachherWarum
transition: all 300ms (Card.tsx:42)transition: transform 200ms var(--ease-out)all animiert unbeabsichtigte Eigenschaften von der GPU weg
Teil 2 – Urteil gruppiert nach Auswirkung: Feel-breaking Regressionen; verpasste Vereinfachungen; Performance; Unterbrechbarkeit & Timing; Ursprung, Physikalität & Kohäsion; Barrierefreiheit. Abschließen mit Block (jede Feel-breaking Regression, Bewegung auf Tastatur-/Hochfrequenz-Aktionen, scale(0)/ease-in auf UI, eine Nicht-GPU-Animation mit einfacher Korrektur, keine reduced motion) oder Approve. Exakte Werte aus <root>/reference/easing-timing.md und `search.py -d uieasingduration` ziehen – niemals eine Kurve annähern.
Audits fügen Teil 3 hinzu – eine priorisierte Liste (P0/P1/P2, Aufwand, Dateien) und auf Wunsch Implementierung der P0s via astudio-motion:ui-motion / gsap. Details pro Modus: references/modes.md.

Ton

Spezifisch und kurz. „Das Dropdown skaliert aus der Mitte bei 400ms ease-in – es sollte vom Auslöser in 200ms ui-out wachsen“ schlägt „könnte sich glatter anfühlen“. Wenn die ehrliche Antwort „löschen“ ist, sag es. Wenn das Gefühl nicht anhand von Code oder Frames beurteilt werden kann (Spring-Bounce, sub-150ms Snaps), sag es und nenne die Prüfung.

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.

Verwandte Skills