Guides iOS developers in writing SwiftUI animations aligned with clinic modular MVVM-C architecture, covering motion tokens, spring physics, and accessibility.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pproenca-dot-skills-1:ios-animationsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Opinionated, strict animation craft guide for SwiftUI iOS 26 / Swift 6.2 apps. Contains 50 rules across 8 categories, prioritized by impact. Derived from Airbnb Engineering motion patterns, Apple WWDC sessions, and Apple Human Interface Guidelines. Mandates @Equatable on every animated view, motion tokens for all spring/timing values, and design system tokens for layout.
Opinionated, strict animation craft guide for SwiftUI iOS 26 / Swift 6.2 apps. Contains 50 rules across 8 categories, prioritized by impact. Derived from Airbnb Engineering motion patterns, Apple WWDC sessions, and Apple Human Interface Guidelines. Mandates @Equatable on every animated view, motion tokens for all spring/timing values, and design system tokens for layout.
This skill is designed to work alongside swift-ui-architect and ios-design-system. All code examples follow the same non-negotiable constraints:
@Equatable macro on every view (Airbnb measured 15% scroll hitch reduction)@Observable for complex animation state that involves business logic triggers@State for view-owned animation state (toggle booleans, drag offsets)Spacing.xs/sm/md/lg, Radius.sm/md/lg — zero hardcoded layout numbersMotion.standard/responsive/playful — zero scattered spring literals.backgroundSurface, .accentPrimary — no raw Color literals in viewsThis skill is the motion layer — it teaches how to BUILD fluid, performant animations. When loaded alongside sibling skills:
| Sibling Skill | Its Focus | This Skill's Focus |
|---|---|---|
swift-ui-architect | Architecture (modular MVVM-C, route shells, protocol boundaries) | Animation architecture (motion tokens, spring selection, orchestration) |
ios-design-system | Design system infrastructure (tokens, styles, governance) | Motion tokens and animated component patterns |
ios-hig | HIG compliance patterns | Motion-specific HIG (reduce motion, spatial continuity) |
Out of scope: Designer-authored vector animations (use Lottie for After Effects exports). Complex UIKit transition controllers (see Airbnb's declarative transition framework). This skill covers programmatic SwiftUI animations only.
All guidance in this skill assumes the clinic modular MVVM-C architecture:
Domain + DesignSystem only (never Data, never sibling features)DependencyContainer, concrete coordinators, and Route Shell wiringDomain stays pure Swift and defines models plus repository, *Coordinating, ErrorRouting, and AppError contractsData owns SwiftData/network/sync/retry/background I/O and implements Domain protocolsReference these guidelines when:
| Priority | Category | Impact | Prefix | Rules |
|---|---|---|---|---|
| 1 | Spring Physics | CRITICAL | spring- | 8 |
| 2 | Timing & Feel | CRITICAL | feel- | 6 |
| 3 | Gesture Continuity | HIGH | gesture- | 7 |
| 4 | Spatial Transitions | HIGH | spatial- | 6 |
| 5 | Micro-interactions | HIGH | micro- | 6 |
| 6 | Orchestration | HIGH | orch- | 5 |
| 7 | Craft & Polish | HIGH | craft- | 5 |
| 8 | Content Motion | MEDIUM-HIGH | content- | 5 |
spring-motion-tokens — Define motion tokens as a caseless enum for all spring presetsspring-smooth-default — Default to .smooth spring for all UI transitionsspring-snappy-responsive — Use .snappy spring for responsive interactionsspring-bouncy-celebration — Use .bouncy spring for playful and celebratory momentsspring-custom-parameters — Tune custom springs with response and dampingFractionspring-velocity-preservation — Springs preserve velocity on interruptionspring-never-linear — Never use linear or easeInOut for interactive UIspring-completion-chaining — Use withAnimation completion for chained sequencesfeel-250ms-max — Keep UI animations under 250msfeel-faster-better — Faster animations almost always feel betterfeel-asymmetric-enter-exit — Use asymmetric timing for enter and exitfeel-distance-proportional — Match duration to distance traveledfeel-haptic-sync — Sync haptic feedback to visual animation keyframesfeel-stagger-timing — Stagger reveals at 30-50ms intervalsgesture-rubber-band — Rubber band at drag boundariesgesture-momentum-dismiss — Dismiss on velocity OR distance thresholdgesture-snap-points — Use velocity-aware snap pointsgesture-interruptible — Make all gesture animations interruptiblegesture-scroll-drag-conflict — Resolve scroll and drag gesture conflictsgesture-state-transient — Use GestureState for transient drag stategesture-projected-landing — Project gesture velocity for natural landing positionspatial-matched-geometry — Use matchedGeometryEffect for expand/collapse morphsspatial-zoom-navigation — Use zoom navigation transition for collection detail (iOS 18)spatial-transition-origin — Anchor transitions to their trigger locationspatial-hero-shared-element — Share multiple element IDs for rich hero animationsspatial-sheet-morph — Use matchedGeometryEffect for sheet presentationsspatial-tab-continuity — Maintain spatial direction in tab transitionsmicro-button-press-scale — Scale buttons to 0.97 on press for tactile feedbackmicro-haptic-pairing — Pair every visual state change with haptic feedbackmicro-symbol-effect — Use symbolEffect for SF Symbol animationsmicro-toggle-bounce — Add bounce to toggle state changesmicro-long-press-fill — Animate progressive fill for long press actionsmicro-loading-phase — Use repeating spring for organic loading statesorch-phase-animator — Use PhaseAnimator for multi-step sequencesorch-keyframe-animator — Use KeyframeAnimator for timeline-precise motionorch-stagger-children — Stagger child elements for orchestrated revealsorch-coordinated-entrance — Coordinate multi-element entrances with shared triggerorch-timeline-view — Use TimelineView for continuous repeating animationscraft-reduce-motion — Respect accessibilityReduceMotion with crossfade fallbackcraft-blur-bridge — Use blur to bridge imperfect transition statescraft-drawing-group — Use drawingGroup() for Metal-backed complex animationscraft-geometry-group — Use geometryGroup() to isolate layout animation propagationcraft-transaction-debug — Use Transaction to debug and override animation behaviorcontent-numeric-text — Use contentTransition(.numericText) for number changescontent-scroll-transition — Use scrollTransition for scroll-position effectscontent-visual-effect — Use visualEffect for position-aware animationscontent-symbol-replace — Animate symbol replacement with contentTransitioncontent-text-renderer — Use Text Renderer for character-level animation (iOS 18)Read individual reference files for detailed explanations with incorrect/correct code examples:
| File | Description |
|---|---|
| references/_sections.md | Category definitions and ordering |
| assets/templates/_template.md | Template for new rules |
| metadata.json | Version and reference information |
npx claudepluginhub joshuarweaver/cascade-code-general-misc-1 --plugin pproenca-dot-skills-1Guides SwiftUI animation patterns including implicit/explicit animations, transitions, phase/keyframe animations, Animatable protocol, and @Animatable macro. Use when implementing motion or transitions in views.
Writes Swift animation code using SwiftUI, UIKit, and Core Animation for iOS apps. Covers iOS 18-26 APIs like KeyframeAnimator, PhaseAnimator, matchedGeometryEffect for transitions, gestures, and design implementations.
Matches UI/UX interaction needs to proven SwiftUI animation patterns from curated open-source catalogs. Use when planning iOS/macOS screens where an interaction should feel alive.