Agent skills for iOS, iPadOS, Swift, SwiftUI, and modern Apple framework development.
71
89%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Advisory
Suggest reviewing before use
swift-async-algorithms is an Apple open-source package providing AsyncSequence algorithms modeled after the standard library's Sequence algorithms.
Add to Package.swift:
.package(url: "https://github.com/apple/swift-async-algorithms", from: "1.0.0")import AsyncAlgorithms
// Merge multiple sequences into one (interleaved by arrival time)
for await value in merge(streamA, streamB) {
handle(value)
}
// Combine latest values from two sequences (emits when either updates)
for await (a, b) in combineLatest(streamA, streamB) {
handle(a, b)
}
// Zip — pairs elements 1:1 (waits for both)
for await (a, b) in zip(streamA, streamB) {
handle(a, b)
}
// Chain — concatenate sequences end-to-end
for await value in chain(streamA, streamB) {
handle(value)
}// Debounce — emit after a quiet period (e.g., search-as-you-type)
let searchResults = searchTerms
.debounce(for: .milliseconds(300))
for await term in searchResults {
await performSearch(term)
}
// Throttle — emit at most once per interval
let throttled = sensorReadings
.throttle(for: .seconds(1))
for await reading in throttled {
updateDisplay(reading)
}
// Chunks — collect elements into arrays by count or time
for await batch in events.chunks(ofCount: 10) {
await processBatch(batch) // [Event] with up to 10 elements
}
for await batch in events.chunked(by: .repeating(every: .seconds(1))) {
await processBatch(batch)
}// Remove consecutive duplicates
for await value in stream.removeDuplicates() {
handle(value)
}
// Compacted — remove nils (like compactMap without transform)
let values: AsyncStream<Int?> = ...
for await value in values.compacted() {
// value is non-optional Int
}func searchResults(for terms: AsyncStream<String>) -> AsyncStream<[Result]> {
AsyncStream { continuation in
Task {
for await term in terms.debounce(for: .milliseconds(300)) {
guard !Task.isCancelled else { break }
let results = try? await searchService.search(term)
continuation.yield(results ?? [])
}
continuation.finish()
}
}
}for await batch in requestStream.chunks(ofCount: 50).throttle(for: .seconds(1)) {
await api.sendBatch(batch)
}skills
accessorysetupkit
references
activitykit
references
adattributionkit
references
alarmkit
references
app-clips
app-intents
references
app-store-optimization
app-store-review
apple-on-device-ai
appmigrationkit
references
audioaccessorykit
references
authentication
references
avkit
references
background-processing
references
browserenginekit
references
callkit
references
carplay
references
cloudkit
references
contacts-framework
references
core-bluetooth
references
core-data
core-motion
references
core-nfc
references
coreml
references
cryptokit
references
cryptotokenkit
references
debugging-instruments
device-integrity
references
dockkit
references
energykit
references
eventkit
references
financekit
references
focus-engine
gamekit
references
healthkit
references
homekit
references
ios-accessibility
ios-localization
ios-networking
ios-simulator
references
mapkit
metrickit
references
musickit
references
natural-language
references
paperkit
references
passkit
references
pdfkit
references
pencilkit
references
permissionkit
references
photokit
push-notifications
realitykit
references
relevancekit
references
scenekit
references
sensorkit
references
speech-recognition
spritekit
references
storekit
swift-api-design-guidelines
swift-architecture
swift-charts
references
swift-codable
swift-concurrency
swift-formatstyle
swift-language
swift-security
references
swift-testing
swiftdata
swiftlint
swiftui-animation
swiftui-gestures
references
swiftui-layout-components
swiftui-liquid-glass
references
swiftui-patterns
swiftui-performance
swiftui-uikit-interop
swiftui-webkit
tabletopkit
references
tipkit
references
vision-framework
weatherkit
references
widgetkit
references