When to Use
User needs motion designed or implemented inside a product UI. Agent turns vague requests into motion contracts, stack-specific implementation choices, and testable acceptance criteria across Flutter, React, Next.js, SwiftUI, Compose, React Native, and broader web stacks.
Use this for micro-interactions, navigation transitions, shared-element flows, loading states, gesture feedback, and motion system design. Do not use it for video editing, GIF rendering, or media encoding.
Architecture
Memory lives in ~/animate/. If ~/animate/ does not exist, run setup.md. See memory-template.md for structure and status fields.
~/animate/
|- memory.md # Durable motion preferences and platform context
|- tokens.md # Approved duration, easing, and spring ladders
|- patterns.md # Proven interaction and transition patterns
|- platform-notes.md # Stack-specific implementation decisions
`- qa.md # Regressions, low-end findings, and accessibility notes
Quick Reference
Use the smallest relevant file for the current task.
| Topic |
File |
| Setup flow |
setup.md |
| Memory template |
memory-template.md |
| Motion system and spec contract |
motion-system.md |
| Platform routing by stack |
platform-routing.md |
| Starter snippets by stack |
implementation-snippets.md |
| Common app animation patterns |
pattern-catalog.md |
| Performance and accessibility guardrails |
performance-accessibility.md |
| QA and regression checks |
qa-playbook.md |
Core Rules
1. Start from Product Intent and State Change
- Define the trigger, user goal, and state transition before choosing an effect.
- Map motion to one of five jobs: orientation, feedback, continuity, emphasis, or delight.
- If the intent is unclear, do not animate yet.
2. Write a Motion Contract Before Code
Every proposal must specify:
- Trigger and affected surfaces
- Initial state, end state, and reduced-motion fallback
- Duration, easing or spring, delay or stagger, and cancellation behavior
- Acceptance criteria: responsiveness, accessibility, parity, and performance
No vague wording like "smooth" or "premium" without values.
3. Route to the Safest Native Abstraction
Use the highest-level API that solves the job:
- Flutter: implicit animation widgets,
AnimatedSwitcher, TweenAnimationBuilder, Hero
- React and Next.js: CSS-first transitions, Motion presence/layout APIs, and router-safe transitions before bespoke choreography
- SwiftUI:
withAnimation, content transitions, matchedGeometryEffect
- Compose:
animate*AsState, AnimatedVisibility, updateTransition
- React Native: native-thread or worklet-safe animation paths before JS-thread choreography
- Web: CSS
transform and opacity, View Transitions, or framework-native transitions before GSAP-level complexity
Avoid low-level animation code when a higher-level primitive already handles interruption and lifecycle.
4. Optimize for Compositor-Safe Motion and Interruption
- Prefer transform, opacity, color, and scale patterns that keep layout stable.
- Avoid width, height, top, left, and layout-driven loops unless the stack provides a dedicated layout animation primitive.
- Define behavior for rapid taps, back gestures, dismiss, re-render, offscreen, and navigation cancel.
- Users should never get stuck behind an animation.
5. Ship Accessible Variants by Default
- Respect reduced-motion and system animation-scale settings.
- Replace large travel, parallax, bounce, blur-heavy flourishes, and infinite loops with calmer equivalents.
- Never rely on movement alone to communicate status.
- Keep focus order, screen reader output, and hit targets stable during motion.
6. Cover Real Product States, Not Only the Happy Path
- Animate loading, success, error, empty, disabled, retry, and optimistic-update states when relevant.
- Coordinate navigation, overlays, lists, forms, and async data so motion still works with latency and content changes.
- Deliver a sober V1 first, then a more expressive V2 only when constraints allow.
7. Verify with Previews, Tests, and Device Reality
- Leave deterministic previews, stories, or demo toggles for the motion states you touched.
- Add or update behavior, E2E, or visual tests when the app stack supports them.
- Validate reduced motion, mid-tier performance, and interrupted flows before calling it done.
Common Traps
- Pretty animation without a user-facing reason -> extra motion, less clarity.
- Hardcoded timings per screen -> inconsistent product feel and painful iteration.
- JS or main-thread choreography for critical mobile motion -> dropped frames under load.
- Animating only happy-path states -> broken UX on loading, error, or rapid retries.
- Missing cancellation rules -> stuck overlays, ghost states, or navigation glitches.
- Shipping only one variant -> accessibility regressions and poor low-end performance.
Security & Privacy
Data that leaves your machine:
- None by default from this skill itself.
Data that stays local:
- Motion preferences, approved tokens, platform notes, and QA learnings under
~/animate/.
This skill does NOT:
- Upload builds, videos, or telemetry automatically.
- Modify files outside
~/animate/ for memory.
- Disable accessibility settings.
- Modify its own
SKILL.md.
Related Skills
Install with clawhub install <slug> if user confirms:
flutter - Widget lifecycles and performance rules useful for Flutter motion.
react - Component and rendering patterns that shape animation behavior in React apps.
react-native - Mobile lifecycle and animation-thread constraints for React Native.
swift - Swift and SwiftUI implementation patterns for Apple platforms.
android - Android and Compose implementation details for native motion.
Feedback
- If useful:
clawhub star animate
- Stay updated:
clawhub sync
1---2name: animate3description: Animate app and web UIs across Flutter, React, SwiftUI, Compose, and React Native with motion systems, guardrails, and reduced-motion fallbacks.4---56## When to Use78User needs motion designed or implemented inside a product UI. Agent turns vague requests into motion contracts, stack-specific implementation choices, and testable acceptance criteria across Flutter, React, Next.js, SwiftUI, Compose, React Native, and broader web stacks.910Use this for micro-interactions, navigation transitions, shared-element flows, loading states, gesture feedback, and motion system design. Do not use it for video editing, GIF rendering, or media encoding.1112## Architecture1314Memory lives in `~/animate/`. If `~/animate/` does not exist, run `setup.md`. See `memory-template.md` for structure and status fields.1516```text17~/animate/18|- memory.md # Durable motion preferences and platform context19|- tokens.md # Approved duration, easing, and spring ladders20|- patterns.md # Proven interaction and transition patterns21|- platform-notes.md # Stack-specific implementation decisions22`- qa.md # Regressions, low-end findings, and accessibility notes23```2425## Quick Reference2627Use the smallest relevant file for the current task.2829| Topic | File |30|-------|------|31| Setup flow | `setup.md` |32| Memory template | `memory-template.md` |33| Motion system and spec contract | `motion-system.md` |34| Platform routing by stack | `platform-routing.md` |35| Starter snippets by stack | `implementation-snippets.md` |36| Common app animation patterns | `pattern-catalog.md` |37| Performance and accessibility guardrails | `performance-accessibility.md` |38| QA and regression checks | `qa-playbook.md` |3940## Core Rules4142### 1. Start from Product Intent and State Change43- Define the trigger, user goal, and state transition before choosing an effect.44- Map motion to one of five jobs: orientation, feedback, continuity, emphasis, or delight.45- If the intent is unclear, do not animate yet.4647### 2. Write a Motion Contract Before Code48Every proposal must specify:49- Trigger and affected surfaces50- Initial state, end state, and reduced-motion fallback51- Duration, easing or spring, delay or stagger, and cancellation behavior52- Acceptance criteria: responsiveness, accessibility, parity, and performance5354No vague wording like "smooth" or "premium" without values.5556### 3. Route to the Safest Native Abstraction57Use the highest-level API that solves the job:58- Flutter: implicit animation widgets, `AnimatedSwitcher`, `TweenAnimationBuilder`, `Hero`59- React and Next.js: CSS-first transitions, Motion presence/layout APIs, and router-safe transitions before bespoke choreography60- SwiftUI: `withAnimation`, content transitions, `matchedGeometryEffect`61- Compose: `animate*AsState`, `AnimatedVisibility`, `updateTransition`62- React Native: native-thread or worklet-safe animation paths before JS-thread choreography63- Web: CSS `transform` and `opacity`, View Transitions, or framework-native transitions before GSAP-level complexity6465Avoid low-level animation code when a higher-level primitive already handles interruption and lifecycle.6667### 4. Optimize for Compositor-Safe Motion and Interruption68- Prefer transform, opacity, color, and scale patterns that keep layout stable.69- Avoid width, height, top, left, and layout-driven loops unless the stack provides a dedicated layout animation primitive.70- Define behavior for rapid taps, back gestures, dismiss, re-render, offscreen, and navigation cancel.71- Users should never get stuck behind an animation.7273### 5. Ship Accessible Variants by Default74- Respect reduced-motion and system animation-scale settings.75- Replace large travel, parallax, bounce, blur-heavy flourishes, and infinite loops with calmer equivalents.76- Never rely on movement alone to communicate status.77- Keep focus order, screen reader output, and hit targets stable during motion.7879### 6. Cover Real Product States, Not Only the Happy Path80- Animate loading, success, error, empty, disabled, retry, and optimistic-update states when relevant.81- Coordinate navigation, overlays, lists, forms, and async data so motion still works with latency and content changes.82- Deliver a sober V1 first, then a more expressive V2 only when constraints allow.8384### 7. Verify with Previews, Tests, and Device Reality85- Leave deterministic previews, stories, or demo toggles for the motion states you touched.86- Add or update behavior, E2E, or visual tests when the app stack supports them.87- Validate reduced motion, mid-tier performance, and interrupted flows before calling it done.8889## Common Traps9091- Pretty animation without a user-facing reason -> extra motion, less clarity.92- Hardcoded timings per screen -> inconsistent product feel and painful iteration.93- JS or main-thread choreography for critical mobile motion -> dropped frames under load.94- Animating only happy-path states -> broken UX on loading, error, or rapid retries.95- Missing cancellation rules -> stuck overlays, ghost states, or navigation glitches.96- Shipping only one variant -> accessibility regressions and poor low-end performance.9798## Security & Privacy99100**Data that leaves your machine:**101- None by default from this skill itself.102103**Data that stays local:**104- Motion preferences, approved tokens, platform notes, and QA learnings under `~/animate/`.105106**This skill does NOT:**107- Upload builds, videos, or telemetry automatically.108- Modify files outside `~/animate/` for memory.109- Disable accessibility settings.110- Modify its own `SKILL.md`.111112## Related Skills113Install with `clawhub install <slug>` if user confirms:114- `flutter` - Widget lifecycles and performance rules useful for Flutter motion.115- `react` - Component and rendering patterns that shape animation behavior in React apps.116- `react-native` - Mobile lifecycle and animation-thread constraints for React Native.117- `swift` - Swift and SwiftUI implementation patterns for Apple platforms.118- `android` - Android and Compose implementation details for native motion.119120## Feedback121122- If useful: `clawhub star animate`123- Stay updated: `clawhub sync`