alarmkit について
alarmkitは、AlarmKitのアラームやタイマーを実装・レビューするためのコーディングスキルです。スケジュール、表示、Live Activitiesの資料と、設定や状態管理の注意点をまとめています。
主な機能
- 01単発・反復・カウントダウンの設定
- 02アラームの認証と設定のガイド
- 03アラート表示とボタンのカスタマイズ
- 04Live Activitiesとウィジェット拡張のガイド
- 05よくあるミスのコードレビュー項目
活用シーン
- 01アプリへのアラームやタイマーの追加
- 02AlarmKitの認証・スケジュールコードのレビュー
- 03ロック画面やDynamic Islandでのカウントダウン表示
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rshankras/ claude-code-apple-skills --skill alarmkitインストール後、Claude Code で/alarmkitを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
live-activities.mdpresentation.mdscheduling.md詳細
AlarmKit
カスタム UI、Live Activities との連携、集中モード/サイレントモードの解除に対応した、アラームとカウントダウンタイマーをスケジュールするためのフレームワークです。よくある間違いである、認可プロパティ名の誤り、Info.plist キーの記載漏れ、カウントダウン表示に必要なウィジェット拡張の追加忘れを防ぎます。
このスキルが有効になる場面
ユーザーが次のことを行う場合に、このスキルを使用します。
- アラームまたはタイマー機能の追加、修正、レビューを依頼する
- AlarmKit、AlarmManager、AlarmPresentationに言及する
- 1回限り、繰り返し、またはカウントダウンアラームのスケジュールを希望する
- アラーム通知のスヌーズ、停止、または繰り返しボタンについて質問する
- アラームをDynamic Islandまたはロック画面に表示する(Live Activities)ことを希望する
- アラームで集中モードまたはサイレントモードを解除することに言及する
- AlarmAttributesまたはAlarmMetadataについて質問する
判断ツリー
ユーザーのニーズに応じて、適切なリファレンスファイルを選択します。
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 の利用可能状況
| API | 最低バージョン | リファレンス |
|---|---|---|
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 非同期シーケンス | iOS 26 | scheduling.md |
authorizationUpdates 非同期シーケンス | iOS 26 | scheduling.md |
よくある間違い -- クイックリファレンス
| # | 間違い | 修正方法 | 詳細 |
|---|---|---|---|
| 1 | .authorizationStateではなく.authorizationStatusを使用する | プロパティはAlarmManager.shared.authorizationStateです。authorizationStatusはありません | scheduling.md |
| 2 | Info.plistにNSAlarmKitUsageDescriptionを記載し忘れる | requestAuthorization()を呼び出す前に、ユーザー向けの説明文とともにキーを追加します | scheduling.md |
| 3 | スケジュールを指定してカウントダウンタイマーを作成する | タイマーではCountdownDurationのみを使用します。スケジュールを渡さないでください | scheduling.md |
| 4 | カウントダウン表示用のウィジェット拡張がない | カウントダウン表示と一時停止表示には、ActivityConfiguration(for: AlarmAttributes.self)ウィジェットが必要です | live-activities.md |
| 5 | アラーム UUID を永続化しない | 後から一時停止、再開、キャンセルできるように、Alarm.id(UUID)を保存します | scheduling.md |
| 6 | 状態同期のためにalarmUpdatesを監視しない | システムとローカルの状態を同期するには、alarmUpdates非同期シーケンスを使用します | scheduling.md |
レビューチェックリスト
AlarmKit のコードをレビューする際は、次の点を確認します。
- Info.plist --
NSAlarmKitUsageDescriptionが適切な説明とともに記載されている - 認可 -- スケジュール設定の前に
requestAuthorization()を呼び出し、拒否された場合も適切に処理している - 正しいプロパティ --
.authorizationStatusではなく.authorizationStateを使用している - アラーム ID の永続化 -- 後から管理できるように、アラーム UUID を保存している(例:UserDefaults、SwiftData)
- 状態の監視 -- UI を同期するために
alarmUpdates非同期シーケンスを使用している - ウィジェット拡張 -- カウントダウン表示または一時停止表示を使用する場合に存在する
- エラー処理 --
schedule()、pause()、resume()、cancel()の呼び出しでエラーを処理している - システム上限 -- 有効なアラーム数に関するシステム上限を考慮している
- 実機テスト -- アラームをシミュレータだけでなく実機でもテストしている
リファレンスファイル
| ファイル | 内容 |
|---|---|
| scheduling.md | 認可、1回限り/繰り返し/タイマーの作成、アラームの管理、更新の監視 |
| presentation.md | 通知、カウントダウン、一時停止 UI のカスタマイズ、ボタン、 tint color |
| live-activities.md | ウィジェット拡張、AlarmAttributes、AlarmMetadata、Dynamic Island |
コメント
Markdown 対応