swift-development — Claude Code skill: Swift concurrency and memory
Reviews Swift concurrency, memory and code size: helps you migrate to Swift 6 strict mode and cut heap allocations.
npx skills add rshankras/claude-code-apple-skills --skill swift-development -a claude-code
npx skills add rshankras/claude-code-apple-skills --skill swift -a claude-codeWhat swift-development does
This skill covers Swift at the language level, independent of any Apple platform. It activates when you ask about async/await, actors, Sendable or TaskGroup, hit actor isolation or data race errors, or want complexity limits on code an agent writes.
Four modules sit inside. concurrency-patterns/ holds the architecture side: structured concurrency, actors, @MainActor, continuations for bridging callback APIs, and a migration guide to Swift 6 strict concurrency. A separate concurrency/ file answers what changed in 6.2 and how to move from 6.0 or 6.1. code-size/ sets SwiftLint thresholds for cyclomatic complexity and function, type and file length, with a violations baseline so existing code never blocks the build. memory/ covers InlineArray, the Span family and the cost model: allocation, ARC, exclusivity checks, generics versus existentials.
The skill is limited to Read, Glob and Grep, so it inspects files and changes nothing. You make the edits yourself; the skill tells you where the problem is. If your project has no SwiftLint config yet, the code-size/ thresholds are yours to wire up by hand.
What it helps with
- work out why the compiler rejects an actor isolation call
- migrate a project to Swift 6 strict concurrency without freezing work
- drop heap allocations in a hot path with
InlineArray - bridge a callback-based API into async code with continuations
- set complexity thresholds for agent-generated Swift
Example prompts for the agent
- Why does this file fail the Sendable check?
- Help me migrate to Swift 6 strict concurrency — where do I start?
- Swap this array for InlineArray, the size is fixed
How to install swift-development
1Skills CLI (Vercel)
npx skills add rshankras/claude-code-apple-skills --skill swift-development -a claude-codenpx skills add rshankras/claude-code-apple-skills --skill swift -a claude-code2Manually: put the files in place
~/.claude/skills/swift/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/swift/
1Skills CLI (Vercel)
npx skills add rshankras/claude-code-apple-skills --skill swift -a codex2Manually: put the files in place
.agents/skills/swift/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add rshankras/claude-code-apple-skills --skill swift -a cursor2Manually: put the files in place
.cursor/skills/swift/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install rshankras/claude-code-apple-skills swift2Manually: put the files in place
.github/skills/swift/SKILL.md1Skills CLI (Vercel)
npx skills add rshankras/claude-code-apple-skills --skill swift -a gemini-cli2Platform CLI
gemini skills install https://github.com/rshankras/claude-code-apple-skills --path skills/swiftManually: put the files in place
.devin/skills/swift/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add rshankras/claude-code-apple-skills --skill swift -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about swift-development
How do I install swift-development in Claude?
Run npx skills add rshankras/claude-code-apple-skills --skill swift-development -a claude-code. The skill lands at ~/.claude/skills/swift/SKILL.md.
What does swift-development do?
It gives language-level Swift guidance: concurrency, Swift 6 migration, memory work and code size limits. Platform specifics come from the neighbouring ios/ and macos/ skills.
How is concurrency/ different from concurrency-patterns/?
concurrency/ answers what changed in 6.2, while concurrency-patterns/ is for writing or reviewing async code. The overlap between the two files is deliberate.
Source text
SKILL.md · MIT
--- name: swift-development description: Swift language patterns and best practices including concurrency, performance, and modern idioms. Use for Swift language-level code review or architecture guidance. allowed-tools: [Read, Glob, Grep] last_verified: 2026-07-16 review_by: 2027-06-22 os_version: iOS 27 / macOS 27 --- # 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 1. Identify user's need from their question 2. Read relevant module files from subdirectories 3. Apply the guidance to their specific context 4. Cross-reference with platform-specific skills (ios/, macos/) as needed
© rshankras · MIT · rshankras/claude-code-apple-skills