From ork
Provides animation and motion design patterns using Motion (Framer Motion) and View Transitions API for component animations, page transitions, micro-interactions, gestures, exit transitions, and accessibility with prefers-reduced-motion.
npx claudepluginhub yonatangross/orchestkit --plugin orkThis skill is limited to using the following tools:
Patterns for building performant, accessible animations using **Motion** (formerly Framer Motion, 18M+ weekly npm downloads) and the **View Transitions API** (cross-browser support in 2026). Covers layout animations, gesture interactions, exit transitions, micro-interactions, and motion accessibility.
references/animation-presets-library.mdreferences/micro-interactions-catalog.mdreferences/motion-vs-view-transitions.mdrules/_sections.mdrules/_template.mdrules/motion-accessibility.mdrules/motion-exit.mdrules/motion-gestures.mdrules/motion-layout.mdrules/motion-performance.mdrules/view-transitions-api.mdtest-cases.jsonImplements UI animations, page transitions, micro-interactions, hover effects, loading states, and scroll animations using Framer Motion, CSS Transitions, and Tailwind CSS.
Creates smooth React/JavaScript animations with Motion/Framer Motion: motion components, variants, gestures (hover/tap/drag), layout/exit animations, springs, scroll effects. For interactive UIs, micro-interactions, transitions.
Optimizes Framer Motion animations in React via 42 rules across bundle size, re-renders, layout transitions, gestures, scroll effects, springs, and SVGs. Use when writing, reviewing, or refactoring.
Share bugs, ideas, or general feedback.
Patterns for building performant, accessible animations using Motion (formerly Framer Motion, 18M+ weekly npm downloads) and the View Transitions API (cross-browser support in 2026). Covers layout animations, gesture interactions, exit transitions, micro-interactions, and motion accessibility.
| Rule | File | Impact | When to Use |
|---|---|---|---|
| Layout Animations | rules/motion-layout.md | HIGH | Shared layout transitions, FLIP animations, layoutId |
| Gesture Interactions | rules/motion-gestures.md | HIGH | Drag, hover, tap with spring physics |
| Exit Animations | rules/motion-exit.md | HIGH | AnimatePresence, unmount transitions |
| View Transitions API | rules/view-transitions-api.md | HIGH | Page navigation, cross-document transitions |
| Motion Accessibility | rules/motion-accessibility.md | CRITICAL | prefers-reduced-motion, cognitive load |
| Motion Performance | rules/motion-performance.md | HIGH | 60fps, GPU compositing, layout thrash |
Total: 6 rules across 3 categories
| Scenario | Recommendation | Why |
|---|---|---|
| Component mount/unmount | Motion | AnimatePresence handles lifecycle |
| Page navigation transitions | View Transitions API | Built-in browser support, works with any router |
| Complex interruptible animations | Motion | Spring physics, gesture interruption |
| Simple crossfade between pages | View Transitions API | Zero JS bundle cost |
| Drag/reorder interactions | Motion | drag prop with layout animations |
| Shared element across routes | View Transitions API | viewTransitionName CSS property |
| Scroll-triggered animations | Motion | useInView, useScroll hooks |
| Multi-step orchestrated sequences | Motion | staggerChildren, variants |
import { motion, AnimatePresence } from "motion/react"
const fadeInUp = {
initial: { opacity: 0, y: 20 },
animate: { opacity: 1, y: 0 },
exit: { opacity: 0, y: -10 },
transition: { type: "spring", stiffness: 300, damping: 24 },
}
function Card({ item }: { item: Item }) {
return (
<motion.div {...fadeInUp} layout layoutId={item.id}>
{item.content}
</motion.div>
)
}
function CardList({ items }: { items: Item[] }) {
return (
<AnimatePresence mode="wait">
{items.map((item) => (
<Card key={item.id} item={item} />
))}
</AnimatePresence>
)
}
// React Router v7+ with View Transitions
import { Link, useNavigate } from "react-router"
function NavLink({ to, children }: { to: string; children: React.ReactNode }) {
return <Link to={to} viewTransition>{children}</Link>
}
// CSS for the transition
// ::view-transition-old(root) { animation: fade-out 200ms ease; }
// ::view-transition-new(root) { animation: fade-in 200ms ease; }
import { useReducedMotion } from "motion/react"
function AnimatedComponent() {
const shouldReduceMotion = useReducedMotion()
return (
<motion.div
animate={{ x: 100 }}
transition={shouldReduceMotion
? { duration: 0 }
: { type: "spring", stiffness: 300, damping: 24 }
}
/>
)
}
FLIP-based layout animations with the layout prop and shared layout transitions via layoutId.
Load:
rules/motion-layout.md
Drag, hover, and tap interactions with spring physics and gesture composition.
Load:
rules/motion-gestures.md
AnimatePresence for animating components as they unmount from the React tree.
Load:
rules/motion-exit.md
Browser-native page transitions using document.startViewTransition() and framework integrations.
Load:
rules/view-transitions-api.md
Respecting user motion preferences and reducing cognitive load with motion sensitivity patterns.
Load:
rules/motion-accessibility.md
GPU compositing, avoiding layout thrash, and keeping animations at 60fps.
Load:
rules/motion-performance.md
transform and opacity (composite properties). Never animate width, height, top, or left.stiffness/damping, not duration.prefers-reduced-motion and provide instant alternatives.| Metric | Target | Measurement |
|---|---|---|
| Transition duration | < 400ms | User perception threshold |
| Animation properties | transform, opacity only | DevTools > Rendering > Paint flashing |
| JS bundle (Motion) | ~16KB gzipped | Import only what you use |
| First paint delay | 0ms | Animations must not block render |
| Frame drops | < 5% of frames | Performance API: PerformanceObserver |
width, height, margin, padding directly. Use transform: scale() instead.stiffness/damping, not duration. Mixing causes unexpected behavior.document.startViewTransition().| Resource | Description |
|---|---|
| references/motion-vs-view-transitions.md | Comparison table, browser support, limitations |
| references/animation-presets-library.md | Copy-paste preset variants for common patterns |
| references/micro-interactions-catalog.md | Button press, toggle, checkbox, loading, success/error |
ork:ui-components — shadcn/ui component patterns and CVA variantsork:responsive-patterns — Responsive layout and container query patternsork:performance — Core Web Vitals and runtime performance optimizationork:accessibility — WCAG compliance, ARIA patterns, screen reader support