Provides guidelines for SwiftUI animations in iOS 26/Swift 6.2 apps under clinic MVVM-C architecture, covering motion tokens, spring physics, gestures, transitions, micro-interactions, accessibility, and @Equatable enforcement. Use when writing, reviewing, or refactoring.
npx claudepluginhub joshuarweaver/cascade-code-general-misc-1 --plugin pproenca-dot-skills-1This skill uses the workspace's default tool permissions.
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.
Applies Acme Corporation brand guidelines including colors, fonts, layouts, and messaging to generated PowerPoint, Excel, and PDF documents.
Builds DCF models with sensitivity analysis, Monte Carlo simulations, and scenario planning for investment valuation and risk assessment.
Calculates profitability (ROE, margins), liquidity (current ratio), leverage, efficiency, and valuation (P/E, EV/EBITDA) ratios from financial statements in CSV, JSON, text, or Excel for investment analysis.
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 |