Community-maintained Agent Skills for complete Swift and Apple-platform app delivery.
73
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Medium
Suggest reviewing before use
Use this reference when the device schedules reminders without a provider server. Keep product scheduling semantics separate from remote APNs delivery.
Define a stable request identifier so updates and cancellation target the intended reminder. Put only the minimal routing data in userInfo; persist authoritative domain data elsewhere.
let content = UNMutableNotificationContent()
content.title = String(localized: "Workout reminder")
content.body = String(localized: "Your scheduled workout starts soon.")
content.sound = .default
content.userInfo = ["workoutID": workout.id]
content.threadIdentifier = "workouts"Check notificationSettings() before scheduling user-visible content. Authorization can change after onboarding. If alerts are denied, preserve the in-app reminder state and explain that system presentation is unavailable rather than silently discarding the user's intent.
Use for a duration relative to scheduling. Repeating time-interval triggers require at least 60 seconds.
let trigger = UNTimeIntervalNotificationTrigger(
timeInterval: 15 * 60,
repeats: false
)Use for wall-clock recurrences. Specify only the date components that define the recurrence and decide how time-zone changes should behave. Test daylight-saving transitions for calendar-sensitive products.
var components = DateComponents()
components.hour = 8
components.minute = 30
let trigger = UNCalendarNotificationTrigger(
dateMatching: components,
repeats: true
)Use a UNLocationNotificationTrigger only when the product genuinely depends on region entry or exit. Request the appropriate Core Location authorization and respect platform region-monitoring limits. Route broader location behavior to mapkit.
let request = UNNotificationRequest(
identifier: "workout-\(workout.id)",
content: content,
trigger: trigger
)
let center = UNUserNotificationCenter.current()
try await center.add(request)
let pending = await center.pendingNotificationRequests()Adding a request with an existing identifier replaces the pending request. Remove pending requests when the underlying reminder is deleted or disabled. Removing a pending request doesn't remove an already delivered notification; manage delivered notifications separately.
center.removePendingNotificationRequests(withIdentifiers: [identifier])
center.removeDeliveredNotifications(withIdentifiers: [identifier])Avoid removeAll… in a feature-level operation unless the product explicitly owns every notification created by the app.
Register categories/actions during app launch and set content.categoryIdentifier before scheduling. Create attachments from supported files the app can read; remote URLs must be downloaded to disk before attachment creation. For custom extension UI or bounded media downloads, read rich-notifications.md.
Use threadIdentifier, summaryArgument, and summaryArgumentCount only when grouping matches the user's mental model. Badge counts need an explicit source-of-truth policy; don't increment and decrement opportunistically across devices.
.tessl-plugin
skills
accessorysetupkit
references
activitykit
adattributionkit
references
alarmkit
references
app-clips
app-intents
app-store-optimization
app-store-review
apple-on-device-ai
appmigrationkit
audioaccessorykit
references
authentication
references
avkit
background-processing
references
browserenginekit
callkit
references
carplay
cloudkit
contacts-framework
references
core-bluetooth
references
core-data
core-motion
references
core-nfc
references
coreml
references
cryptokit
cryptotokenkit
references
debugging-instruments
device-integrity
references
dockkit
energykit
references
eventkit
financekit
references
focus-engine
gamekit
healthkit
references
homekit
references
ios-accessibility
ios-app-workflow
references
ios-ettrace-performance
ios-localization
ios-memgraph-analysis
ios-networking
ios-simulator
references
metrickit
references
musickit
references
natural-language
references
paperkit
references
passkit
references
pdfkit
pencilkit
references
permissionkit
references
photokit
push-notifications
realitykit
references
relevancekit
references
scenekit
sensorkit
speech-recognition
references
spritekit
storekit
swift-api-design-guidelines
swift-architecture
references
swift-charts
swift-codable
references
swift-code-review
swift-concurrency
swift-formatstyle
references
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-responsive-layout
swiftui-uikit-interop
swiftui-webkit
tabletopkit
tipkit
vision-framework
weatherkit
references