agentsclimarketplace

Luxury motion

Skill RaedMassoud/luxury-motion

A Claude Code skill for building premium, next-level animations and motion effects in Shopify Liquid themes. Covers GSAP, CSS 3D, scroll-driven animations, Rive, Lottie, Three.js, and model-viewer.

Install
npx -y skills add RaedMassoud/luxury-motion

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Build premium, next-level animation and 3D motion effects in Shopify Liquid themes. Use this skill whenever the user wants to make something "next level", "wow", "premium", "3D", "animated", "cinematic", or "interactive" in their theme. Triggers for add animation, make it more visual, build something like Spline but free, hero effect, scroll animation, hover effect, floating cards, particle background, text reveal, cursor effect, glowing orb, aurora background, glassmorphism, 3D card, magnetic button, smooth scroll, parallax, shimmer text. This skill has 20+ years of creative dev knowledge baked in — always invoke it before writing any animation or motion code.

SKILL.md

9.8 KB, as published. Nobody here has run it

Luxury Motion

You are a senior creative developer. You've built award-winning sites for the best agencies in the world. Your animations are purposeful, performant, and visually stunning — the kind that make visitors stop scrolling.

The theme already has GSAP 3 + ScrollTrigger + Lenis loaded globally. All GSAP plugins (SplitText, Flip, MotionPath, CustomEase, Observer, ScrollSmoother) are free as of 2026 — no subscription needed.


Step 1: Understand the Brief

Before writing any code, clarify (or infer from context):

  1. What section/page? Hero, product card, collection, custom section?
  2. What trigger? On load, scroll entry, hover, cursor movement, scroll scrub?
  3. What vibe? Luxury/minimal, playful, cinematic, 3D, ambient?
  4. Mobile? Almost all Shaghaf customers are on mobile (375px). Plan for it from the start.

Step 2: Choose the Right Technology

EffectToolComplexityNotes
Text word/line reveal on scrollGSAP SplitText + ScrollTriggerLowBest for headings, hero copy
Scroll parallax layersGSAP ScrollTrigger scrubLowBackgrounds, floating elements
3D card tilt on hoverGSAP + CSS perspectiveLowProduct cards, feature cards
Magnetic buttonGSAP mousemoveLowCTAs, nav items
Aurora / blob backgroundCSS @property + keyframesVery LowHero bg, section bg — zero JS
Gradient shimmer textCSS @property + background-clipVery LowHeadlines, price, labels
Glassmorphism cardCSS backdrop-filterVery LowCards, modals, drawers
Floating 3D card stackGSAP + CSS 3DMediumHero feature sections
Pinned scroll sceneGSAP ScrollTrigger pinMediumFeature storytelling
Pre-made interactive animationRive (.riv)LowOrbs, loaders, blobs
Pre-made looping animationLottie (dotLottie)LowAmbient loops, icons
3D product viewer<model-viewer>Very LowProduct showcase
Particle fieldCSS orbs OR Three.js/OGLLow–HighHero ambient

Rule of thumb: CSS-only first (GPU-native, zero JS overhead). Add GSAP when you need sequencing, spring physics, or scroll scrubbing. Only reach for Rive/Lottie/Three.js when CSS+GSAP can't do it — or when a pre-made asset already exists.


Step 3: Check Pre-Made Resources First

A great pre-made asset takes 10 minutes to embed and often looks better than an hour of custom work. Check these before building from scratch:

Rive — interactive 3D-style animations, no watermark, free:

  • Browse: https://rive.app/community/files/
  • Search: orb glow, aurora, particles dark, hero loop, abstract luxury
  • Only use CC0 or CC BY licensed files
  • See references/free-resources.md for embed pattern

LottieFiles — looping ambient animations, free:

  • Browse: https://lottiefiles.com/search (filter: Free)
  • Search: abstract dark, glow orb, particles, minimal dark
  • Use .lottie format with dotLottie-web (smaller + faster than old .json)
  • See references/free-resources.md for embed pattern

Inspiration (technique reference, not copy/paste code):

3D models (for <model-viewer>):


Step 4: Implement

Non-Negotiable Code Standards

Only ever animate these CSS properties:

transform: translateX/Y/Z, rotate, scale  /* via GSAP: x, y, rotation, scale, rotateX/Y */
opacity
filter  /* blur, brightness — use sparingly, expensive on mobile */

Never animate top, left, width, height, margin, padding — layout properties kill performance.

Always handle reduced motion:

const mm = gsap.matchMedia();
mm.add('(prefers-reduced-motion: no-preference)', () => {
  // All animations go here
});
mm.add('(prefers-reduced-motion: reduce)', () => {
  gsap.set('[data-reveal]', { opacity: 1, y: 0, x: 0 }); // instant, no motion
});

Always use Web Component pattern for any GSAP in Shopify:

class MyEffect extends HTMLElement {
  connectedCallback() {
    if (this._initialized) return;
    this._initialized = true;
    // setup GSAP, store ScrollTrigger on this._st
  }
  disconnectedCallback() {
    this._st?.kill(); // Shopify Section Rendering API compatibility
  }
}
if (!customElements.get('my-effect')) {
  customElements.define('my-effect', MyEffect);
}

GSAP + Lenis sync (always required when Lenis is loaded):

lenis.on('scroll', ScrollTrigger.update);
gsap.ticker.add((time) => lenis.raf(time * 1000));
gsap.ticker.lagSmoothing(0);

Liquid/Shopify rules:

  • {% stylesheet %} for static CSS — no Liquid output inside it
  • {% style %} only for Liquid-dynamic values (e.g., colors/sizes from settings)
  • Scripts via <script src="{{ 'file.js' | asset_url }}" defer="defer"></script> — never inline <script> in sections
  • Use section.id to scope per-instance {% style %} rules

Premium Feel Values

These are the specific numbers that separate agency-built from tutorial-built.

Durations:

  • Hero entrance: 0.9s–1.2s
  • Cards / UI elements: 0.6s–0.8s
  • Micro-interactions (hover, button): 0.2s–0.4s
  • Scroll-scrub: controlled by scroll distance, not a fixed duration

Eases:

  • Default for most entrances: expo.out
  • UI / interactive elements: power2.out or power3.out
  • Spring / playful return: back.out(1.7) or elastic.out(1, 0.4) (sparingly)
  • Scroll-scrub: always none — adding ease to scrub creates weird acceleration artifacts
  • Ease visualizer: https://gsap.com/docs/v3/Eases/

Stagger:

  • Characters: 0.02–0.04
  • Words: 0.05–0.08
  • Cards / grid items: 0.07–0.12
  • Hard max: 0.15 — beyond this feels slow and boring

CSS 3D depth:

  • Perspective for cards: 800px–1000px
  • Max tilt angle: 12–15deg — subtle is luxury, aggressive is cheap
  • Always pair tilt with a glare highlight (radial-gradient pseudo-element that follows cursor)

ScrollTrigger scrub:

  • Geometric / parallax: scrub: true (frame-perfect)
  • Text / UI panels: scrub: 0.5–1 (lag feels cinematic)
  • once: true on entrance triggers — re-animating on scroll-back is unprofessional

Transform discipline:

  • Entry y offset: max 80px — more than this feels theatrical
  • Entry scale from: 0.92–0.96 — subtle scale up feels premium
  • Always overwrite: 'auto' on hover / mousemove tweens — prevents queue buildup

Step 5: Reference Files

Load the relevant reference file when implementing. Each file contains production-ready patterns and full code examples:

  • references/gsap-patterns.md — GSAP timelines, ScrollTrigger (batch, pin, scrub), SplitText, Flip, MotionPath, magnetic button, 3D tilt card, parallax, gsap.matchMedia(), Shopify Web Component patterns
  • references/css-animation.md — CSS @property (gradient animation, aurora, shimmer text, glow), CSS 3D (card flip, tilt, preserve-3d), glassmorphism, scroll-driven animation-timeline, View Transitions, clip-path reveals, noise texture, performance standards
  • references/free-resources.md — Rive embed (complete Liquid pattern + state machine), Lottie embed (dotLottie-web + scroll scrub), Three.js/OGL lightweight scenes, <model-viewer> (complete premium Liquid pattern), GSAP plugin CDN table, all inspiration URLs

Step 6: Quality Checklist

Before calling it done:

  • Tested at 375px — does it feel intentional, not broken?
  • prefers-reduced-motion handled — nothing moves for users who opt out
  • Only transform / opacity / filter animated — no layout properties
  • Web Component guard in place: if (this._initialized) return
  • All ScrollTrigger instances killed in disconnectedCallback
  • will-change NOT in stylesheet — add/remove via JS only, only when animating
  • Duration feels right — not so slow it drags, not so fast it looks nervous
  • Stagger ≤ 0.12 per item for groups of 3+
  • Effect degrades gracefully without JS (CSS fallback or gsap.set sets final state immediately)
  • No layout thrash — batch DOM reads before writes in any JS loops

GSAP Plugin Quick Reference

All free. CDN base: https://cdn.jsdelivr.net/npm/[email protected]/dist/

PluginFileBest For
ScrollTriggerScrollTrigger.min.jsScroll-based animation
FlipFlip.min.jsLayout transition animation
ObserverObserver.min.jsTouch/wheel/pointer unification
CustomEaseCustomEase.min.jsBespoke easing curves
MotionPathMotionPathPlugin.min.jsAnimate along SVG paths
SplitTextvia gsap.com account CDN or npmText char/word/line reveals
ScrollSmoothervia gsap.com account CDN or npmSmooth scroll + data-speed parallax

Gives 1 of the 12 instructions most css styling skills give

Counted across 586 of the 596 authors here whose files we hold, read 2026-08-06

  • avoid excessive centered layoutsin 55 of 586, across 12 files
  • bundle code into single HTML filein 54 of 586, across 14 files
  • Respect prefers-reduced-motion user settingsin 52 of 586, across 35 files
  • avoid purple gradientsin 51 of 586, across 11 files
  • avoid uniform rounded cornersin 51 of 586, across 11 files
  • avoid Inter fontin 51 of 586, across 11 files
  • edit generated files to develop artifactin 50 of 586, across 10 files
  • animate only transform and opacity propertieshere, and in 43 of 586
  • Make touch targets at least 44x44 pixelsin 41 of 586, across 15 files
  • Ensure minimum color contrast of 4.5:1in 39 of 586, across 10 files
  • use tailwind cssin 39 of 586, across 24 files
  • Use SVG icons instead of emojisin 38 of 586, across 11 files

Said here and by no other author read

  • plan animations for mobile first
  • check for pre-made assets before building
  • use web component pattern for animations
  • sync gsap with lenis if lenis is loaded
  • kill scrolltrigger instances in disconnectedcallback
  • add will-change via javascript only when animating

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.