cloudkit-code-review について
Apple CloudKit コードを対象とするレビュー用スキルです。コンテナ、レコード、サブスクリプション、共有のチェック項目を備え、指摘前に証拠と周辺コードの確認を求めます。
主な機能
- 01アカウント状態、ゾーン、権限の確認
- 02エラー処理と競合マージの点検
- 03バッチ操作とアセット保存の評価
- 04サブスクリプションと共有設定の確認
- 05ファイルと行番号付きの指摘
- 06段階的なレビューゲートで証拠を検証
活用シーン
- 01CloudKit データベースとゾーン設定のレビュー
- 02レコード同期、エラー、競合の確認
- 03プッシュ通知と共有機能の検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ existential-birds/ beagle --skill cloudkit-code-reviewインストール後、Claude Code で/cloudkit-code-reviewを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/container-setup.mdrecords.mdsharing.mdsubscriptions.md詳細
CloudKit コードレビュー
クイックリファレンス
| 問題の種類 | リファレンス |
|---|---|
| CKContainer、データベース、ゾーン、エンタイトルメント | references/container-setup.md |
| CKRecord、参照、アセット、一括操作 | references/records.md |
| CKSubscription、プッシュ通知、サイレント同期 | references/subscriptions.md |
| CKShare、参加者、権限、受け入れ | references/sharing.md |
レビューチェックリスト
- プライベート/共有データベースの操作前にアカウントの状態を確認している
- 本番データにはデフォルトゾーンではなくカスタムゾーンを使用している
-
retryAfterSecondsを尊重して、すべての CloudKit エラーを処理している -
serverRecordChangedの競合を適切なマージロジックで処理している -
CKErrorPartialFailureを解析し、個々のレコードエラーを処理している - 個別の保存ではなく、一括操作(
CKModifyRecordsOperation)を使用している - 大きなバイナリデータは
CKAssetに保存している(レコードの上限は1 MB) - レコードキーは文字列リテラルではなく、型安全な形式(列挙型)になっている
- コールバックからの UI 更新をメインスレッドにディスパッチしている
- アカウントの切り替えに備えて
CKAccountChangedNotificationを監視している - 重複を防ぐため、サブスクリプションに一意の ID を設定している
- CKShare でカスタムゾーンを使用している(共有にはカスタムゾーンが必須)
リファレンスを読み込むタイミング
- コンテナ/データベースの設定またはゾーンをレビューする場合 -> container-setup.md
- レコードの CRUD または関連付けをレビューする場合 -> records.md
- プッシュ通知または同期トリガーをレビューする場合 -> subscriptions.md
- 共有機能またはコラボレーション機能をレビューする場合 -> sharing.md
出力形式
次の形式で問題を報告します:[FILE:LINE] ISSUE_TITLE
例:
[AppDelegate.swift:24] CKContainer not in custom zone[SyncManager.swift:156] Unhandled CKErrorPartialFailure[DataStore.swift:89] Missing retryAfterSeconds backoff
レビューの質問
- ユーザーが iCloud からサインアウトした場合、どうなりますか?
- エラー処理ではレート制限(
retryAfterSeconds)を尊重していますか? - 競合は解決されますか、それともデータが気付かないうちに上書きされますか?
- App Store リリース前にスキーマは本番環境へデプロイされていますか?
- 共有レコードはカスタムゾーンにありますか(CKShare には必須)?
ハードゲート(報告前)
報告する各指摘について、順番どおりに完了してください。合格条件を満たすまで、次へ進まないでください。
- 位置情報 — 指摘には、現在のファイル内容から転記した
[FILE:LINE](または行の範囲)が含まれ、パスがこのリポジトリ内で解決できること。 - 対象範囲の確認 — 差分の一部や独立した断片だけでなく、CloudKit の処理を担う型または関数全体(たとえば
CKOperationサブクラスの使用箇所、完了ハンドラーの連鎖、CKRecordのライフサイクル)を読み通していること。 - CloudKit またはデプロイに関する主張(コンテナ識別子、パブリック/プライベートデータベースの選択、カスタムゾーンの要件、iCloud アカウントの状態、エンタイトルメント、本番スキーマに指摘が依存する場合のみ) — 調査した具体的な成果物を1つ明示すること(たとえば
com.apple.developer.icloud-container-environment、エンタイトルメントファイル内のコンテナ ID、ソース内のCKContainer.default()とカスタム識別子の比較、Info.plist/ターゲットの機能、スキーマがデプロイ済みであることを示す証拠)。またはその項目を レビューの質問 の未解決の質問に格下げすること。 - プロトコル — この項目について、review-verification-protocol の事前報告手順を満たしていること(満たしていない場合は指摘を行わないこと)。
報告する指摘ごとに、問題形式 [FILE:LINE] ISSUE_TITLE を使用してください。ハードゲート4は、このスキルのレビュー種別における事前報告チェックリスト全体です。
コメント
Markdown 対応