Communitygithub.com

GSAP Motion von astudio

Erstellen Sie preisgekrönte Scroll-Storys, Text-Enthüllungen, horizontale Galerien und Page-Transitions mit GSAP & ScrollTrigger – in Vanilla JS, React, Next.js, Vue, Nuxt, Svelte und Astro.

Was ist GSAP Motion von astudio?

Diese Skill befähigt KI-Agenten, hochkomplexe, flüssige Motion-Designs auf Awwwards-Niveau zu erstellen – inklusive ScrollStorys mit Pins, Scrub, Parallax und horizontalen Galerien. Der Skill deckt alle wichtigen GSAP-Plugins ab (SplitText, MorphSVG, DrawSVG, MotionPath, Draggable, Inertia, Observer, CustomEase) und bietet Frameworks wie useGSAP für React, View Transitions, Barba-Integration und Lenis-Smooth-Scroll. Er enthält eine vollständige Site-Choreografie-Vorlage (templates/site-motion.js + CSS) mit automatischer Data-Attribut-basierter Enthüllung, Marken-Token-System und LCP-optimierter Hero-Implementation. Der Workflow folgt einem bewährten vierstufigen Prozess (Moment-Entscheidung, Timeline-Aufbau, Scroll-Integration mit ScrollTrigger, Plugin-Einsatz) und erzwingt durch Prüfskripte (motion.cjs, motion_lint.py) konstante 60fps, minimale LCP-Deltas und Barrierefreiheit unter reduced-motion. Die Skill unterstützt Vanilla JS, React, Next.js, Vue, Nuxt, Svelte und Astro und schreibt Cleanup, gsap.matchMedia() für Responsive und accessibility-gerechte Animationen vor.

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

In Ihrer bevorzugten KI fragen

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

Dokumentation

astudio · GSAP

Rolle: Senior Creative Developer bei astudio.one (15+ Jahre) – Scroll-Geschichten und Timelines auf Awwwards-Niveau, die bei 60fps bleiben und die Leser niemals blockieren. Referenz: <root>/reference/studio-bar.md; <root> = zwei Ebenen über dem Basisverzeichnis dieser Skill, oder der Ordner, der scripts/motion.cjs enthält.

Setup-Fakten (nicht falsch machen)

  • npm i gsap – jedes Plugin ist kostenlos und im öffentlichen Paket (SplitText, MorphSVG, DrawSVG, ScrollSmoother, Inertia, ...). Erstellen Sie niemals eine .npmrc mit einem GreenSock-Token oder senden Sie Benutzer zum alten Club-Registry.
  • Importieren Sie aus gsap/<Plugin> und führen Sie gsap.registerPlugin(...) einmal auf Modulebene aus (nicht innerhalb einer neu rendernden Komponente). React: npm i @gsap/react, gsap.registerPlugin(useGSAP).
  • CDN für statische Seiten: https://cdn.jsdelivr.net/npm/[email protected]/dist/gsap.min.js (+ /dist/ScrollTrigger.min.js, SplitText.min.js, DrawSVGPlugin.min.js, MotionPathPlugin.min.js); Lenis https://unpkg.com/[email protected]/dist/lenis.min.js.

Eine gesamte Website animieren (Marketing, Landing, Brand, Portfolio) – totale Choreografie

Lesen Sie zuerst <root>/reference/site-motion.md. Der Benutzer erwartet, dass jedes Element performt – Text eingeschlossen – flüssig und harmonisch; ein sich bewegender Hero über statischen Abschnitten ist ein fehlgeschlagener Job.

  1. Starten Sie von templates/site-motion.js + templates/site-motion.css (kopieren Sie sie in das Projekt): die Enthüllungsgrammatik nach Inhaltstyp, die Intro-Timeline, Lenis, Label-Roll-Buttons, magnetischer Pull, Zähler, Marquee und SiteMotion.map() für Karten/Routen. Passen Sie Token pro Marke an (SiteMotion.init({ tokens: {...} })), niemals unter den Glätte-Mindestwerten.
  2. Markieren Sie jedes sichtbare Element mit data-reveal="<type>" (Überschriften, Absätze, Labels, Buttons, Links, Bilder, Cards, Zeilen, Icons, Zahlen, Linien, Badges, Header, Footer); der Hero-Container erhält data-hero; Karten erhalten data-map + die Kartenattribute. Fügen Sie das Inline-<head>-Skript hinzu (sm-js + failsafe).
  3. Das Hero-Foto ist hero-image (sichtbar bei Frame 0, LCP-sicher). Gestalten Sie dann die Signatur darüber (eine gepinnte Szene, eine Kartenreise, eine 3D-Enthüllung) mit denselben Tokens.
  4. Prüfen Sie: node <root>/scripts/motion.cjs coverage index.html (kein FAIL, >= 90% bewegt, Text eingeschlossen, LCP-Delta < 300ms) · motion.cjs check index.html --duration 2.5 (kein hard-stop, kein empty-opening) · Strips des Hero und von gescrollten Abschnitten · motion_lint.py . --mode marketing.

Workflow (beliebiger GSAP-Job)

  1. Entscheiden Sie den Moment (<root>/reference/direction.md): welche EINE Szene ist die Signatur (Hero-Intro, eine gepinnte Story, eine horizontale Galerie, eine Text-Enthüllung), und – bei einer Showcase-Seite – die totale Choreografie darum herum (<root>/reference/site-motion.md). Finden Sie Muster: search.py "<Idee>" -d gsap / -d ui / -d transition.
  2. Bauen Sie Timelines, keine Verzögerungsketten (references/core.md): Defaults auf der Timeline, Positionsparameter für Überlappung ("<", "-=0.3", Labels), Easing nach Rolle (expo.out für Ankünfte, power2.inOut für Bewegungen, none für Scrub).
  3. Scroll (references/scrolltrigger.md): ScrollTrigger auf der Timeline oder einem Toplevel-Tween; scrub ODER toggleActions; Pins <= 2-3 Bildschirme mit sichtbarem Fortschritt; ease: "none" mit containerAnimation; Trigger von oben nach unten erstellen (oder refreshPriority); ScrollTrigger.refresh() nach Bildern/Schriften/dynamischem Inhalt.
  4. Plugins nach Bedarf (references/plugins.md): SplitText (Zeilen/Wörter in Masken, autoSplit + onSplit für responsiv, revert beim Cleanup), Flip, MorphSVG/DrawSVG, MotionPath, Draggable+Inertia, Observer, ScrollSmoother oder Lenis, CustomEase. SplitText: Überschriften nach Wörtern/Zeichen, Body-Text nach Zeilen (mask: "lines"), revert wenn die Enthüllung endet.
  5. Framework-Einbindung und Cleanup (references/frameworks.md): useGSAP({ scope }) in React mit contextSafe für Handler; gsap.context() + revert() anderswo; kill/revert bei Unmount und Routenwechsel.
  6. Responsive + Barrierefreiheit an einem Ort: gsap.matchMedia() mit Bedingungen isDesktop, reduceMotion (<root>/reference/accessibility.md Stufen – keine Pins/Parallaxe/Scrub-Bewegung bei reduzierter Bewegung; Fade-Animationen bleiben). Inhalt ist ohne JS sichtbar: versteckte Startzustände via gsap.set innerhalb der matchMedia, oder autoAlpha from-Tweens.
  7. Überprüfen: node <root>/scripts/motion.cjs strip page.html --duration 3 --frames 12 für Lade-Timelines; für Scroll-Szenen einen Test-Hook exposen, der t auf Scroll-Position oder Fortschritt abbildet (references/scrolltrigger.md §6) und strip; motion_lint.py src --mode marketing.

Regeln

  • Transformieren Sie Aliase (x, y, xPercent, scale, rotation) und autoAlpha – animieren Sie niemals top/left/width/height für Bewegungen. clearProps wenn CSS nach dem Tween übernehmen soll.
  • Mehrere from()/fromTo() auf der gleichen Eigenschaft des gleichen Targets: immediateRender: false bei den späteren.
  • overwrite: "auto" für Tweens, die erneut ausgelöst werden können; gsap.quickTo() für Cursor-Follower/magnetische Buttons.
  • Kein markers: true in Produktion; keine scroll-Listener für Animationen.
  • Nur das Nötigste pinnen; scrub: 0.8-1.2 für sanftes Gewicht (niemals rohes scrub: true bei sichtbarer Bewegung); anticipatePin: 1 wenn Pins springen; invalidateOnRefresh für funktionsbasierte Werte, die von der Viewport-Größe abhängen.
  • Glätte-Mindestwerte auf Showcase-Seiten: Enthüllungen >= 0.9s bei expo.out/power4.out, überlappende Stagger, Bild-Wipes mit innerem Scale; nichts stoppt bei voller Geschwindigkeit (motion.cjs check -> hard-stop).
  • SVG-Transformationsursprünge: nur GSAP transformOrigin/svgOrigin – niemals zusätzlich CSS transform-box (doppelter Offset).
  • Smooth-Scroll (Lenis/ScrollSmoother) nur auf Desktop-Fine-Pointern; aus bei reduzierter Bewegung und auf Touch; Lenis mit dem Ticker verbinden (lenis.on('scroll', ScrollTrigger.update); gsap.ticker.add(t => lenis.raf(t * 1000)); gsap.ticker.lagSmoothing(0)).
  • Video-Timelines (astudio-motion:motion-video): eine pausierte Master-Timeline, window.__seek = t => tl.seek(t), kein repeat: -1, kein Math.random() ohne Seed.

Individual skills in this repo

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

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.

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