Swift Development
Swift language-level guidance that applies across all Apple platforms.
When This Skill Activates
Use this skill when the user:
- Asks about Swift concurrency (async/await, actors, Sendable, TaskGroup)
- Needs help with Swift 6 strict concurrency migration
- Has data race or actor isolation errors
- Asks about InlineArray, Span, or low-level memory performance
- Wants to eliminate heap allocations or replace unsafe pointers
- Asks about modern Swift patterns independent of any specific platform
- Wants complexity/size limits (SwiftLint thresholds) on agent-written code
Available Modules
concurrency-patterns/
Swift concurrency architecture and patterns.
- Swift 6.2 approachable concurrency features (incl.
nonisolated(nonsending), Apple's adoption doctrine)
- Structured concurrency (async let, TaskGroup, .task modifier, task-local values)
- Actors, isolation, reentrancy, @MainActor, Sendable
- Runtime internals + profiling (cooperative pool, unsafe primitives, Swift Concurrency Instrument)
- Continuations for bridging legacy APIs
- Swift 6 strict concurrency migration guide
concurrency/
Swift 6.2 concurrency updates reference — the what-changed view (async-stays-on-caller, default MainActor inference, isolated conformances, @concurrent) with migration steps from 6.0/6.1 and top mistakes. Overlaps concurrency-patterns/swift62-concurrency.md by design: use this file when the question is "what changed in 6.2?", use concurrency-patterns when building or reviewing async code.
code-size/
Complexity and size limits for Swift code — SwiftLint threshold rules (cyclomatic complexity, function/type/file length, parameter count) with a violations-baseline adoption path so existing code never blocks. Part of the deterministic gauntlet with testing/fitness-functions and testing/coverage-ratchet.
memory/
InlineArray, Span, and the Swift performance cost model.
- InlineArray: fixed-size, stack-allocated collections with zero heap overhead
- Span family: safe, non-escapable access to contiguous memory (+ OutputRawSpan, swift-binary-parsing)
- Lifetime dependencies and non-escapable type constraints
swift-performance.md: the cost model — allocation, ARC/retain-release, exclusivity checks, dispatch, generics vs existentials, closures, ~Copyable ownership
How to Use
- Identify user's need from their question
- Read relevant module files from subdirectories
- Apply the guidance to their specific context
- Cross-reference with platform-specific skills (ios/, macos/) as needed
1---
2name: swift-development
3description: Swift language patterns and best practices including concurrency, performance, and modern idioms. Use for Swift language-level code review or architecture guidance.
4allowed-tools: [Read, Glob, Grep]
5last_verified: 2026-07-16
6review_by: 2027-06-22
7os_version: iOS 27 / macOS 27
8---
9
10# Swift Development
11
12Swift language-level guidance that applies across all Apple platforms.
13
14## When This Skill Activates
15
16Use this skill when the user:
17- Asks about Swift concurrency (async/await, actors, Sendable, TaskGroup)
18- Needs help with Swift 6 strict concurrency migration
19- Has data race or actor isolation errors
20- Asks about **InlineArray**, **Span**, or low-level memory performance
21- Wants to eliminate heap allocations or replace unsafe pointers
22- Asks about modern Swift patterns independent of any specific platform
23- Wants complexity/size limits (SwiftLint thresholds) on agent-written code
24
25## Available Modules
26
27### concurrency-patterns/
28Swift concurrency architecture and patterns.
29- Swift 6.2 approachable concurrency features (incl. `nonisolated(nonsending)`, Apple's adoption doctrine)
30- Structured concurrency (async let, TaskGroup, .task modifier, task-local values)
31- Actors, isolation, reentrancy, @MainActor, Sendable
32- Runtime internals + profiling (cooperative pool, unsafe primitives, Swift Concurrency Instrument)
33- Continuations for bridging legacy APIs
34- Swift 6 strict concurrency migration guide
35
36### concurrency/
37Swift 6.2 concurrency **updates** reference — the what-changed view (async-stays-on-caller, default MainActor inference, isolated conformances, @concurrent) with migration steps from 6.0/6.1 and top mistakes. Overlaps `concurrency-patterns/swift62-concurrency.md` by design: use this file when the question is "what changed in 6.2?", use concurrency-patterns when building or reviewing async code.
38
39### code-size/
40Complexity and size limits for Swift code — SwiftLint threshold rules (cyclomatic complexity, function/type/file length, parameter count) with a violations-baseline adoption path so existing code never blocks. Part of the deterministic gauntlet with `testing/fitness-functions` and `testing/coverage-ratchet`.
41
42### memory/
43InlineArray, Span, and the Swift performance cost model.
44- InlineArray: fixed-size, stack-allocated collections with zero heap overhead
45- Span family: safe, non-escapable access to contiguous memory (+ OutputRawSpan, swift-binary-parsing)
46- Lifetime dependencies and non-escapable type constraints
47- `swift-performance.md`: the cost model — allocation, ARC/retain-release, exclusivity checks, dispatch, generics vs existentials, closures, `~Copyable` ownership
48
49## How to Use
50
511. Identify user's need from their question
522. Read relevant module files from subdirectories
533. Apply the guidance to their specific context
544. Cross-reference with platform-specific skills (ios/, macos/) as needed