skills/mobile/ios-swiftui-specialist/SKILL.md
iOS and SwiftUI specialist knowledge — SwiftUI view composition, state management (@State/@Observable/@Bindable), NavigationStack, SF Symbols, Apple HIG compliance, Swift concurrency, accessibility, and testing with XCTest/Swift Testing.
npx skillsauth add devjarus/coding-agent ios-swiftui-specialistInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Deep expertise in native iOS development with SwiftUI, following Apple Human Interface Guidelines and modern Swift patterns.
@State must be private — view-owned value types only@Binding only where child needs to modify parent state@State or @StateObject@StateObject for view-owned reference types; @ObservedObject for injected@State with @Observable classes and @Bindable for bindings@Environment for dependency injection (not global state)@SceneStorage for lightweight state preservation across launches.indices for dynamic content).animation(_:value:) must include the value parameter.transition() for view insertion/removal.fixedSize() overuse — causes layout instabilityLazyVStack/LazyHStack in ScrollView — eager stacks load all childrenEquatableView or custom Equatable for expensive viewsasync/await for all asynchronous work@MainActor for UI-updating code.task modifier for view lifecycle-bound async work (auto-cancelled).task or Task { } for heavy work@Test, #expect) for iOS 16+@State (creates independent copy, loses sync)List inside ScrollView (nested scrolling)#available gating for newer APIsNavigationLink state issues — values must be Hashableself in closures#available with fallbacks for deployment targettesting
Multi-source research method — decompose a question, fan out parallel investigators, interleaved-think each result, verify claims adversarially, synthesize a cited answer. Use for breadth-heavy research, stack comparisons, "which approach wins" questions.
testing
Decide when to use unit vs integration vs e2e tests, and when to mock vs use the real thing per dependency. Dependency injection is the enabler — without it you end up monkey-patching imports. Apply when writing tests of any kind.
development
Test-driven development process — write failing test, implement to pass, refactor. Use when implementing any feature or fixing bugs.
development
Patterns for sharing types, API contracts, and validation schemas between frontend and backend. Use when multiple domains consume the same data shapes to prevent contract drift.