Loading...
Loading...
Reviews Swift code for concurrency correctness, modern API usage, and common async/await pitfalls. Use when reading, writing, or reviewing Swift concurrency code.
npx skill4agent add twostraws/swift-concurrency-agent-skill swift-concurrency-proreferences/hotspots.mdreferences/new-features.mdreferences/actors.mdreferences/structured.mdreferences/unstructured.mdreferences/cancellation.mdreferences/async-streams.mdreferences/bridging.mdreferences/interop.mdreferences/bug-patterns.mdreferences/diagnostics.mdreferences/testing.mdTask {}asyncawaitasyncawait@unchecked Sendablesendingawait// Before
actor Cache {
var items: [String: Data] = [:]
func fetch(_ key: String) async throws -> Data {
if items[key] == nil {
items[key] = try await download(key)
}
return items[key]!
}
}
// After
actor Cache {
var items: [String: Data] = [:]
func fetch(_ key: String) async throws -> Data {
if let existing = items[key] { return existing }
let data = try await download(key)
items[key] = data
return data
}
}withTaskGroup// Before
for url in urls {
Task { try await fetch(url) }
}
// After
try await withThrowingTaskGroup(of: Data.self) { group in
for url in urls {
group.addTask { try await fetch(url) }
}
for try await result in group {
process(result)
}
}references/hotspots.mdreferences/new-features.md@concurrentTask.immediatereferences/actors.mdreferences/structured.mdreferences/unstructured.mdreferences/cancellation.mdreferences/async-streams.mdreferences/bridging.md@unchecked Sendablereferences/interop.mdMutexreferences/bug-patterns.mdreferences/diagnostics.mdreferences/testing.md