alarmkit — Claude Code skill: AlarmKit alarms and timers
A skill that steers the agent through AlarmKit alarm and countdown timer code, from the Info.plist key to the schedule call and Live Activity states.
npx skills add dpearson2699/swift-ios-skills --skill alarmkit -a claude-codeWhat alarmkit does
Give the agent this skill and it follows a set order: add the Info.plist key, ask for authorization, build the presentation and attributes, call AlarmManager.shared.schedule(id:configuration:), then watch alarmUpdates until the scheduled ID lands in the state you want. Firing alerts reach the Lock Screen, the Dynamic Island, StandBy and a paired Apple Watch, and they get past Focus and Silent mode.
One section covers the .alarm versus .timer choice: clock time with weekday repeat on one side, an always-visible countdown from a duration on the other. State transitions get the same treatment, including which calls throw when the alarm is not in the matching state.
Skip NSAlarmKitUsageDescription or lose the user's permission and nothing gets scheduled — the app needs recovery UI instead of a silent no-op. Countdown UI you can style lives only in a Widget Extension built on the same AlarmAttributes<Metadata>, because the ringing alert itself is system-drawn. Deployment target has to be iOS 26 or newer; older ones have no AlarmKit at all.
What it helps with
- schedule an alarm that still fires in Silent mode
- build a countdown timer with pause and resume
- show the remaining time on the Lock Screen and in the Dynamic Island
- attach a snooze button with system-handled behaviour
- catch a missing authorization request during review
Example prompts for the agent
- Build an AlarmKit alarm that repeats on weekdays with a snooze button.
- Add a countdown timer and render it in the Dynamic Island through a Widget Extension.
- Check that the app asks for authorization before
AlarmManager.shared.schedule(id:configuration:).
How to install alarmkit
1Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill alarmkit -a claude-code2Manually: put the files in place
~/.claude/skills/alarmkit/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/alarmkit/
1Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill alarmkit -a codex2Manually: put the files in place
.agents/skills/alarmkit/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill alarmkit -a cursor2Manually: put the files in place
.cursor/skills/alarmkit/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install dpearson2699/swift-ios-skills alarmkit2Manually: put the files in place
.github/skills/alarmkit/SKILL.md1Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill alarmkit -a gemini-cli2Platform CLI
gemini skills install https://github.com/dpearson2699/swift-ios-skills --path skills/alarmkitManually: put the files in place
.devin/skills/alarmkit/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill alarmkit -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about alarmkit
How do I install alarmkit in Claude Code?
Run npx skills add dpearson2699/swift-ios-skills --skill alarmkit -a claude-code. The skill then sits at ~/.claude/skills/alarmkit/SKILL.md.
What does alarmkit do?
It gives the agent AlarmKit patterns for alarms and timers: authorization, scheduling, state handling and the widget extension that draws the countdown.
Why doesn't my alarm ever fire?
AlarmKit needs NSAlarmKitUsageDescription in Info.plist and a granted permission. Without either, the schedule call has no alert behind it.