金色时刻 · 15:48
让好资源,触手可及
AGENT SKILL

axiom-ios-concurrency

axiom-ios-concurrency 是面向软件开发的 Agent Skill,来自 CharlesWiltgen/Axiom。查看技能说明、操作步骤与使用约定,并通过原项目了解详细用法。

Use when writing ANY code with async, actors, threads, or seeing ANY concurrency error. Covers Swift 6 concurrency, @MainActor, Sendable, data races, async/await patterns, performance optimization.

SKILL.md

下载 MD ↓
nameaxiom-ios-concurrency
descriptionUse when writing ANY code with async, actors, threads, or seeing ANY concurrency error. Covers Swift 6 concurrency, @MainActor, Sendable, data races, async/await patterns, performance optimization.
user-invocable

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: 1. Try ios-concurrency FIRST — Main thread blocking is the #1 cause of UI freezes. Check for synchronous work on @MainActor before profiling. 2. 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

来源:CharlesWiltgen/Axiom · MIT 许可 · 许可原文 · MD 为来源页保存的历史版本