animation-principles
iart-ai/motion-design-skills
Tech-agnostic motion design foundation: timing, easing, spacing, and rhythm for natural-feeling animation.
What is animation-principles?
This skill answers how something should move independent of the tool used. It provides concrete decisions on duration, easing curves, stagger offsets, and spring configs by grounding motion in emotional intent, visual narrative, and physics intuition. Use it when animation feels stiff, floaty, robotic, or cheap, or when choosing timing and easing for any transition.
- Diagnose why motion feels stiff, floaty, mechanical, or cheap and prescribe fixes
- Choose easing curves (ease-out for enter, ease-in for exit, ease-in-out for reposition, overshoot for branded feel) matched to action type
- Set durations scaled to distance and element size (100–200ms for micro-interactions, 400–800ms for hero elements)
- Design stagger offsets for lists and grids (40–80ms between items, capped at 600–800ms total reveal)
- Apply anticipation, follow-through, and arcs to make motion feel physical and believable
- Sync keyframes to musical beats and establish visual rhythm
How to install animation-principles
npx skills add https://github.com/iart-ai/motion-design-skills --skill animation-principlesHow to use animation-principles
- 1.Identify the action type (enter, exit, reposition, or loop) and emotional intent (urgency, elegance, playfulness)
- 2.Select the matching easing curve from the quick reference table or hand-shape it in your tool's graph editor
- 3.Set duration based on element size and distance traveled, scaling ~30–50% longer for larger or further moves
- 4.For multi-element reveals, apply stagger offsets (40–80ms per item) following the eye's natural reading direction
- 5.Layer anticipation (60–120ms counter-move) and follow-through (40–80ms trailing settle) to add physical believability
- 6.Quantize key moments to musical beats if motion accompanies audio
Use cases
- Fixing a button that feels sluggish or robotic by switching from linear to ease-out easing
- Choosing a 500ms duration and cubic-bezier curve for a modal panel entrance that feels weighted and intentional
- Staggering a list reveal with 60ms offsets so items cascade naturally instead of appearing all at once
- Adding a 0.95 scale anticipation dip before a pop animation to sell the impact
- Syncing a hero card landing to a musical beat and layering its shadow and label settle 60ms later for follow-through
- Motion designers and animators building in any tool (After Effects, web, mobile, game engines)
- UI/UX designers choosing transition timings and easing for interactive components
- Developers implementing choreographed sequences or scroll-tied reveals
- Anyone diagnosing why their animation reads as cheap, stiff, or weightless
animation-principles FAQ
Use linear only for continuous loops (spinners, marquees, infinite scroll). Every discrete event the eye perceives needs acceleration—enter with ease-out, exit with ease-in, reposition with ease-in-out. Linear reads as robotic.
Start with the element type: 100–200ms for micro-interactions, 200–400ms for UI transitions, 400–800ms for hero elements. Then scale by distance and size—if an element travels twice as far, add ~30–50% more duration to keep perceived velocity constant.
Stagger is the delay offset between when each item in a list starts (40–80ms per item). Overlap is when secondary motion (shadow, label) settles after the primary motion stops (40–80ms later). Both create rhythm and believability.
Cut the duration by 30% and sharpen the easing curve—move the control points closer to the corners of the cubic-bezier. Floaty usually means the ease-out is too gentle or the duration is too long.
Yes. Springs (stiffness 300, damping 30, mass 1) are better for interactive, interruptible motion like drag-release. Duration + easing is better for choreographed, timeline-locked sequences where exact sync to beats or edits matters.
Full instructions (SKILL.md)
Source of truth, from iart-ai/motion-design-skills.
name: animation-principles description: This skill should be used when the user asks to "make this animation feel natural", "fix motion that feels stiff/floaty/cheap", "my animation looks robotic", "choose an easing curve", "how do I use the Graph Editor", "add overshoot or bounce", "Easy Ease isn't enough", "make snappy motion", "pick a duration for this transition", "stagger a list animation", "sync animation to a beat", or "review motion for good timing". It is the tech-agnostic foundation for deciding how something should move. version: 0.1.0
Motion Principles
Decide how something should move so it feels right — independent of the tool used to build it. This skill answers timing, easing, spacing, weight, and rhythm. It does not pick a tech stack; it produces concrete numbers (durations, cubic-bezier curves, stagger offsets, spring configs) ready to hand to any implementation.
When to use
- Motion feels stiff, floaty, mechanical, robotic, or cheap and needs diagnosis.
- Choosing a clip or transition's duration, easing curve, and stagger offset.
- Reviewing whether motion respects physics intuition (weight, follow-through, arcs).
- Synchronizing keyframes to a musical beat or edit accent.
Three pillars — settle these before any number
Every piece of motion should answer three questions before you pick a duration or curve. Skip them and you get technically-correct motion that feels like nothing. These are the shared vocabulary the rest of the collection refers back to.
| Pillar | The question | What it drives |
|---|---|---|
| Emotional intent | What should the viewer feel? (joy, calm, urgency, trust, elegance) | Easing, duration, amplitude/overshoot |
| Visual narrative | What's the micro-story? Setup → action → resolution | Sequencing, staging, what enters when |
| Motion craft | How do we make it believable? | Physics, secondary motion, arcs, follow-through |
Three motion layers — depth, not flatness
Flat motion = only the main thing moves. Believable motion runs three layers at once:
- Primary — the main action the eye follows (the hero move).
- Secondary — supporting richness reacting to the primary (a shadow shifting, an icon nudging, a label settling late).
- Ambient — background life that never demands attention (slow gradient drift, a low-contrast pulse).
The judgment layer (
motion-art-direction) calls these Hero / Support / Texture — same three layers, ranked for what earns motion. Primary≈Hero, Secondary≈Support, Ambient≈Texture.
Core principles
Easing is the single biggest lever
Linear motion reads as robotic. Reserve linear for continuous loops (spinners, marquees, infinite scroll) only. Everything an eye perceives as a discrete event needs acceleration.
Match the curve to the action:
- Enter / appear -> ease-out (fast start, gentle settle). Object arrives with energy and decelerates into place.
cubic-bezier(0.16, 1, 0.3, 1). - Exit / disappear -> ease-in (gentle start, fast end). Object accelerates away.
cubic-bezier(0.7, 0, 0.84, 0). - Move / reposition (stays on screen) -> ease-in-out (symmetric).
cubic-bezier(0.65, 0, 0.35, 1). - Playful / branded -> slight overshoot.
cubic-bezier(0.34, 1.56, 0.64, 1)(the1.56pushes past 1.0, creating an overshoot-and-settle that reads as "weight").
Rule of thumb: the eye forgives a slow start far less than a slow end. When in doubt, decelerate into rest.
Hand-shaping easing (After Effects). When keyframing by hand rather than supplying a curve, the same principles map to the Graph Editor: shape the Speed Graph so the ends flatten toward zero, and push deceleration influence to 80–90% for a snappy launch and smooth settle. F9 (Easy Ease) is only a 33% symmetric starting point — make it asymmetric. See references/easing-graph-editor.md for Graph Editor reading, handle/influence techniques, and step-by-step overshoot, anticipation, and bounce recipes (including a decaying-bounce expression).
Timing communicates weight and importance
| Element | Duration |
|---|---|
| Micro-interaction (hover, toggle, tap feedback) | 100-200ms |
| UI transition (panel, modal, page region) | 200-400ms |
| Hero / large element / full-screen | 400-800ms |
| Cinematic camera move | 800-2000ms |
Distance and size scale duration. A small icon moving 20px and a full-bleed panel moving 800px should NOT share a duration — the panel needs more time or it looks weightless. A practical scaling: keep perceived velocity roughly constant by adding ~30-50% duration when distance or area roughly doubles. Heavy objects start slowly and overshoot less; light objects snap and may bounce.
Spacing and stagger create rhythm
Never reveal a list, grid, or group all at once — it reads as a single flat event. Stagger each child's start.
- Lists / sequential items: 40-80ms between items.
- Dense grids: 20-40ms (more items, less per-item delay, or the tail drags).
- Cap total reveal at roughly 600-800ms for a group; if
count * offsetexceeds that, shrink the offset or switch to a distance-based stagger (items further from an origin point start later). - Stagger direction should follow the eye: top-to-bottom, or radiating from a focal point.
The 1/3 Rule (two forms, both universal):
- Distance — no element travels more than ~1/3 of the screen without an intermediate keyframe or a scale/opacity change. Long unbroken slides read as "the template moved," not "something happened."
- Simultaneity — with 3+ elements, keep no more than ~1/3 in active motion at once. The rest hold or move as ambient. Everything moving together = noise with no focal point.
Anticipation and follow-through sell physical motion
- Anticipation: a tiny counter-move before the main action (a button dips
scale 0.95before popping, a character crouches before jumping). 60-120ms is enough. - Follow-through / overlapping action: trailing parts keep moving after the main body stops (a hero card lands, then its shadow and label settle 40-80ms later). Stagger the settle of attached elements rather than stopping everything on the same frame.
- Arcs: natural movement curves; pure straight-line translation of an organic object looks mechanical. Add a slight arc to x/y or animate a path.
Beat-sync and rhythm
When motion accompanies audio, land impact keyframes (a hit, a cut, a reveal) on the beat, not between beats. At 120 BPM a beat is 500ms; an eighth-note grid is 250ms. Quantize key moments to that grid. For edits without music, establish a visual pulse (e.g. one major event per ~500-800ms) so the piece breathes consistently.
Spring vs. duration-based motion
Springs (mass / stiffness / damping) self-determine duration and feel more physical for interactive, interruptible motion (drag-release, gestures). Duration+easing is better for choreographed, timeline-locked sequences (video, scroll-tied reveals) where exact sync matters. A snappy default spring: stiffness 300, damping 30, mass 1. See references/easing-curves.md for a full spring table.
Diagnosing common failures
- Feels stiff/robotic -> using
linearor symmetric easing on an enter; switch to ease-out. - Feels floaty/sluggish -> duration too long or ease-out too gentle; cut duration 30%, sharpen the curve.
- Feels cheap/janky -> everything appears at once (no stagger), or all elements share one duration regardless of size.
- Feels mechanical despite easing -> no anticipation, no follow-through, straight-line paths; add arcs and overlap.
Quick reference
| Need | Use |
|---|---|
| Enter | cubic-bezier(0.16, 1, 0.3, 1), 300-500ms |
| Exit | cubic-bezier(0.7, 0, 0.84, 0), 200-300ms |
| Move | cubic-bezier(0.65, 0, 0.35, 1), 300-400ms |
| Branded pop | cubic-bezier(0.34, 1.56, 0.64, 1), 400-600ms |
| List stagger | 40-80ms per item, cap ~700ms total |
| Loop only | linear |
Reference files
references/easing-curves.md— named cubic-bezier library with exact values, spring configs (Framer/react-spring/iOS), and per-element-type duration guidance.references/easing-graph-editor.md— After Effects Graph Editor craft: speed graph vs value graph, easing handles and influence/velocity numbers, and step-by-step snappy, overshoot, anticipation, and bounce recipes.references/twelve-principles.md— all 12 Disney principles, each with a concrete, numeric motion-graphics example.
Related skills
More from iart-ai/motion-design-skills and the wider catalog.

logo-animation
Animate logos for web, video, and apps with one clear technique—draw, build, morph, or loop.

motion-art-direction
Define motion rules before animating—lock easing, timing, and hierarchy so every shot feels intentional.

shot-composition
Plan frame layouts, focal points, camera moves, and multi-aspect safe areas for motion design.

60fps-animation
Fix janky animations by animating only transform and opacity, skipping expensive layout and paint work.

accessible-animation
Respect prefers-reduced-motion with tiered degradation, not all-or-nothing disabling.

gsap-web
Code-driven web animations: scroll storytelling, timelines, text reveals, and layout transitions with GSAP.