mcpField
A
alarmkit

alarmkit

github.com/rshankras開発86474 回インストール2 日前に更新
リポジトリ

alarmkit について

alarmkitは、AlarmKitのアラームやタイマーを実装・レビューするためのコーディングスキルです。スケジュール、表示、Live Activitiesの資料と、設定や状態管理の注意点をまとめています。

主な機能

  1. 01単発・反復・カウントダウンの設定
  2. 02アラームの認証と設定のガイド
  3. 03アラート表示とボタンのカスタマイズ
  4. 04Live Activitiesとウィジェット拡張のガイド
  5. 05よくあるミスのコードレビュー項目

活用シーン

  1. 01アプリへのアラームやタイマーの追加
  2. 02AlarmKitの認証・スケジュールコードのレビュー
  3. 03ロック画面やDynamic Islandでのカウントダウン表示

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/rshankras/claude-code-apple-skills --skill alarmkit

インストール後、Claude Code で/alarmkitを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

live-activities.md
presentation.md
scheduling.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最低バージョンリファレンス
AlarmManageriOS 26scheduling.md
Alarm / Alarm.ScheduleiOS 26scheduling.md
AlarmPresentation (.alert, .countdown, .paused)iOS 26presentation.md
AlarmAttributesiOS 26live-activities.md
AlarmMetadataiOS 26live-activities.md
AlarmButtoniOS 26presentation.md
CountdownDurationiOS 26scheduling.md
alarmUpdates 非同期シーケンスiOS 26scheduling.md
authorizationUpdates 非同期シーケンスiOS 26scheduling.md

よくある間違い -- クイックリファレンス

#間違い修正方法詳細
1.authorizationStateではなく.authorizationStatusを使用するプロパティはAlarmManager.shared.authorizationStateです。authorizationStatusはありませんscheduling.md
2Info.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

コメント