#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

Compare on GitHub

View on GitHubAdd to my skills

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>/
1.7kGitHub stars
3stars in 7 days
1skill in this repository
0commits in 30 days

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

Aug 2, 2026Nov 3, 20261,702

Individual skills in this repository

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 tokens

Always available to the agent

SKILL.md

2,916 tokens

When the skill is activated

Reference documents

107,912 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Fast Path
  2. Quick Fix Mode
  3. Common Diagnostics
  4. When Quick Fixes Fail
  5. Smallest Safe Fixes
  6. Concurrency Tool Selection
  7. Task entry isolation
  8. Swift 6 Migration Quick Guide
  9. Reference Router
  10. Verification Checklist

Files

  • ../../.claude-plugin/marketplace.jsonasset1,512 bytes
  • ../../.claude-plugin/plugin.jsonasset769 bytes
  • SKILL.mdcore12,852 bytes
  • agents/openai.yamlasset249 bytes
  • assets/logo-small.pngasset4,283 bytes
  • assets/logo.pngasset26,017 bytes
  • references/_index.mddoc2,150 bytes
  • references/actors.mddoc17,545 bytes
  • references/async-algorithms.mddoc20,705 bytes
  • references/async-await-basics.mddoc7,686 bytes
  • references/async-sequences.mddoc17,136 bytes
  • references/core-data.mddoc14,888 bytes
  • references/glossary.mddoc7,081 bytes
  • references/linting.mddoc5,334 bytes
  • references/memory-management.mddoc12,736 bytes
  • references/migration.mddoc33,770 bytes
  • references/observation.mddoc14,212 bytes
  • references/performance.mddoc15,490 bytes
  • references/sendable.mddoc13,603 bytes
  • references/tasks.mddoc17,019 bytes
  • references/testing.mddoc13,757 bytes
  • references/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 GitHub

Skills 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

  1. #588 on Nov 1
  2. #590 on Nov 2
  3. #595 on Nov 3
  4. #599 on Nov 4
  5. #602 on Nov 5
  6. #603 since Nov 6
60 earlier periods
  1. #405 on Aug 2
  2. #415 on Aug 7
  3. #417 on Aug 8
  4. #432 on Aug 10
  5. #433 on Aug 11
  6. #430 on Aug 12
  7. #439 on Aug 13
  8. #440 on Aug 20
  9. #444 on Aug 21
  10. #430 on Aug 22
  11. #448 from Aug 23 to Aug 24
  12. #450 on Aug 25
  13. #454 on Aug 27
  14. #451 on Aug 28
  15. #444 on Aug 29
  16. #438 on Aug 30
  17. #454 on Aug 31
  18. #455 on Sep 2
  19. #461 on Sep 3
  20. #449 on Sep 5
  21. #457 on Sep 6
  22. #472 on Sep 10
  23. #469 on Sep 11
  24. #467 on Sep 12
  25. #477 on Sep 15
  26. #487 on Sep 16
  27. #479 on Sep 17
  28. #486 on Sep 18
  29. #482 on Sep 20
  30. #493 on Sep 22
  31. #487 on Sep 23
  32. #478 on Sep 24
  33. #477 on Sep 25
  34. #474 on Sep 26
  35. #490 on Sep 27
  36. #494 on Sep 28
  37. #503 on Sep 29
  38. #491 on Oct 1
  39. #489 on Oct 2
  40. #476 on Oct 3
  41. #473 on Oct 4
  42. #498 on Oct 6
  43. #519 on Oct 8
  44. #517 on Oct 9
  45. #512 on Oct 10
  46. #523 on Oct 12
  47. #524 on Oct 14
  48. #522 on Oct 15
  49. #517 on Oct 17
  50. #522 on Oct 18
  51. #536 on Oct 19
  52. #540 on Oct 20
  53. #546 on Oct 21
  54. #535 on Oct 22
  55. #519 on Oct 24
  56. #571 on Oct 25
  57. #582 on Oct 28
  58. #583 on Oct 29
  59. #584 on Oct 30
  60. #585 on Oct 31

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 3, 2026

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

  • Network accessline 49
    // swiftlint:disable:next async_without_await func fetch() async { perform() }
  • Network accessline 50
    func fetch() async { perform() }

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

  • Network accessline 49
    // swiftlint:disable:next async_without_await func fetch() async { perform() }
  • Network accessline 50
    func fetch() async { perform() }

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 compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/swift-concurrency/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/swift-concurrency/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/swift-concurrency/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotNativeManifest .github/copilot-instructions.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard 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.

AvdLee/Swift-Concurrency-Agent-Skill: #603 on hotskills, 1.7k stars

[![AvdLee/Swift-Concurrency-Agent-Skill on hotskills](https://hotskills.dev/badge/avdlee-swift-concurrency-agent-skill.svg)](https://hotskills.dev/skill/avdlee-swift-concurrency-agent-skill/)