framer-motion · dylantarre — Claude Code skill: what it does, how to install
This skill guides the agent in implementing Disney's 12 animation principles with Framer Motion in React. Useful for building UI transitions and gesture animations.
npx skills add dylantarre/animation-principles --skill framer-motion -a claude-codeWhat framer-motion does
The skill provides reference patterns for applying Disney's 12 animation principles using Framer Motion's declarative React API. It covers squash and stretch via scaleX and scaleY, plus anticipation jumps using variants. The reference also details easing curves and child staggering through staggerChildren.
It targets React components directly. The snippets configure <motion.div> and <motion.button> elements with gesture handlers like whileHover and whileTap, alongside multi-step keyframe arrays.
The examples require Framer Motion in your project dependencies.
What it helps with
- configure squash and stretch effects using scaleX and scaleY
- implement anticipation jump sequences with variants
- add secondary micro-interactions using whileHover and whileTap
- stagger child list animations with staggerChildren
- render 3D tilt effects using perspective and rotation
Example prompts for the agent
- Add a squash and stretch click effect to this button using Framer Motion
- Animate this card list entrance with staggerChildren
- Implement an anticipation jump sequence for the modal using Framer Motion variants
How to install framer-motion
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill framer-motion -a claude-code2Manually: put the files in place
~/.claude/skills/framer-motion/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/framer-motion/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill framer-motion -a codex2Manually: put the files in place
.agents/skills/framer-motion/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill framer-motion -a cursor2Manually: put the files in place
.cursor/skills/framer-motion/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install dylantarre/animation-principles framer-motion2Manually: put the files in place
.github/skills/framer-motion/SKILL.md1Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill framer-motion -a gemini-cli2Platform CLI
gemini skills install https://github.com/dylantarre/animation-principles --path skills/09-by-tool-framework/framer-motionManually: put the files in place
.devin/skills/framer-motion/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add dylantarre/animation-principles --skill framer-motion -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about framer-motion
How do I install framer-motion in Claude Code?
Run npx skills add dylantarre/animation-principles --skill framer-motion -a claude-code in your terminal.
What does the framer-motion skill do?
It provides patterns and code snippets for applying Disney's 12 animation principles using Framer Motion in React applications.
Which Framer Motion features are covered in the skill?
The skill covers animate, variants, whileHover and whileTap gesture props, transition, AnimatePresence, useAnimation, and the layout prop.
Source text
SKILL.md · MIT
---
name: framer-motion
description: Use when implementing Disney's 12 animation principles with Framer Motion in React applications
---
# Framer Motion Animation Principles
Implement all 12 Disney animation principles using Framer Motion's declarative React API.
## 1. Squash and Stretch
```jsx
<motion.div
animate={{ scaleX: [1, 1.2, 1], scaleY: [1, 0.8, 1] }}
transition={{ duration: 0.3, times: [0, 0.5, 1] }}
/>
```
## 2. Anticipation
```jsx
<motion.div
variants={{
idle: { y: 0, scaleY: 1 },
anticipate: { y: 10, scaleY: 0.9 },
jump: { y: -200 }
}}
initial="idle"
animate={["anticipate", "jump"]}
transition={{ duration: 0.5, times: [0, 0.2, 1] }}
/>
```
## 3. Staging
```jsx
<motion.div animate={{ filter: "blur(3px)", opacity: 0.6 }} /> {/* bg */}
<motion.div animate={{ scale: 1.1, zIndex: 10 }} /> {/* hero */}
```
## 4. Straight Ahead / Pose to Pose
```jsx
<motion.div
animate={{
x: [0, 100, 200, 300],
y: [0, -50, 0, -30]
}}
transition={{ duration: 1, ease: "easeInOut" }}
/>
```
## 5. Follow Through and Overlapping Action
```jsx
<motion.div animate={{ x: 200 }} transition={{ duration: 0.5 }}>
<motion.span
animate={{ x: 200 }}
transition={{ duration: 0.5, delay: 0.05 }} // hair
/>
<motion.span
animate={{ x: 200 }}
transition={{ duration: 0.6, delay: 0.1 }} // cape
/>
</motion.div>
```
## 6. Slow In and Slow Out
```jsx
<motion.div
animate={{ x: 300 }}
transition={{
duration: 0.6,
ease: [0.42, 0, 0.58, 1] // easeInOut cubic-bezier
}}
/>
// Or use: "easeIn", "easeOut", "easeInOut"
```
## 7. Arc
```jsx
<motion.div
animate={{
x: [0, 100, 200],
y: [0, -100, 0]
}}
transition={{ duration: 1, ease: "easeInOut" }}
/>
```
## 8. Secondary Action
```jsx
<motion.button
whileHover={{ scale: 1.05 }}
whileTap={{ scale: 0.95 }}
>
<motion.span
animate={{ rotate: [0, 10, -10, 0] }}
transition={{ duration: 0.3 }}
>
Icon
</motion.span>
</motion.button>
```
## 9. Timing
```jsx
const timings = {
fast: { duration: 0.15 },
normal: { duration: 0.3 },
slow: { duration: 0.6 },
spring: { type: "spring", stiffness: 300, damping: 20 }
};
```
## 10. Exaggeration
```jsx
<motion.div
animate={{ scale: 1.5, rotate: 720 }}
transition={{
type: "spring",
stiffness: 200,
damping: 10 // low damping = overshoot
}}
/>
```
## 11. Solid Drawing
```jsx
<motion.div
style={{ perspective: 1000 }}
animate={{ rotateX: 45, rotateY: 30 }}
transition={{ duration: 0.5 }}
/>
```
## 12. Appeal
```jsx
<motion.div
whileHover={{
scale: 1.02,
boxShadow: "0 20px 40px rgba(0,0,0,0.2)"
}}
transition={{ duration: 0.3 }}
/>
```
## Stagger Children
```jsx
const container = {
hidden: { opacity: 0 },
show: {
opacity: 1,
transition: { staggerChildren: 0.1 }
}
};
<motion.ul variants={container} initial="hidden" animate="show">
{items.map(item => <motion.li variants={itemVariant} />)}
</motion.ul>
```
## Key Framer Motion Features
- `animate` - Target state
- `variants` - Named animation states
- `whileHover` / `whileTap` - Gesture animations
- `transition` - Timing and easing
- `AnimatePresence` - Exit animations
- `useAnimation` - Programmatic control
- `layout` - Auto-animate layout changes
© dylantarre · MIT · dylantarre/animation-principles
Similar skills
Everything for Frontend and UI →framer-motion by other authors comes first.