Agent skill · software engineering · dpearson2699
alarmkit
Implement AlarmKit alarms and countdown timers for iOS and iPadOS with Lock Screen, Dynamic Island, StandBy, and paired Apple Watch system UI. Covers AlarmManager scheduling, AlarmAttributes and AlarmPresentation, system Stop and AlarmButton secondary actions, authorization, state observation, countdown widget-extension handoff, and Live Activity integration. Use when building wake-up alarms, countdown timers, or alarm-style alerts that need Apple's system alarm experience.
Why this skill is useful
Provides specific implementation patterns and API usage for AlarmKit that are not widely known or documented.
What it needs
Requires xcode installed locally. About 7k tokens when loaded. Last updated 2026-07-31. 973 stars on the source repository.
What this skill does
AlarmKit Schedule prominent alarms and countdown timers that surface on the Lock Screen, Dynamic Island, StandBy, and a paired Apple Watch when the alarm fires. AlarmKit requires iOS 26+ / iPadOS 26+. Alarms can break through Focus and Silent mode. AlarmKit uses ActivityKit data models for its Live Activity, but the firing alert is system-managed alarm UI, not a general custom notification UI surface. Custom UI belongs only to countdown and paused Live Activity states rendered by a Widget Extension with the same AlarmAttributes<Metadata> and AlarmPresentationState used when scheduling. See references/alarmkit-patterns.md for complete code patterns including authorization, scheduling, countdown timers, snooze handling, and widget setup. Contents Workflow Authorization Alarm vs Timer Decision Scheduling Alarms Countdown Timers Alarm States AlarmAttributes and AlarmPresentation AlarmButton Live Activity Integration Common Mistakes Review Checklist References Workflow 1. Create a new alarm or timer 1. Add NSAlarmKitUsageDescription to Info.plist with a user-facing string. 2. Request authorization with AlarmManager.shared.requestAuthorization() when the app can explain the value, or handle the first-schedule system prompt. 3. If authorization is .denied or not .authorized, show recovery UI instead of scheduling. 4. Configure AlarmPresentation (alert, countdown, paused states). 5. Create AlarmAttributes with the presentation, optional metadata, and tint color. 6. Build an AlarmManager.AlarmConfiguration (.alarm or .timer). 7. Schedule with AlarmManager.shared.schedule(id:configuration:). 8. Observe alarmManager.alarmUpdates and confirm the scheduled ID reaches the expected state. 9. If using countdown, add a Widget Extension target with an ActivityConfiguration for the same AlarmAttributes<Metadata> type. 2. Review existing alarm code Run through the Review Checklist at the end of this document. Authorization AlarmKit requires user authorization. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills dpearson2699/alarmkit