Motion Design
Purpose
Design the motion language for a feature or system, including transition specs, micro-interaction definitions, choreography principles, and reduced-motion alternatives.
Inputs
- Feature or component requiring motion design
- Existing animation patterns in the project (if any)
- Performance constraints (target FPS, device capabilities)
- Accessibility requirements (prefers-reduced-motion support)
Process
Step 1: Identify Motion Opportunities
Catalog where motion adds meaning:
- State transitions: Loading → loaded, collapsed → expanded, hidden → visible
- Navigation transitions: Screen push/pop, modal present/dismiss, tab switch
- Feedback responses: Button press, form submission, error shake, success check
- Attention guidance: New item appears, notification badge, scroll-to-target
- Data changes: List reorder, item add/remove, value count-up
Step 2: Define Motion Principles
Establish the motion language for this project:
- Duration scale: Micro (100ms), short (200ms), medium (300ms), long (500ms)
- Easing curves: Enter (ease-out), exit (ease-in), standard (ease-in-out)
- Stagger: Delay between sequential items (50-100ms per item, max 5 items)
- Distance: How far elements travel relative to their size
Step 3: Spec Each Animation
For each motion opportunity, define:
- Property: What changes (opacity, transform, height, color)
- Duration: How long (from the duration scale)
- Easing: Which curve (from the easing set)
- Delay: When it starts relative to the trigger
- Direction: Where it moves from/to
Step 4: Design Choreography
For multi-element transitions:
- Entrance order: What appears first, second, third
- Stagger timing: Delay between each element
- Shared elements: Elements that morph between states
- Exit choreography: Reverse of entrance, or distinct exit pattern
Step 5: Reduced-Motion Alternatives
For every animation, define the prefers-reduced-motion alternative:
- Instant transitions: Replace motion with opacity crossfade
- Remove parallax: Static positioning instead
- Simplify choreography: Single fade-in instead of staggered entrance
- Keep functional animation: Loading spinners stay (they communicate state)
Step 6: Performance Considerations
Verify motion feasibility:
- Composite-only properties: Prefer transform and opacity (GPU-accelerated)
- Avoid layout thrash: Don't animate width, height, top, left
- will-change hints: Add for elements that will animate
- 60fps budget: Each frame must complete in <16.6ms
Output Format
# Motion Design Specification
## Motion Principles
| Property | Value | Usage |
|----------|-------|-------|
| Duration (micro) | 100ms | Hover, focus |
| Duration (short) | 200ms | Expand, collapse |
| Duration (medium) | 300ms | Page transitions |
| Ease (enter) | cubic-bezier(0, 0, 0.2, 1) | Elements appearing |
| Ease (exit) | cubic-bezier(0.4, 0, 1, 1) | Elements leaving |
| Stagger | 50ms | List items |
## Animation Specs
### [Component/Interaction Name]
**Trigger:** [User action or state change]
**Property:** [What changes]
**From → To:** [Start value → End value]
**Duration:** [From scale]
**Easing:** [From set]
**Reduced motion:** [Alternative]
## Choreography
### [Transition Name]
1. [Element] fades in at 0ms (200ms, ease-out)
2. [Element] slides up at 50ms (200ms, ease-out)
3. [Element] fades in at 100ms (200ms, ease-out)
## Reduced Motion Summary
| Animation | Full Motion | Reduced Motion |
|-----------|------------|----------------|
| Page enter | Slide + fade | Instant fade |
| List stagger | Staggered slide-up | Single fade |
| Loading | Spinner | Spinner (kept) |
Quality Checks
Evolution Notes
1---2name: motion-design3department: "artisan"4description: "Animation principles, micro-interaction specs, and reduced-motion support"5version: 16triggers:7 - "animation"8 - "transition"9 - "motion"10 - "easing"11 - "micro-interaction"12 - "reduced-motion"13 - "choreography"14 - "loading"15 - "skeleton"16---1718# Motion Design1920## Purpose2122Design the motion language for a feature or system, including transition specs, micro-interaction definitions, choreography principles, and reduced-motion alternatives.2324## Inputs2526- Feature or component requiring motion design27- Existing animation patterns in the project (if any)28- Performance constraints (target FPS, device capabilities)29- Accessibility requirements (prefers-reduced-motion support)3031## Process3233### Step 1: Identify Motion Opportunities3435Catalog where motion adds meaning:36- **State transitions:** Loading → loaded, collapsed → expanded, hidden → visible37- **Navigation transitions:** Screen push/pop, modal present/dismiss, tab switch38- **Feedback responses:** Button press, form submission, error shake, success check39- **Attention guidance:** New item appears, notification badge, scroll-to-target40- **Data changes:** List reorder, item add/remove, value count-up4142### Step 2: Define Motion Principles4344Establish the motion language for this project:45- **Duration scale:** Micro (100ms), short (200ms), medium (300ms), long (500ms)46- **Easing curves:** Enter (ease-out), exit (ease-in), standard (ease-in-out)47- **Stagger:** Delay between sequential items (50-100ms per item, max 5 items)48- **Distance:** How far elements travel relative to their size4950### Step 3: Spec Each Animation5152For each motion opportunity, define:53- **Property:** What changes (opacity, transform, height, color)54- **Duration:** How long (from the duration scale)55- **Easing:** Which curve (from the easing set)56- **Delay:** When it starts relative to the trigger57- **Direction:** Where it moves from/to5859### Step 4: Design Choreography6061For multi-element transitions:62- **Entrance order:** What appears first, second, third63- **Stagger timing:** Delay between each element64- **Shared elements:** Elements that morph between states65- **Exit choreography:** Reverse of entrance, or distinct exit pattern6667### Step 5: Reduced-Motion Alternatives6869For every animation, define the prefers-reduced-motion alternative:70- **Instant transitions:** Replace motion with opacity crossfade71- **Remove parallax:** Static positioning instead72- **Simplify choreography:** Single fade-in instead of staggered entrance73- **Keep functional animation:** Loading spinners stay (they communicate state)7475### Step 6: Performance Considerations7677Verify motion feasibility:78- **Composite-only properties:** Prefer transform and opacity (GPU-accelerated)79- **Avoid layout thrash:** Don't animate width, height, top, left80- **will-change hints:** Add for elements that will animate81- **60fps budget:** Each frame must complete in <16.6ms8283## Output Format8485```markdown86# Motion Design Specification8788## Motion Principles89| Property | Value | Usage |90|----------|-------|-------|91| Duration (micro) | 100ms | Hover, focus |92| Duration (short) | 200ms | Expand, collapse |93| Duration (medium) | 300ms | Page transitions |94| Ease (enter) | cubic-bezier(0, 0, 0.2, 1) | Elements appearing |95| Ease (exit) | cubic-bezier(0.4, 0, 1, 1) | Elements leaving |96| Stagger | 50ms | List items |9798## Animation Specs99100### [Component/Interaction Name]101**Trigger:** [User action or state change]102**Property:** [What changes]103**From → To:** [Start value → End value]104**Duration:** [From scale]105**Easing:** [From set]106**Reduced motion:** [Alternative]107108## Choreography109### [Transition Name]1101. [Element] fades in at 0ms (200ms, ease-out)1112. [Element] slides up at 50ms (200ms, ease-out)1123. [Element] fades in at 100ms (200ms, ease-out)113114## Reduced Motion Summary115| Animation | Full Motion | Reduced Motion |116|-----------|------------|----------------|117| Page enter | Slide + fade | Instant fade |118| List stagger | Staggered slide-up | Single fade |119| Loading | Spinner | Spinner (kept) |120```121122## Quality Checks123124- [ ] Every animation has a purpose (communicates state change, guides attention, or provides feedback)125- [ ] Duration and easing values come from the defined scale, not arbitrary values126- [ ] Every animation has a prefers-reduced-motion alternative127- [ ] Animations use composite-only properties (transform, opacity) where possible128- [ ] Stagger timing doesn't exceed 5 items (cap the stagger, fade the rest)129- [ ] No animation exceeds 500ms (users perceive delays >400ms as laggy)130131## Evolution Notes132<!-- Observations appended after each use -->