alarmkit_skill

This skill helps you implement AlarmKit alarms and timers in iOS 18+ apps with custom UI, Live Activities, and snooze support.
  • Swift

56

GitHub Stars

4

Bundled Files

2 months ago

Catalog Refreshed

4 months ago

First Indexed

Readme & install

Copy the install command, review bundled files from the catalogue, and read any extended description pulled from the listing source.

Installation

Preview and clipboard use veilstrat where the catalogue uses aiagentskills.

npx veilstrat add skill rshankras/claude-code-apple-skills --skill alarmkit

  • live-activities.md5.9 KB
  • presentation.md5.8 KB
  • scheduling.md7.6 KB
  • SKILL.md5.0 KB

Overview

This skill integrates AlarmKit for scheduling alarms and countdown timers with custom UI, Live Activities, and snooze support. It helps implement reliable alarm/timer behavior on iOS 18+, avoiding common integration mistakes. Use it to add system-aware alarms that can override Focus/silent mode and surface on the Dynamic Island or Lock Screen.

How this skill works

It wires AlarmManager, Alarm, and AlarmPresentation APIs to schedule one-time, repeating, or countdown alarms, handle authorization, and persist alarm IDs. The skill ensures the correct Info.plist key (NSAlarmKitUsageDescription) is present, observes alarmUpdates for state sync, and configures a widget extension with AlarmAttributes for Live Activities. It also exposes UI customization points (alert, countdown, paused) and button behaviors (stop, snooze, pause, resume).

When to use it

  • Adding or reviewing alarm or timer features in an iOS 18+ app
  • Scheduling one-time, repeating, or countdown timers
  • Showing alarm state on Dynamic Island or Lock Screen via Live Activities
  • Implementing snooze, stop, pause, or resume controls on alarms
  • Handling authorization, Info.plist setup, and Focus/silent-mode override

Best practices

  • Include NSAlarmKitUsageDescription in Info.plist before requesting authorization
  • Use AlarmManager.shared.authorizationState (not authorizationStatus) and handle denied states gracefully
  • Persist Alarm.id (UUID) so alarms can be paused, resumed, or canceled later
  • Observe the alarmUpdates async sequence to keep app UI in sync with system state
  • Provide a widget extension with ActivityConfiguration(for: AlarmAttributes.self) for countdown/paused presentations
  • Handle errors from schedule(), pause(), resume(), and cancel() and account for system limits on active alarms

Example use cases

  • Schedule a daily wake-up alarm with repeats and a snooze button on the alert UI
  • Create a cooking countdown timer that shows remaining time on the Lock Screen via Live Activities
  • Pause and resume a long timer from a widget or in-app UI while persisting the alarm UUID
  • Override Focus/silent mode for critical alarms while still respecting user settings and authorization
  • Add custom alarm buttons and metadata to show contextual actions in the alarm alert

FAQ

Add NSAlarmKitUsageDescription with a user-facing string before calling requestAuthorization().

How do I show timers on the Dynamic Island?

Provide a widget extension with ActivityConfiguration(for: AlarmAttributes.self) and supply AlarmAttributes/AlarmMetadata for Live Activities.

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational