affaan-m/everything-claude-code/motion-advanced
- community
- ext:[{"type":"hook","description":"Pre/post lifecycle hooks"}]
Checking that the SKILL.md file is still in the repository.
Advanced motion patterns for React / Next.js — drag & drop, gestures, text animations, SVG path drawing, custom hooks, imperative sequences (useAnimate), loaders, and the full API decision tree. Requires motion-foundations. Use when building drag and drop, gestures, text or SVG animation, or imperative animation sequences in React or Next.js.
Install
npx vskill@latest install affaan-m/everything-claude-code/motion-advancedSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
Motion Advanced
Complex, interactive, and physics-based animation patterns. Requires motion-foundations to be set up first. Use these when motion-patterns is not enough.
When to Activate
- Building drag-to-dismiss sheets, swipe gestures, or reorderable lists
- Animating text word-by-word, character-by-character, or as a live counter
- Drawing SVG paths, morphing icons, or animating circular progress
- Writing a custom animation hook (
useScrollReveal, magnetic button, cursor follower) - Sequencing multi-step animations imperatively with
useAnimate - Building spinners, shimmer skeletons, pulse indicators, or loading button states
Outputs
This skill produces:
- Drag interactions: draggable cards, drag-to-dismiss sheets,
Reorder.Grouplists - Gesture hooks: swipe detection, long press, pinch outline
- Text animation components: word reveal, character typewriter, number counter
- SVG animation: path draw-on, icon morph, stroke progress ring
- Custom hooks:
useScrollReveal,useHoverScale,useNavigationDirection,useInViewOnce - Imperative sequences via
useAnimatewith interrupt-safeasync/await - Loader components: spinner, shimmer, pulse dot, progress bar, button loading state
Principles
- Physics-based motion (
useSpring,springs.*) always feels more natural than duration-based for direct manipulation. useMotionValue+useTransformcomputes derived values without triggering re-renders.useAnimatesequences are imperative and interrupt-safe — callinganimate()mid-flight cancels the previous animation automatically.- Motion values (
useMotionValue,useSpring) are SSR-safe and do not cause hydration errors.
Rules
- Drag interactions must be tested on touch devices, not just mouse.
dragprop works on both but feel and threshold differ. - Infinite animations must pause when `document.visibilityState === "hidden"`. Background tabs must not consume GPU/CPU.
- Swipe threshold must be explicit. Never infer intent from velocity alone; combine
offset+velocitychecks. - `useAnimate` scope ref must be attached to a mounted DOM element. Calling
animate()before mount throws silently. - Motion values must not be recreated on render.
useMotionValue(0)inside a component body is correct;new MotionValue(0)in a render is not. - All token values are imported from `motion-foundations`. No inline numbers.
- Custom hooks must handle cleanup. Every
window.addEventListenerneeds a matchingremoveEventListenerin theuseEffectreturn. - SVG morphing requires equal path command counts. Paths with different command structures snap instead of interpolating.
Decision Guidance
Choosing the right advanced API
| Scenario | API | |
|---|---|---|
| Drag with physics on release | drag + dragTransition: springs.release | |
| Ordered drag-to-reorder list | Reorder.Group + Reorder.Item | |
| Dismiss on drag offset | drag="y" + onDragEnd offset check | |
| Swipe left/right | drag="x" + onDragEnd offset check | |
| Long press | useLongPress hook | |
| Value smoothed over time | useSpring | |
| Value derived from another | useTransform | |
| Multi-step sequence | useAnimate with async/await | |
| One-shot imperative animation | animate() from motion | |
| Text entering word by word | Stagger on inline-block spans | |
| SVG drawing on | pathLength 0 → 1 | |
| SVG morph | d attribute tween (equal commands) | |
| Circular progress | strokeDashoffset tween |
When to use useSpring vs a spring transition
useSpring | transition: springs.* | ||
|---|---|---|---|
| Use for | Cursor follower, pointer-tracked values | Discrete state changes | |
| Updates | Continuous, on every frame | Triggered by state change | |
| Interrupt | Smooth — physics picks up from velocity | Restarts from current value |
Core Concepts
useMotionValue + useTransform
Reactive computation without re-renders:
useAnimate
Returns [scope, animate]. The scope ref must be attached to a DOM element. animate() calls are interrupt-safe — calling mid-flight cancels the previous run.
Code Examples
Draggable card
Drag-to-dismiss sheet
Reorderable list
Swipe detection
Long press hook
Word-by-word reveal
Number counter
SVG path draw-on
Stroke progress ring
useScrollReveal hook
Cursor follower
Shimmer skeleton
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/motion-advanced/SKILL.md
Popularity
- Repository stars
- 185,003
- Repository forks
- 28,602
- Repository npm downloads, 7 days
- 2,034
- 7-day trend score
- 78
Stars and forks are for the whole GitHub repository, not this skill alone. Downloads are for the repository's npm package. Refreshed 17 May 2026, 5 months ago.
Extension points
hookPre/post lifecycle hooks
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/affaan-m/everything-claude-code/motion-advanced)