Diagnose data races, migrate to async/await, and resolve Swift 6 concurrency issues with structured guidance.
Works with
Analyzes project settings (language mode, strict concurrency level, default isolation) before proposing fixes to ensure recommendations match your build configuration
Covers all major concurrency diagnostics: main actor isolation, actor conformance, Sendable violations, and SwiftLint warnings with smallest-safe-fix strategies
Provides Quick Fix Mode for localized, single-file
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionswift-concurrencyExecute the skills CLI command in your project's root directory to begin installation:
Fetches swift-concurrency from avdlee/swift-concurrency-agent-skill and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate swift-concurrency. Access via /swift-concurrency in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Create detailed user stories, acceptance criteria, and feature specs
Example
Generate user stories for 'password reset feature' with acceptance criteria, edge cases, and test scenarios
Reduce spec writing time by 50%, ensure comprehensive coverage
Research competitors, compare features, identify gaps
Example
Analyze 5 competitor products, create feature comparison matrix, suggest differentiation opportunities
Complete competitive research in 2 hours instead of 2 days
Evaluate features using frameworks (RICE, ICE, Kano) and create prioritized backlogs
Example
Score 20 feature ideas using RICE framework, generate prioritized roadmap with rationale
0
total installs
0
this week
1.4K
GitHub stars
0
upvotes
Run in your terminal
0
installs
0
this week
1.4K
stars
Before proposing a fix:
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.@MainActor, custom actor, actor instance isolation, or nonisolated.Project settings that change concurrency behavior:
| Setting | SwiftPM (Package.swift) |
Xcode (.pbxproj) |
|---|---|---|
| Language mode | swiftLanguageVersions or -swift-version (// swift-tools-version: is not a reliable proxy) |
Swift Language Version |
| Strict concurrency | .enableExperimentalFeature("StrictConcurrency=targeted") |
SWIFT_STRICT_CONCURRENCY |
| Default isolation | .defaultIsolation(MainActor.self) |
SWIFT_DEFAULT_ACTOR_ISOLATION |
| Upcoming features | .enableUpcomingFeature("NonisolatedNonsendingByDefault") |
SWIFT_UPCOMING_FEATURE_* |
If any of these are unknown, ask the developer to confirm them before giving migration-sensitive guidance. Do not guess.
Guardrails:
@MainActor as a blanket fix. Justify why the code is truly UI-bound.Task.detached only with a clear reason.@preconcurrency, @unchecked Sendable, or nonisolated(unsafe), require a documented safety invariant and a follow-up removal plan.Use Quick Fix Mode when all of these are true:
Skip Quick Fix Mode when any of these are true:
| Diagnostic | First check | Smallest safe fix | Escalate to |
|---|---|---|---|
Main actor-isolated ... cannot be used from a nonisolated context |
Is this truly UI-bound? | Isolate the caller to @MainActor or use await MainActor.run { ... } only when main-actor ownership is correct. |
references/actors.md, references/threading.md |
Actor-isolated type does not conform to protocol |
Must the requirement run on the actor? | Prefer isolated conformance (e.g., extension Foo: @MainActor SomeProtocol); use nonisolated only for truly nonisolated requirements. |
references/actors.md |
Sending value of non-Sendable type ... risks causing data races |
What isolation boundary is being crossed? | Keep access inside one actor, or convert the transferred value to an immutable/value type. | references/sendable.md, references/threading.md |
SwiftLint async_without_await |
Is async actually required by protocol, override, or @concurrent? |
Remove async, or use a narrow suppression with rationale. Never add fake awaits. |
references/linting.md |
wait(...) is unavailable from asynchronous contexts |
Is this legacy XCTest async waiting? | Replace with await fulfillment(of:) or Swift Testing equivalents. |
references/testing.md |
| Core Data concurrency warnings | Are NSManagedObject instances crossing contexts or actors? |
Pass NSManagedObjectID or map to a Sendable value type. |
references/core-data.md |
Thread.current unavailable from asynchronous contexts |
Are you debugging by thread instead of isolation? | Reason in terms of isolation and use Instruments/debugger instead. | references/threading.md |
| SwiftLint concurrency-related warnings | Which specific lint rule triggered? | Use references/linting.md for rule intent and preferred fixes; avoid dummy awaits. |
references/linting.md |
Prefer changes that preserve behavior while satisfying data-race safety:
@MainActor.actor, or use @MainActor only if the state is UI-owned.async API marked @concurrent; when work can safely inherit caller isolation, use nonisolated without @concurrent.@unchecked Sendable.| Need | Tool | Key Guidance |
|---|---|---|
| Single async operation | async/await |
Default choice for sequential async work |
| Fixed parallel operations | async let |
Known count at compile time; auto-cancelled on throw |
| Dynamic parallel operations | withTaskGroup |
Unknown count; structured — cancels children on scope exit |
| Sync → async bridge | Task { } |
Inherits actor context; use Task.detached only with documented reason |
| Shared mutable state | actor |
Prefer over locks/queues; keep isolated sections small |
| UI-bound state | @MainActor |
Only for truly UI-related code; justify isolation |
Network request with UI update
Task { @concurrent in
let data = try await fetchData()
await MainActor.run { self.updateUI(with: data) }
}
Processing array items in parallel
await withTaskGroup(of: ProcessedItem.self) { group in
for item in items {
group.addTask { await process(item) }
}
for await result in group {
results.append(result)
}
}
Key changes in Swift 6:
Apply this cycle for each migration change:
swift build or Xcode build to surface new diagnosticsswift test or Cmd+U)If a fix introduces new warnings, resolve them before continuing. Never batch multiple unrelated fixes — keep commits small and reviewable.
For detailed migration steps, see references/migration.md.
Open the smallest reference that matches the question:
references/async-await-basics.md — async/await syntax, execution order, async let, URLSession patternsreferences/tasks.md — Task lifecycle, cancellation, priorities, task groups, structured vs unstructuredreferences/actors.md — Actor isolation, @MainActor, global actors, reentrancy, custom executors, Mutexreferences/sendable.md — Sendable conformance, value/reference types, @unchecked, region isolationreferences/threading.md — Execution model, suspension points, Swift 6.2 isolation behaviorreferences/async-sequences.md — AsyncSequence, AsyncStream, when to use vs regular async methodsreferences/async-algorithms.md — Debounce, throttle, merge, combineLatest, channels, timersreferences/testing.md — Swift Testing first, XCTest fallback, leak checksreferences/performance.md — Profiling with Instruments, reducing suspension points, execution strategiesreferences/memory-management.md — Retain cycles in tasks, memory safety patternsreferences/core-data.md — NSManagedObject sendability, custom executors, isolation conflictsreferences/migration.md — Swift 6 migration strategy, closure-to-async conversion, @preconcurrency, FRP migrationreferences/linting.md — Concurrency-focused lint rules and SwiftLint async_without_awaitreferences/glossary.md — Quick definitions of core concurrency termsWhen changing concurrency code:
Task.isCancelled in long-running operations.Mutex would express ownership more safely.Note: This skill is based on the comprehensive Swift Concurrency Course by Antoine van der Lee.
Make data-driven prioritization decisions faster
Draft PRDs, status updates, and stakeholder presentations
Example
Create executive summary of Q3 roadmap, monthly progress report, feature launch announcement
Save 3-5 hours/week on communication overhead
Prerequisites
Time Estimate
30-60 minutes to see productivity improvements
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use for user story writing, competitive research, roadmap prioritization, stakeholder communication, and PRD drafting. Best for reducing repetitive documentation and research work.
✗ Avoid when
Avoid for strategic product vision (requires deep customer empathy), pricing decisions (needs market and financial expertise), or when face-to-face customer discovery is more valuable than speed.
mattpocock/skills
parcadei/continuous-claude-v3
cursor/plugins
ailabs-393/ai-labs-claude-skills
pproenca/dot-skills
mattpocock/skills
swift-concurrency has been reliable in day-to-day use. Documentation quality is above average for community skills.
Keeps context tight: swift-concurrency is the kind of skill you can hand to a new teammate without a long onboarding doc.
Keeps context tight: swift-concurrency is the kind of skill you can hand to a new teammate without a long onboarding doc.
I recommend swift-concurrency for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
swift-concurrency fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
We added swift-concurrency from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
Useful defaults in swift-concurrency — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
Registry listing for swift-concurrency matched our evaluation — installs cleanly and behaves as described in the markdown.
Registry listing for swift-concurrency matched our evaluation — installs cleanly and behaves as described in the markdown.
Solid pick for teams standardizing on skills: swift-concurrency is focused, and the summary matches what you get after install.
showing 1-10 of 50