#603 by GitHub stars
AvdLee/Swift-Concurrency-Agent-Skill
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.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/swift-concurrency/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
d5770817d262 → d5770817d262
Verified commit d5770817d2622e1585b1f7eaebc791a9cb0959c8
git clone --filter=blob:none --no-checkout https://github.com/AvdLee/Swift-Concurrency-Agent-Skill.git .hotskills/avdlee-swift-concurrency-agent-skill && git -C .hotskills/avdlee-swift-concurrency-agent-skill checkout --detach d5770817d2622e1585b1f7eaebc791a9cb0959c8
# Copy each selected skill directory from .hotskills/avdlee-swift-concurrency-agent-skill into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/AvdLee/Swift-Concurrency-Agent-Skill.git .hotskills/avdlee-swift-concurrency-agent-skill && git -C .hotskills/avdlee-swift-concurrency-agent-skill checkout --detach d5770817d2622e1585b1f7eaebc791a9cb0959c8
# Copy each selected skill directory from .hotskills/avdlee-swift-concurrency-agent-skill into .github/skills/<skill-name>/Heat
2.1- Star growth, last 7 daysAhead of 51% of tracked repositories
- Star growth, last 24 hoursAhead of 3% of tracked repositories
- Rank movement, last 7 daysAhead of 8% of tracked repositories
- Commits, last 30 daysAhead of 0% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- swift-concurrency
skills/swift-concurrency
How it works
swift-concurrency
When your agent uses it
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.
What it loads into context
Frontmatter
59 tokensAlways available to the agent
SKILL.md
2,916 tokensWhen the skill is activated
Reference documents
107,912 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Fast Path
- Quick Fix Mode
- Common Diagnostics
- When Quick Fixes Fail
- Smallest Safe Fixes
- Concurrency Tool Selection
- Task entry isolation
- Swift 6 Migration Quick Guide
- Reference Router
- Verification Checklist
Files
../../.claude-plugin/marketplace.jsonasset1,512 bytes../../.claude-plugin/plugin.jsonasset769 bytesSKILL.mdcore12,852 bytesagents/openai.yamlasset249 bytesassets/logo-small.pngasset4,283 bytesassets/logo.pngasset26,017 bytesreferences/_index.mddoc2,150 bytesreferences/actors.mddoc17,545 bytesreferences/async-algorithms.mddoc20,705 bytesreferences/async-await-basics.mddoc7,686 bytesreferences/async-sequences.mddoc17,136 bytesreferences/core-data.mddoc14,888 bytesreferences/glossary.mddoc7,081 bytesreferences/linting.mddoc5,334 bytesreferences/memory-management.mddoc12,736 bytesreferences/migration.mddoc33,770 bytesreferences/observation.mddoc14,212 bytesreferences/performance.mddoc15,490 bytesreferences/sendable.mddoc13,603 bytesreferences/tasks.mddoc17,019 bytesreferences/testing.mddoc13,757 bytesreferences/threading.mddoc16,440 bytes../../swift-concurrency/SKILL.mddoc12,852 bytes../../swift-concurrency/agents/openai.yamlasset249 bytes../../swift-concurrency/assets/logo-small.pngasset4,283 bytes../../swift-concurrency/assets/logo.pngasset26,017 bytes../../swift-concurrency/references/_index.mddoc2,150 bytes../../swift-concurrency/references/actors.mddoc17,545 bytes../../swift-concurrency/references/async-algorithms.mddoc20,705 bytes../../swift-concurrency/references/async-await-basics.mddoc7,686 bytes../../swift-concurrency/references/async-sequences.mddoc17,136 bytes../../swift-concurrency/references/core-data.mddoc14,888 bytes../../swift-concurrency/references/glossary.mddoc7,081 bytes../../swift-concurrency/references/linting.mddoc5,334 bytes../../swift-concurrency/references/memory-management.mddoc12,736 bytes../../swift-concurrency/references/migration.mddoc33,770 bytes../../swift-concurrency/references/observation.mddoc14,212 bytes../../swift-concurrency/references/performance.mddoc15,490 bytes../../swift-concurrency/references/sendable.mddoc13,603 bytes../../swift-concurrency/references/tasks.mddoc17,019 bytes../../swift-concurrency/references/testing.mddoc13,757 bytes../../swift-concurrency/references/threading.mddoc16,440 bytes
Read SKILL.md
# Swift Concurrency
## Fast Path
Before proposing a fix:
1. 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.
2. Capture the exact diagnostic and offending symbol.
3. Determine the isolation boundary: `@MainActor`, custom actor, actor instance isolation, or `nonisolated`.
4. 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. The sleep often belongs off the main actor even when the final state update belongs on it.
Project settings that change concurrency behavior:
| Setting | SwiftPM (`Package.swift`) | Xcode (`.pbxproj`) |
|---|---|---|View the complete source on GitHubSkills included
- swift-concurrency
Repository facts
- License
- MIT
- Created
- Jan 7, 2026
- Last pushed
- Sep 14, 2026
- Forks
- 101
- Open issues
- 4
- Project activity
- Active
Rank over the last 12 weeks
Now #603 · best #430 · down 105 in 30 days
- #588 on Nov 1
- #590 on Nov 2
- #595 on Nov 3
- #599 on Nov 4
- #602 on Nov 5
- #603 since Nov 6
60 earlier periods
- #405 on Aug 2
- #415 on Aug 7
- #417 on Aug 8
- #432 on Aug 10
- #433 on Aug 11
- #430 on Aug 12
- #439 on Aug 13
- #440 on Aug 20
- #444 on Aug 21
- #430 on Aug 22
- #448 from Aug 23 to Aug 24
- #450 on Aug 25
- #454 on Aug 27
- #451 on Aug 28
- #444 on Aug 29
- #438 on Aug 30
- #454 on Aug 31
- #455 on Sep 2
- #461 on Sep 3
- #449 on Sep 5
- #457 on Sep 6
- #472 on Sep 10
- #469 on Sep 11
- #467 on Sep 12
- #477 on Sep 15
- #487 on Sep 16
- #479 on Sep 17
- #486 on Sep 18
- #482 on Sep 20
- #493 on Sep 22
- #487 on Sep 23
- #478 on Sep 24
- #477 on Sep 25
- #474 on Sep 26
- #490 on Sep 27
- #494 on Sep 28
- #503 on Sep 29
- #491 on Oct 1
- #489 on Oct 2
- #476 on Oct 3
- #473 on Oct 4
- #498 on Oct 6
- #519 on Oct 8
- #517 on Oct 9
- #512 on Oct 10
- #523 on Oct 12
- #524 on Oct 14
- #522 on Oct 15
- #517 on Oct 17
- #522 on Oct 18
- #536 on Oct 19
- #540 on Oct 20
- #546 on Oct 21
- #535 on Oct 22
- #519 on Oct 24
- #571 on Oct 25
- #582 on Oct 28
- #583 on Oct 29
- #584 on Oct 30
- #585 on Oct 31
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 3, 2026
- No broad tool permissions
- No dangerous shell commands
- 270 network referencesin 32 files: swift-concurrency/references/tasks.md:84 swift-concurrency/references/tasks.md:84 swift-concurrency/references/core-data.md:45 and 29 more
- No hidden or obfuscated text
- No instruction overrides
- No executable scripts
- No access to secrets
- No requests to vote in Hot
Show all 270 signals by file
.claude-plugin/marketplace.json
- Network accessline 1
{ "$schema": "https://anthropic.com/claude-code/marketplace.schema.json", - Network accessline 2
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json", - Network accessline 14
"name": "swift-concurrency", "description": "Expert guidance on Swift Concurrency best practices, patterns, and implementation. Covers async/await, actors, tasks, Sendable conformance, data race prevention, and Swift 6 migration strat - Network accessline 15
"description": "Expert guidance on Swift Concurrency best practices, patterns, and implementation. Covers async/await, actors, tasks, Sendable conformance, data race prevention, and Swift 6 migration strategies.", "repository": "https - Network accessline 16
"repository": "https://github.com/AvdLee/Swift-Concurrency-Agent-Skill",
.claude-plugin/plugin.json
- Network accessline 7
"email": "contact@avanderlee.com" }, "repository": "https://github.com/AvdLee/Swift-Concurrency-Agent-Skill", - Network accessline 8
}, "repository": "https://github.com/AvdLee/Swift-Concurrency-Agent-Skill", "license": "MIT", - Network accessline 9
"repository": "https://github.com/AvdLee/Swift-Concurrency-Agent-Skill",
skills/swift-concurrency/SKILL.md
- Network accessline 211
**Note**: This skill is based on the comprehensive [Swift Concurrency Course](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=skill-footer) by Antoine van der Lee.
skills/swift-concurrency/references/actors.md
- Network accessline 41
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.1: Understanding actors in Swift Concurrency](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 139
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.2: An introduction to Global Actors](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 190
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.3: When and how to use @MainActor](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 293
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.4: Isolated vs. non-isolated access in actors](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 311
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.5: Using Isolated synchronous deinit](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 333
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.6: Adding isolated conformance to protocols](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 424
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.7: Understanding actor reentrancy](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 483
**Why `_ = isolation` is required**: Per [SE-0420](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0420-inheritance-of-actor-isolation.md), `Task` closures only inherit isolation when "a non-optional binding of an isolated - Network accessline 492
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.8: Inheritance of actor isolation using the #isolation macro](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference - Network accessline 539
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.9: Using a custom actor executor](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 611
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.10: Using a Mutex as an alternative to actors](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 700
For migration strategies, advanced patterns, and real-world examples, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
skills/swift-concurrency/references/async-algorithms.md
- Network accessline 58
> **See**: [AsyncAlgorithms on GitHub](https://github.com/apple/swift-async-algorithms) - Network accessline 82
dependencies: [ .package(url: "https://github.com/apple/swift-async-algorithms", from: "1.0.0") - Network accessline 83
.package(url: "https://github.com/apple/swift-async-algorithms", from: "1.0.0") - Network accessline 844
- [AsyncAlgorithms Documentation](https://github.com/apple/swift-async-algorithms)
skills/swift-concurrency/references/async-await-basics.md
- Network accessline 38
> **Course Deep Dive**: This topic is covered in detail in [Lesson 2.1: Introduction to async/await syntax](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 75
> **Course Deep Dive**: This topic is covered in detail in [Lesson 2.2: Understanding the order of execution](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 122
> **Course Deep Dive**: This topic is covered in detail in [Lesson 2.3: Calling async functions in parallel using async let](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 149
func fetchUser(id: Int) async throws -> User { let url = URL(string: "https://api.example.com/users/\(id)")! - Network accessline 150
let url = URL(string: "https://api.example.com/users/\(id)")! - Network accessline 168
func createUser(_ user: User) async throws -> User { let url = URL(string: "https://api.example.com/users")! - Network accessline 169
let url = URL(string: "https://api.example.com/users")! - Network accessline 186
> **Course Deep Dive**: This topic is covered in detail in [Lesson 2.4: Performing network requests using URLSession and async/await](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-refere - Network accessline 265
For in-depth coverage of async/await patterns, error handling strategies, and real-world migration scenarios, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
skills/swift-concurrency/references/async-sequences.md
- Network accessline 106
> **Course Deep Dive**: This topic is covered in detail in [Lesson 6.1: Working with asynchronous sequences](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 147
> **Course Deep Dive**: This topic is covered in detail in [Lesson 6.2: Using AsyncStream and AsyncThrowingStream in your code](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 557
> **Course Deep Dive**: This topic is covered in detail in [Lesson 6.3: Deciding between AsyncSequence, AsyncStream, or regular asynchronous methods](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campai - Network accessline 709
For real-world migration examples, performance patterns, and advanced stream techniques, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
skills/swift-concurrency/references/core-data.md
- Network accessline 45
> **Course Deep Dive**: This topic is covered in detail in [Lesson 9.1: An introduction to Swift Concurrency and Core Data](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 115
> **Course Deep Dive**: This topic is covered in detail in [Lesson 9.2: Sendable and NSManageObjects](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 222
try CoreDataStore.shared.perform { context in let request = Article.fetchRequest() return try context.fetch(request) - Network accessline 223
let request = Article.fetchRequest() return try context.fetch(request) } - Network accessline 224
return try context.fetch(request) - Network accessline 230
try await CoreDataStore.shared.performInBackground { context in let request = Article.fetchRequest() let articles = try context.fetch(request) - Network accessline 231
let request = Article.fetchRequest() let articles = try context.fetch(request) articles.forEach { context.delete($0) } - Network accessline 232
let articles = try context.fetch(request) - Network accessline 250
> **Course Deep Dive**: This topic is covered in detail in [Lesson 9.3: Using a custom Actor executor for Core Data (advanced)](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 295
using request: NSFetchRequest<T> ) throws { let objects = try context.fetch(request) - Network accessline 296
) throws { let objects = try context.fetch(request) objects.forEach { context.delete($0) } - Network accessline 297
let objects = try context.fetch(request) - Network accessline 340
> **Course Deep Dive**: This topic is covered in detail in [Lesson 9.4: Autogenerated Core Data Objects and Default MainActor Isolation Conflicts](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign= - Network accessline 351
func fetchArticles() throws -> [Article] { let request = Article.fetchRequest() return try viewContext.fetch(request) - Network accessline 352
let request = Article.fetchRequest() return try viewContext.fetch(request) } - Network accessline 353
return try viewContext.fetch(request) - Network accessline 529
func background() async { let articles = viewContext.fetch(request) // ❌ Not on main thread - Network accessline 530
let articles = viewContext.fetch(request) // ❌ Not on main thread - Network accessline 557
For Core Data best practices, migration strategies, and advanced patterns: - [Core Data Best Practices](https://github.com/avanderlee/CoreDataBestPractices) - Network accessline 558
- [Core Data Best Practices](https://github.com/avanderlee/CoreDataBestPractices) - Network accessline 559
- [Swift Concurrency Course](https://www.swiftconcurrencycourse.com)
skills/swift-concurrency/references/linting.md
skills/swift-concurrency/references/memory-management.md
- Network accessline 43
> **Course Deep Dive**: This topic is covered in detail in [Lesson 8.1: Overview of memory management in Swift Concurrency](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 122
> **Course Deep Dive**: This topic is covered in detail in [Lesson 8.2: Preventing retain cycles when using Tasks](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 568
For migration strategies, real-world examples, and advanced memory patterns, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
skills/swift-concurrency/references/migration.md
- Network accessline 38
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.2: The impact of Swift 6 on Swift Concurrency](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 67
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.1: Challenges in migrating to Swift Concurrency](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 143
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.3: The six migration habits for a successful migration](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 269
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.5: The Approachable Concurrency build setting (Updated for Swift 6.2)](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson - Network accessline 304
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.4: Steps to migrate existing code to Swift 6 and Strict Concurrency Checking](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign - Network accessline 354
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.6: Migration tooling for upcoming Swift features](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 356
**Additional resource**: [Migration Tooling Video](https://youtu.be/FK9XFxSWZPg?si=2z_ybn1t1YCJow5k) - Network accessline 413
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.7: Techniques for rewriting closures to async/await syntax](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 458
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.8: How and when to use @preconcurrency](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 480
- Use `@Observable` macro for SwiftUI - Use `AsyncStream` for custom observation - Consider [AsyncExtensions](https://github.com/sideeffect-io/AsyncExtensions) package - Network accessline 482
- Consider [AsyncExtensions](https://github.com/sideeffect-io/AsyncExtensions) package - Network accessline 554
**For complex operators**: Check [Swift Async Algorithms](https://github.com/apple/swift-async-algorithms) package. - Network accessline 601
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.9: Migrating away from Functional Reactive Programming like RxSwift or Combine](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campai - Network accessline 1037
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.10: Migrating to concurrency-safe notifications](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 1075
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.11: Frequently Asked Questions (FAQ) around Swift 6 Migrations](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-refere - Network accessline 1100
**Additional resources**: - [Approachable Concurrency Video](https://youtu.be/y_Qc8cT-O_g?si=y4C1XQDGtyIOLW81) - Network accessline 1101
- [Approachable Concurrency Video](https://youtu.be/y_Qc8cT-O_g?si=y4C1XQDGtyIOLW81) - Network accessline 1102
- [Migration Tooling Video](https://youtu.be/FK9XFxSWZPg?si=2z_ybn1t1YCJow5k) - Network accessline 1103
- [Swift Concurrency Course](https://www.swiftconcurrencycourse.com) for in-depth migration strategies
skills/swift-concurrency/references/observation.md
- Network accessline 178
Swift 6.2 added [`Observations`](https://developer.apple.com/documentation/observation/observations), an `AsyncSequence` that streams transactional updates to any `@Observable` properties read inside its closure. This is the modern, framewo - Network accessline 417
For in-depth coverage of Swift Concurrency, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
skills/swift-concurrency/references/performance.md
- Network accessline 93
> **Course Deep Dive**: This topic is covered in detail in [Lesson 10.1: Using Xcode Instruments to find performance bottlenecks](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 260
> **Course Deep Dive**: This topic is covered in detail in [Lesson 10.2: Reducing suspension points by managing isolation effectively](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-refer - Network accessline 398
> **Course Deep Dive**: This topic is covered in detail in [Lesson 10.3: Using Xcode Instruments to detect and remove suspension points](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-ref - Network accessline 461
> **Course Deep Dive**: This topic is covered in detail in [Lesson 10.4: How to choose between serialized, asynchronous, and parallel execution](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=le - Network accessline 659
For real-world optimization examples, profiling techniques, and advanced performance patterns, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
skills/swift-concurrency/references/sendable.md
- Network accessline 35
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.1: Explaining the concept of Sendable in Swift](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 123
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.2: Understanding Data Races vs. Race Conditions: Key Differences Explained](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=le - Network accessline 175
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.3: Conforming your code to the Sendable protocol](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 187
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.4: Sendable and Value Types](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 250
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.5: Sendable and Reference Types](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 293
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.6: Using @Sendable with closures](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 358
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.7: Using @unchecked Sendable](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 430
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.8: Understanding region-based isolation and the sending keyword](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-refere - Network accessline 477
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.9: Concurrency-safe global variables](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 525
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.10: Combining Sendable with custom Locks](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 597
For migration strategies, real-world examples, and actor patterns, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
skills/swift-concurrency/references/tasks.md
- Network accessline 84
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.1: Introduction to tasks in Swift Concurrency](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 136
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.2: Task cancellation](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 176
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.3: Error handling in Tasks](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 211
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.12: Running tasks in SwiftUI](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 274
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.5: Task Groups](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 279
try await withThrowingTaskGroup(of: Data.self) { group in for id in ids { group.addTask { try await fetch(id) } - Network accessline 280
for id in ids { group.addTask { try await fetch(id) } } - Network accessline 281
group.addTask { try await fetch(id) } - Network accessline 373
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.6: Discarding Task Groups](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 382
// async let async let data1 = fetch(1) - Network accessline 383
async let data1 = fetch(1) - Network accessline 384
async let data2 = fetch(2) - Network accessline 387
// Task groups await withTaskGroup(of: Data.self) { group in group.addTask { await fetch(1) } - Network accessline 388
await withTaskGroup(of: Data.self) { group in group.addTask { await fetch(1) } group.addTask { await fetch(2) } - Network accessline 389
group.addTask { await fetch(1) } - Network accessline 390
group.addTask { await fetch(2) } - Network accessline 394
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.7: The difference between structured and unstructured tasks](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 434
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.4: Detached Tasks](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 484
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.8: Managing Task priorities](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 541
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.10: Task.yield() vs. Task.sleep()](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 602
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.14: Creating a Task timeout handler using a Task Group (advanced)](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-refe - Network accessline 661
For hands-on examples, advanced patterns, and migration strategies, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
skills/swift-concurrency/references/testing.md
- Network accessline 68
> **Course Deep Dive**: This topic is covered in detail in [Lesson 11.2: Testing concurrent code using Swift Testing](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 210
let task = Task { try await fetcher.fetch(url) } - Network accessline 236
let task = Task { try await fetcher.fetch(url) } - Network accessline 248
**Add package**: `https://github.com/pointfreeco/swift-concurrency-extras.git` - Network accessline 250
> **Course Deep Dive**: This topic is covered in detail in [Lesson 11.3: Using Swift Concurrency Extras by Point-Free](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 320
> **Course Deep Dive**: This topic is covered in detail in [Lesson 11.1: Testing concurrent code using XCTest](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 588
For advanced testing patterns, real-world examples, and migration strategies: - [Swift Testing Documentation](https://developer.apple.com/documentation/testing) - Network accessline 589
- [Swift Testing Documentation](https://developer.apple.com/documentation/testing) - Network accessline 590
- [Swift Concurrency Extras](https://github.com/pointfreeco/swift-concurrency-extras) - Network accessline 591
- [Swift Concurrency Course](https://www.swiftconcurrencycourse.com)
skills/swift-concurrency/references/threading.md
- Network accessline 37
> **Course Deep Dive**: This topic is covered in detail in [Lesson 7.1: How Threads relate to Tasks](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 124
> **Course Deep Dive**: This topic is covered in detail in [Lesson 7.2: Getting rid of the "Threading Mindset"](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 193
> **Course Deep Dive**: This topic is covered in detail in [Lesson 7.3: Understanding Task suspension points](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 334
> **Course Deep Dive**: This topic is covered in detail in [Lesson 7.4: Dispatching to different threads using nonisolated(nonsending) and @concurrent (Updated for Swift 6.2)](https://www.swiftconcurrencycourse.com?utm_source=github&utm_med - Network accessline 380
> **Course Deep Dive**: This topic is covered in detail in [Lesson 7.5: Controlling the default isolation domain (Updated for Swift 6.2)](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-re - Network accessline 540
For migration strategies, real-world examples, and advanced threading patterns, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
swift-concurrency/SKILL.md
- Network accessline 211
**Note**: This skill is based on the comprehensive [Swift Concurrency Course](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=skill-footer) by Antoine van der Lee.
swift-concurrency/references/actors.md
- Network accessline 41
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.1: Understanding actors in Swift Concurrency](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 139
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.2: An introduction to Global Actors](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 190
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.3: When and how to use @MainActor](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 293
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.4: Isolated vs. non-isolated access in actors](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 311
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.5: Using Isolated synchronous deinit](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 333
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.6: Adding isolated conformance to protocols](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 424
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.7: Understanding actor reentrancy](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 483
**Why `_ = isolation` is required**: Per [SE-0420](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0420-inheritance-of-actor-isolation.md), `Task` closures only inherit isolation when "a non-optional binding of an isolated - Network accessline 492
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.8: Inheritance of actor isolation using the #isolation macro](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference - Network accessline 539
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.9: Using a custom actor executor](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 611
> **Course Deep Dive**: This topic is covered in detail in [Lesson 5.10: Using a Mutex as an alternative to actors](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 700
For migration strategies, advanced patterns, and real-world examples, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
swift-concurrency/references/async-algorithms.md
- Network accessline 58
> **See**: [AsyncAlgorithms on GitHub](https://github.com/apple/swift-async-algorithms) - Network accessline 82
dependencies: [ .package(url: "https://github.com/apple/swift-async-algorithms", from: "1.0.0") - Network accessline 83
.package(url: "https://github.com/apple/swift-async-algorithms", from: "1.0.0") - Network accessline 844
- [AsyncAlgorithms Documentation](https://github.com/apple/swift-async-algorithms)
swift-concurrency/references/async-await-basics.md
- Network accessline 38
> **Course Deep Dive**: This topic is covered in detail in [Lesson 2.1: Introduction to async/await syntax](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 75
> **Course Deep Dive**: This topic is covered in detail in [Lesson 2.2: Understanding the order of execution](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 122
> **Course Deep Dive**: This topic is covered in detail in [Lesson 2.3: Calling async functions in parallel using async let](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 149
func fetchUser(id: Int) async throws -> User { let url = URL(string: "https://api.example.com/users/\(id)")! - Network accessline 150
let url = URL(string: "https://api.example.com/users/\(id)")! - Network accessline 168
func createUser(_ user: User) async throws -> User { let url = URL(string: "https://api.example.com/users")! - Network accessline 169
let url = URL(string: "https://api.example.com/users")! - Network accessline 186
> **Course Deep Dive**: This topic is covered in detail in [Lesson 2.4: Performing network requests using URLSession and async/await](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-refere - Network accessline 265
For in-depth coverage of async/await patterns, error handling strategies, and real-world migration scenarios, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
swift-concurrency/references/async-sequences.md
- Network accessline 106
> **Course Deep Dive**: This topic is covered in detail in [Lesson 6.1: Working with asynchronous sequences](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 147
> **Course Deep Dive**: This topic is covered in detail in [Lesson 6.2: Using AsyncStream and AsyncThrowingStream in your code](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 557
> **Course Deep Dive**: This topic is covered in detail in [Lesson 6.3: Deciding between AsyncSequence, AsyncStream, or regular asynchronous methods](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campai - Network accessline 709
For real-world migration examples, performance patterns, and advanced stream techniques, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
swift-concurrency/references/core-data.md
- Network accessline 45
> **Course Deep Dive**: This topic is covered in detail in [Lesson 9.1: An introduction to Swift Concurrency and Core Data](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 115
> **Course Deep Dive**: This topic is covered in detail in [Lesson 9.2: Sendable and NSManageObjects](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 222
try CoreDataStore.shared.perform { context in let request = Article.fetchRequest() return try context.fetch(request) - Network accessline 223
let request = Article.fetchRequest() return try context.fetch(request) } - Network accessline 224
return try context.fetch(request) - Network accessline 230
try await CoreDataStore.shared.performInBackground { context in let request = Article.fetchRequest() let articles = try context.fetch(request) - Network accessline 231
let request = Article.fetchRequest() let articles = try context.fetch(request) articles.forEach { context.delete($0) } - Network accessline 232
let articles = try context.fetch(request) - Network accessline 250
> **Course Deep Dive**: This topic is covered in detail in [Lesson 9.3: Using a custom Actor executor for Core Data (advanced)](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 295
using request: NSFetchRequest<T> ) throws { let objects = try context.fetch(request) - Network accessline 296
) throws { let objects = try context.fetch(request) objects.forEach { context.delete($0) } - Network accessline 297
let objects = try context.fetch(request) - Network accessline 340
> **Course Deep Dive**: This topic is covered in detail in [Lesson 9.4: Autogenerated Core Data Objects and Default MainActor Isolation Conflicts](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign= - Network accessline 351
func fetchArticles() throws -> [Article] { let request = Article.fetchRequest() return try viewContext.fetch(request) - Network accessline 352
let request = Article.fetchRequest() return try viewContext.fetch(request) } - Network accessline 353
return try viewContext.fetch(request) - Network accessline 529
func background() async { let articles = viewContext.fetch(request) // ❌ Not on main thread - Network accessline 530
let articles = viewContext.fetch(request) // ❌ Not on main thread - Network accessline 557
For Core Data best practices, migration strategies, and advanced patterns: - [Core Data Best Practices](https://github.com/avanderlee/CoreDataBestPractices) - Network accessline 558
- [Core Data Best Practices](https://github.com/avanderlee/CoreDataBestPractices) - Network accessline 559
- [Swift Concurrency Course](https://www.swiftconcurrencycourse.com)
swift-concurrency/references/linting.md
swift-concurrency/references/memory-management.md
- Network accessline 43
> **Course Deep Dive**: This topic is covered in detail in [Lesson 8.1: Overview of memory management in Swift Concurrency](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 122
> **Course Deep Dive**: This topic is covered in detail in [Lesson 8.2: Preventing retain cycles when using Tasks](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 568
For migration strategies, real-world examples, and advanced memory patterns, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
swift-concurrency/references/migration.md
- Network accessline 38
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.2: The impact of Swift 6 on Swift Concurrency](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 67
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.1: Challenges in migrating to Swift Concurrency](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 143
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.3: The six migration habits for a successful migration](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 269
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.5: The Approachable Concurrency build setting (Updated for Swift 6.2)](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson - Network accessline 304
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.4: Steps to migrate existing code to Swift 6 and Strict Concurrency Checking](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign - Network accessline 354
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.6: Migration tooling for upcoming Swift features](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 356
**Additional resource**: [Migration Tooling Video](https://youtu.be/FK9XFxSWZPg?si=2z_ybn1t1YCJow5k) - Network accessline 413
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.7: Techniques for rewriting closures to async/await syntax](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 458
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.8: How and when to use @preconcurrency](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 480
- Use `@Observable` macro for SwiftUI - Use `AsyncStream` for custom observation - Consider [AsyncExtensions](https://github.com/sideeffect-io/AsyncExtensions) package - Network accessline 482
- Consider [AsyncExtensions](https://github.com/sideeffect-io/AsyncExtensions) package - Network accessline 554
**For complex operators**: Check [Swift Async Algorithms](https://github.com/apple/swift-async-algorithms) package. - Network accessline 601
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.9: Migrating away from Functional Reactive Programming like RxSwift or Combine](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campai - Network accessline 1037
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.10: Migrating to concurrency-safe notifications](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 1075
> **Course Deep Dive**: This topic is covered in detail in [Lesson 12.11: Frequently Asked Questions (FAQ) around Swift 6 Migrations](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-refere - Network accessline 1100
**Additional resources**: - [Approachable Concurrency Video](https://youtu.be/y_Qc8cT-O_g?si=y4C1XQDGtyIOLW81) - Network accessline 1101
- [Approachable Concurrency Video](https://youtu.be/y_Qc8cT-O_g?si=y4C1XQDGtyIOLW81) - Network accessline 1102
- [Migration Tooling Video](https://youtu.be/FK9XFxSWZPg?si=2z_ybn1t1YCJow5k) - Network accessline 1103
- [Swift Concurrency Course](https://www.swiftconcurrencycourse.com) for in-depth migration strategies
swift-concurrency/references/observation.md
- Network accessline 178
Swift 6.2 added [`Observations`](https://developer.apple.com/documentation/observation/observations), an `AsyncSequence` that streams transactional updates to any `@Observable` properties read inside its closure. This is the modern, framewo - Network accessline 417
For in-depth coverage of Swift Concurrency, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
swift-concurrency/references/performance.md
- Network accessline 93
> **Course Deep Dive**: This topic is covered in detail in [Lesson 10.1: Using Xcode Instruments to find performance bottlenecks](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 260
> **Course Deep Dive**: This topic is covered in detail in [Lesson 10.2: Reducing suspension points by managing isolation effectively](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-refer - Network accessline 398
> **Course Deep Dive**: This topic is covered in detail in [Lesson 10.3: Using Xcode Instruments to detect and remove suspension points](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-ref - Network accessline 461
> **Course Deep Dive**: This topic is covered in detail in [Lesson 10.4: How to choose between serialized, asynchronous, and parallel execution](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=le - Network accessline 659
For real-world optimization examples, profiling techniques, and advanced performance patterns, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
swift-concurrency/references/sendable.md
- Network accessline 35
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.1: Explaining the concept of Sendable in Swift](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 123
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.2: Understanding Data Races vs. Race Conditions: Key Differences Explained](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=le - Network accessline 175
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.3: Conforming your code to the Sendable protocol](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 187
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.4: Sendable and Value Types](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 250
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.5: Sendable and Reference Types](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 293
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.6: Using @Sendable with closures](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 358
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.7: Using @unchecked Sendable](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 430
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.8: Understanding region-based isolation and the sending keyword](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-refere - Network accessline 477
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.9: Concurrency-safe global variables](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 525
> **Course Deep Dive**: This topic is covered in detail in [Lesson 4.10: Combining Sendable with custom Locks](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 597
For migration strategies, real-world examples, and actor patterns, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
swift-concurrency/references/tasks.md
- Network accessline 84
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.1: Introduction to tasks in Swift Concurrency](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 136
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.2: Task cancellation](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 176
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.3: Error handling in Tasks](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 211
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.12: Running tasks in SwiftUI](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 274
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.5: Task Groups](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 279
try await withThrowingTaskGroup(of: Data.self) { group in for id in ids { group.addTask { try await fetch(id) } - Network accessline 280
for id in ids { group.addTask { try await fetch(id) } } - Network accessline 281
group.addTask { try await fetch(id) } - Network accessline 373
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.6: Discarding Task Groups](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 382
// async let async let data1 = fetch(1) - Network accessline 383
async let data1 = fetch(1) - Network accessline 384
async let data2 = fetch(2) - Network accessline 387
// Task groups await withTaskGroup(of: Data.self) { group in group.addTask { await fetch(1) } - Network accessline 388
await withTaskGroup(of: Data.self) { group in group.addTask { await fetch(1) } group.addTask { await fetch(2) } - Network accessline 389
group.addTask { await fetch(1) } - Network accessline 390
group.addTask { await fetch(2) } - Network accessline 394
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.7: The difference between structured and unstructured tasks](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 434
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.4: Detached Tasks](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 484
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.8: Managing Task priorities](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 541
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.10: Task.yield() vs. Task.sleep()](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 602
> **Course Deep Dive**: This topic is covered in detail in [Lesson 3.14: Creating a Task timeout handler using a Task Group (advanced)](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-refe - Network accessline 661
For hands-on examples, advanced patterns, and migration strategies, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
swift-concurrency/references/testing.md
- Network accessline 68
> **Course Deep Dive**: This topic is covered in detail in [Lesson 11.2: Testing concurrent code using Swift Testing](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 210
let task = Task { try await fetcher.fetch(url) } - Network accessline 236
let task = Task { try await fetcher.fetch(url) } - Network accessline 248
**Add package**: `https://github.com/pointfreeco/swift-concurrency-extras.git` - Network accessline 250
> **Course Deep Dive**: This topic is covered in detail in [Lesson 11.3: Using Swift Concurrency Extras by Point-Free](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 320
> **Course Deep Dive**: This topic is covered in detail in [Lesson 11.1: Testing concurrent code using XCTest](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 588
For advanced testing patterns, real-world examples, and migration strategies: - [Swift Testing Documentation](https://developer.apple.com/documentation/testing) - Network accessline 589
- [Swift Testing Documentation](https://developer.apple.com/documentation/testing) - Network accessline 590
- [Swift Concurrency Extras](https://github.com/pointfreeco/swift-concurrency-extras) - Network accessline 591
- [Swift Concurrency Course](https://www.swiftconcurrencycourse.com)
swift-concurrency/references/threading.md
- Network accessline 37
> **Course Deep Dive**: This topic is covered in detail in [Lesson 7.1: How Threads relate to Tasks](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 124
> **Course Deep Dive**: This topic is covered in detail in [Lesson 7.2: Getting rid of the "Threading Mindset"](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 193
> **Course Deep Dive**: This topic is covered in detail in [Lesson 7.3: Understanding Task suspension points](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-reference) - Network accessline 334
> **Course Deep Dive**: This topic is covered in detail in [Lesson 7.4: Dispatching to different threads using nonisolated(nonsending) and @concurrent (Updated for Swift 6.2)](https://www.swiftconcurrencycourse.com?utm_source=github&utm_med - Network accessline 380
> **Course Deep Dive**: This topic is covered in detail in [Lesson 7.5: Controlling the default isolation domain (Updated for Swift 6.2)](https://www.swiftconcurrencycourse.com?utm_source=github&utm_medium=agent-skill&utm_campaign=lesson-re - Network accessline 540
For migration strategies, real-world examples, and advanced threading patterns, see [Swift Concurrency Course](https://www.swiftconcurrencycourse.com).
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
No combined signals at this commit.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md skills/swift-concurrency/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/swift-concurrency/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/swift-concurrency/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Native | Manifest .github/copilot-instructions.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/swift-concurrency/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/avdlee-swift-concurrency-agent-skill/)