ork-assess
Assess a code change, design, architecture, workflow, or competing options against explicit criteria and evidence. Use when a…
Animation and motion design patterns using Motion library (formerly Framer Motion) and View Transitions API. Use when implementing component animations, page transitions, micro-interactions, gesture-driven UIs, or ensuring motion accessibility with prefers-reduced-motion.
Claude Code
$ npx -y skills add yonatangross/orchestkit --skill animation-motion-design --agent claude-code
Codex
$ npx skills add yonatangross/orchestkit --skill animation-motion-design -a codex -y
Cursor
$ npx skills add yonatangross/orchestkit --skill animation-motion-design -a cursor -y
Gemini CLI
$ npx skills add yonatangross/orchestkit --skill animation-motion-design -a gemini-cli -y
GitHub Copilot
$ npx skills add yonatangross/orchestkit --skill animation-motion-design -a github-copilot -y
OpenCode
$ npx skills add yonatangross/orchestkit --skill animation-motion-design -a opencode -y
Windsurf
$ npx skills add yonatangross/orchestkit --skill animation-motion-design -a windsurf -y
name: animation-motion-design
license: MIT
compatibility: "Claude Code 2.1.277+."
description: Animation patterns with Motion (formerly Framer Motion) and the View Transitions API. Use when implementing component animations, page transitions, micro-interactions, gesture-driven UIs, or prefers-reduced-motion support.
user-invocable: false
targets:
- library: motion
version: ">=13.4.6"
metadata:
owner-agent: "frontend-ui-developer"
category: document-asset-creation
version: "1.0.0"
author: "OrchestKit"
complexity: "medium"
tags: "animation, motion, framer-motion, view-transitions, micro-interactions, gestures, layout-animation, AnimatePresence, prefers-reduced-motion, spring-physics"
allowed-tools: "Read Glob Grep WebFetch WebSearch"
path_patterns: ["**/animation/**", "**/motion/**", "*.motion.*", "*.framer.*"]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`
1. **60fps or nothing** — Only animate `transform` and `opacity` (composite properties). Never animate `width`, `height`, `top`, or `left`. 2. **Centralized presets** — Define animation variants in a shared file, not inline on every component. 3. **AnimatePresence for exits** — React unmounts instantly; wrap with AnimatePresence to animate out. 4. **Spring over duration** — Springs feel natural and are interruptible. Use `stiffness`/`damping`, not `duration`. 5. **Respect user preferences** — Always check `prefers-reduced-motion` and provide instant alternatives.
| Metric | Target | Measurement | |--------|--------|-------------| | Transition duration | < 400ms | User perception threshold | | Animation properties | transform, opacity only | DevTools > Rendering > Paint fla
The Complete AI Development Toolkit for Claude Code. 115 skills, 36 agents, 163 hooks. Install `ork` for stable (v10.x).
Assess a code change, design, architecture, workflow, or competing options against explicit criteria and evidence. Use when a…
Compare plausible implementation, architecture, product, or operational approaches before committing to one. Use when a request…
Map an unfamiliar codebase, feature, architecture, data flow, or operational path with file-backed evidence. Use when a request…
Render an answer inline as compact ASCII or box-drawing art with semantic status icons. Use for status, inventories, budgets,…
Make an approved, scoped change and prove the affected behavior. Use when a request asks to implement, build, add, or land a…
Review a pull request or branch for correctness, regressions, security, operational risk, and missing evidence. Use when a…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.