跳到主要内容
知仓学习社ZHICANG

alarmkit

AlarmKit integration for scheduling alarms and timers with custom UI, Live Activities, and snooze support. Use when implementing alarm or timer feat…

不碰外部(只输出文字)无严重或高危命中rshankras/claude-code-apple-skills

它会碰到什么

扫了多少4 个文本文件,24 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

AlarmKit

Framework for scheduling alarms and countdown timers with custom UI, Live Activities integration, and focus/silent mode override. Prevents the most common mistakes: using the wrong authorization property name, omitting the Info.plist key, and forgetting the widget extension for countdown presentations.

When This Skill Activates

Use this skill when the user:

  • Asks to add, fix, or review alarm or timer functionality
  • Mentions AlarmKit, AlarmManager, or AlarmPresentation
  • Wants to schedule one-time, repeating, or countdown alarms
  • Asks about snooze, stop, or repeat buttons on alarm alerts
  • Wants alarms to appear on Dynamic Island or Lock Screen (Live Activities)
  • Mentions overriding Focus or silent mode for alarms
  • Asks about AlarmAttributes or AlarmMetadata

Decision Tree

Choose the right reference file based on what the user needs:

What do you need?
|
+-- Schedule an alarm (one-time, repeating, or timer)
|   --> scheduling.md
|       +-- One-time alarm: Alarm.Schedule.relative + .repeats: .never
|       +-- Repeating alarm: Alarm.Schedule.relative + .repeats: .weekly(weekdays)
|       +-- Countdown timer: CountdownDuration (no schedule)
|       +-- Authorization & Info.plist setup
|       +-- Managing alarms: pause, resume, cancel
|
+-- Customize alarm UI (alert, countdown, paused screens)
|   --> presentation.md
|       +-- AlarmPresentation.Alert: title, stop, snooze/repeat buttons
|       +-- AlarmPresentation.Countdown: title, pause button
|       +-- AlarmPresentation.Paused: title, resume button
|       +-- Custom buttons with AlarmButton
|       +-- Tint color and metadata via AlarmAttributes
|
+-- Show alarm on Dynamic Island / Lock Screen
    --> live-activities.md
        +-- Widget extension with ActivityConfiguration
        +-- AlarmAttributes conformance
        +-- Custom AlarmMetadata protocol

API Availability

| API | Minimum Version | Reference |

|-----|----------------|-----------|

| AlarmManager | iOS 26 | scheduling.md |

| Alarm / Alarm.Schedule | iOS 26 | scheduling.md |

| AlarmPresentation (.alert, .countdown, .paused) | iOS 26 | presentation.md |

| AlarmAttributes | iOS 26 | live-activities.md |

| AlarmMetadata | iOS 26 | live-activities.md |

| AlarmButton | iOS 26 | presentation.md |

| CountdownDuration | iOS 26 | scheduling.md |

| alarmUpdates async sequence | iOS 26 | scheduling.md |

| authorizationUpdates async sequence | iOS 26 | scheduling.md |

Top Mistakes -- Quick Reference

| # | Mistake | Fix | Details |

|---|---------|-----|---------|

| 1 | Using .authorizationStatus instead of .authorizationState | The property is AlarmManager.shared.authorizationState -- there is no authorizationStatus | scheduling.md |

| 2 | Forgetting NSAlarmKitUsageDescription in Info.plist | Add the key with a user-facing string before calling requestAuthorization() | scheduling.md |

| 3 | Creating countdown timer with a schedule | Timers use CountdownDuration only -- do not pass a schedule | scheduling.md |

| 4 | Missing widget extension for countdown presentations | Countdown and paused UI requires an ActivityConfiguration(for: AlarmAttributes.self) widget | live-activities.md |

| 5 | Not persisting alarm UUIDs | Store the Alarm.id (UUID) so you can pause, resume, or cancel later | scheduling.md |

| 6 | Not observing alarmUpdates for state sync | Use the alarmUpdates async sequence to keep local state in sync with the system | scheduling.md |

Review Checklist

When reviewing AlarmKit code, verify:

  • [ ] Info.plist -- NSAlarmKitUsageDescription is present with a meaningful description
  • [ ] Authorization -- requestAuthorization() is called before scheduling; denial is handled gracefully
  • [ ] Correct property -- uses .authorizationState, not .authorizationStatus
  • [ ] Alarm ID persistence -- alarm UUIDs are stored (e.g., UserDefaults, SwiftData) for later management
  • [ ] State observation -- alarmUpdates async sequence is used to keep UI in sync
  • [ ] Widget extension -- exists if countdown or paused presentations are used
  • [ ] Error handling -- schedule(), pause(), resume(), cancel() calls handle errors
  • [ ] System limits -- code accounts for the system limit on number of active alarms
  • [ ] Real device testing -- alarms are tested on physical devices, not just Simulator

Reference Files

| File | Content |

|------|---------|

| [scheduling.md](scheduling.md) | Authorization, one-time/repeating/timer creation, managing alarms, observing updates |

| [presentation.md](presentation.md) | Alert, countdown, paused UI customization, buttons, tint color |

| [live-activities.md](live-activities.md) | Widget extension, AlarmAttributes, AlarmMetadata, Dynamic Island |

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。