watchos-code-review について
ライフサイクル、コンプリケーション、接続、パフォーマンスを確認する watchOS 向けコードレビュースキルです。分野別の参考資料、順序付きの根拠確認ゲート、統一された指摘形式を備えています。
主な機能
- 01ライフサイクルとバックグラウンドタスクのチェック
- 02コンプリケーションとタイムラインの確認
- 03WatchConnectivity のレビュー指針
- 04パフォーマンスとバッテリーの確認
- 05根拠ゲートと指摘形式
活用シーン
- 01watchOS のライフサイクル処理のレビュー
- 02コンプリケーションのタイムライン実装の確認
- 03WatchConnectivity のメッセージとファイル転送コードの監査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ existential-birds/ beagle --skill watchos-code-reviewインストール後、Claude Code で/watchos-code-reviewを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/complications.mdconnectivity.mdlifecycle.mdperformance.md詳細
watchOS コードレビュー
クイックリファレンス
| 問題の種類 | リファレンス |
|---|---|
| アプリのライフサイクル、シーン、バックグラウンドモード、拡張ランタイム | references/lifecycle.md |
| ClockKit、WidgetKit、タイムラインプロバイダー、Smart Stack | references/complications.md |
| WCSession、メッセージのやり取り、ファイル転送、到達可能性 | references/connectivity.md |
| メモリ制限、バックグラウンド更新、バッテリー最適化 | references/performance.md |
レビューチェックリスト
- ライフサイクルイベントには
@WKApplicationDelegateAdaptorを使用し、SwiftUI の App プロトコルに準拠している -
scenePhaseはルートビューから読み取っている(常に.activeになるシートやモーダルからは読み取っていない) -
WKExtendedRuntimeSessionはアプリがアクティブなときにのみ開始している(バックグラウンドから開始していない) - ワークアウトセッションはデリゲートだけでなく、
applicationDidFinishLaunchingで復元している - バックグラウンドタスクは少なくとも 5 分間隔でスケジュールし、現在のタスクを完了する前に次のタスクをスケジュールしている
- バックグラウンドネットワークリクエストには
DataTaskではなくURLSessionDownloadTaskを使用している - watchOS 9 以降のコンプリケーションには ClockKit ではなく WidgetKit を使用している
- タイムラインには現在の状態だけでなく将来のエントリーも含まれ、空白期間がない
- Smart Stack の優先順位付けに
TimelineEntryRelevanceを実装している -
activate()の前に WCSession デリゲートを設定し、シングルトンパターンを使用している -
sendMessageの前にisReachableを確認し、重要なデータにはtransferUserInfoを使用している - デリゲートコールバックが戻る前に、受信したファイルを同期的に移動している
リファレンスを参照するタイミング
- アプリのライフサイクル、バックグラウンドモード、または拡張セッションをレビューする場合 -> lifecycle.md
- コンプリケーション、ウィジェット、またはタイムラインプロバイダーをレビューする場合 -> complications.md
- WCSession、iPhone と Apple Watch の通信をレビューする場合 -> connectivity.md
- メモリ、バッテリー、またはパフォーマンスの問題をレビューする場合 -> performance.md
出力形式
問題は次の形式で報告してください: [FILE:LINE] ISSUE_TITLE
例:
[WatchApp.swift:18] WKExtendedRuntimeSession started while app not active[ConnectivityManager.swift:42] WCSession.activate() before delegate assignment[ComplicationTimeline.swift:67] Timeline has no future entries
ハードゲート(報告前)
報告する各指摘について、以下を順番に完了してください。合格条件を満たすまでは先に進まないでください。
- 位置情報の証跡 — 指摘には、現在のファイル内容からコピーした
[FILE:LINE](または行範囲)が含まれていること。そのパスがこのリポジトリ内で解決できること。 - 対象範囲の読み込み — 該当する動作を担う単位全体を読み込んでいること。
Viewの本体、WKApplicationDelegate/ シーンメソッド、TimelineProviderの実装、WCSessionDelegateのコールバック、またはワークアウト/バックグラウンドタスクのハンドラーが対象です。差分の一部分だけでは不十分です。 - watchOS またはペアリングに関する根拠(バックグラウンドモード、コンプリケーション/タイムラインの仕様、
WCSessionの到達可能性や転送のセマンティクス、ワークアウトまたは拡張ランタイムのルール、デバイス固有の制限に依存する指摘の場合のみ)— 確認した具体的な証跡を 1 つ挙げてください(たとえば、バックグラウンドモードについて確認したInfo.plist/ ターゲットの機能、ソース内のWK*/WCSession呼び出し順序、エンタイトルメント、または クイックリファレンス にある該当ドキュメントの節)。または、その項目を レビューの質問 に未解決の質問として記載してください。 - プロトコル — review-verification-protocol の報告前手順を、この項目について満たしていること(満たしていない場合は指摘として報告しないこと)。
報告する各指摘には、問題の形式 [FILE:LINE] ISSUE_TITLE を使用してください。ハードゲート 4 は、このスキルのレビュー種別における報告前チェックリスト全体を指します。
レビュー時の確認事項
- アプリでは、デリゲートアダプターを使用した最新の SwiftUI ライフサイクルを採用していますか?
- バックグラウンドタスクは適切に完了していますか(
setTaskCompletedWithSnapshotを呼び出していますか)? isLuminanceReducedが true の場合、UI の更新頻度は低下しますか?- WatchConnectivity のデリゲートコールバックはメインスレッドにディスパッチされていますか?
TabViewは別のTabViewの内部にネストされていますか?(watchOS でメモリーリークが発生します)
コメント
Markdown 対応