iOS Concurrency Router
You MUST use this skill for ANY concurrency, async/await, threading, or Swift 6 concurrency work.
When to Use
Use this router when:
Writing async/await code Seeing concurrency errors (data races, actor isolation) Working with @MainActor Dealing with Sendable conformance Optimizing Swift performance Migrating to Swift 6 concurrency App freezes during loading (likely main thread blocking) Conflict Resolution
ios-concurrency vs ios-performance: When app freezes or feels slow:
Try ios-concurrency FIRST — Main thread blocking is the #1 cause of UI freezes. Check for synchronous work on @MainActor before profiling. Only use ios-performance if concurrency fixes don't help — Profile after ruling out obvious blocking.
ios-concurrency vs ios-build: When seeing Swift 6 concurrency errors:
Use ios-concurrency, NOT ios-build — Concurrency errors are CODE issues, not environment issues ios-build is for "No such module", simulator issues, build failures unrelated to Swift language errors
Rationale: A 2-second freeze during data loading is almost always await on main thread or missing background dispatch. Domain knowledge solves this faster than Time Profiler.
Routing Logic Swift Concurrency Issues
Swift 6 concurrency patterns → /skill axiom-swift-concurrency
async/await patterns @MainActor usage Actor isolation Sendable conformance Data race prevention Swift 6 migration
Swift performance → /skill axiom-swift-performance
Value vs reference types Copy-on-write optimization ARC overhead Generic specialization Collection performance
Synchronous actor access → /skill axiom-assume-isolated
MainActor.assumeIsolated @preconcurrency protocol conformances Legacy delegate callbacks Testing MainActor code synchronously
Thread-safe primitives → /skill axiom-synchronization
Mutex (iOS 18+) OSAllocatedUnfairLock (iOS 16+) Atomic types Lock vs actor decision
Parameter ownership → /skill axiom-ownership-conventions
borrowing/consuming modifiers Noncopyable types (~Copyable) ARC traffic reduction consume operator
Concurrency profiling → /skill axiom-concurrency-profiling
Swift Concurrency Instruments template Actor contention diagnosis Thread pool exhaustion Task visualization Decision Tree User asks about concurrency ├─ Concurrency errors? │ ├─ Data races? → swift-concurrency │ ├─ Actor isolation? → swift-concurrency │ ├─ @MainActor? → swift-concurrency │ └─ Sendable? → swift-concurrency │ ├─ Writing async code? → swift-concurrency │ ├─ assumeIsolated questions? → assume-isolated │ ├─ Mutex/lock/synchronization? → synchronization │ ├─ borrowing/consuming/ownership? → ownership-conventions │ ├─ Profile async performance? → concurrency-profiling │ └─ Performance optimization? → swift-performance
Critical Patterns
Swift 6 Concurrency (swift-concurrency):
Progressive journey: single-threaded → async → concurrent → actors @concurrent attribute for forced background execution Isolated conformances Main actor mode for approachable concurrency 11 copy-paste patterns
Swift Performance (swift-performance):
~Copyable for non-copyable types Copy-on-write (COW) patterns Value vs reference type decisions ARC overhead reduction Generic specialization Example Invocations
User: "I'm getting 'data race' errors in Swift 6" → Invoke: /skill axiom-swift-concurrency
User: "How do I use @MainActor correctly?" → Invoke: /skill axiom-swift-concurrency
User: "My app is slow due to unnecessary copying" → Invoke: /skill axiom-swift-performance
User: "Should I use async/await for this network call?" → Invoke: /skill axiom-swift-concurrency
User: "How do I use assumeIsolated?" → Invoke: /skill axiom-assume-isolated
User: "My delegate callback runs on main thread, how do I access MainActor state?" → Invoke: /skill axiom-assume-isolated
User: "Should I use Mutex or actor?" → Invoke: /skill axiom-synchronization
User: "What's the difference between os_unfair_lock and OSAllocatedUnfairLock?" → Invoke: /skill axiom-synchronization
User: "What does borrowing do in Swift?" → Invoke: /skill axiom-ownership-conventions
User: "How do I use ~Copyable types?" → Invoke: /skill axiom-ownership-conventions
User: "My async code is slow, how do I profile it?" → Invoke: /skill axiom-concurrency-profiling
User: "I think I have actor contention, how do I diagnose it?" → Invoke: /skill axiom-concurrency-profiling