Download for MacApple silicon, macOS 14+
Skill

swift-concurrency

@avdlee Updated 2026-09-14

Diagnose Swift Concurrency issues, refactor callback-based code to async/await, and guide Swift 6 migration when working with tasks, actors, @MainActor, Sendable, data races, thread safety, or concurrency-related compiler and linter warnings.

agent-skillsasync-awaitswiftswift-actorswift-concurrency

Install

With your agent

Install OMGSkills skill "avdlee/swift-concurrency-agent-skill:swift-concurrency" into this agent's normal skills directory: call the OMGSkills MCP get_install_plan tool for your agent and run the script it returns (it installs only the pinned commit and verifies SKILL.md), and stop if MCP or the pin is unavailable. Do not overwrite or change existing skills without asking me.

Manual command

git clone https://github.com/AvdLee/Swift-Concurrency-Agent-Skill /tmp/Swift-Concurrency-Agent-Skill && ln -s /tmp/Swift-Concurrency-Agent-Skill/skills/swift-concurrency ~/.claude/skills/swift-concurrency

From README

Swift Concurrency Fast Path Before proposing a fix: Analyze Package.swift or .pbxproj to determine Swift language mode, strict concurrency level, default isolation, and upcoming features. Do this always, not only for migration work. Capture the exact diagnostic and offending symbol. Determine the isolation boundary: @MainActor, custom actor, actor instance isolation, or nonisolated. Confirm whether the code is UI-bound or intended to run off the main actor. When spawning unstructured tasks, inspect the synchronous prefix (everything before the first await): start on @MainActor only when that prefix truly needs main-actor access; otherwise use Task { @concurrent in ... } and hop back with MainActor.run only after the suspension. A trivial non-main line (for example, print) followed by main-actor work in the same prefix is not a reason to use @concurrent. For delayed retries, timers, and backoff tasks, separate the waiting from the UI mutation.