mcpField
W
widgetkit-code-review

widgetkit-code-review

github.com/existential-birdsテスト・品質85116 回インストール11 週間前に更新
リポジトリ

widgetkit-code-review について

widgetkit-code-reviewは、Apple WidgetKitコードをレビューするスキルです。タイムライン、ビュー、インテント、パフォーマンスのチェックリストと資料を備え、報告前に根拠とプラットフォーム固有の確認を求めます。

主な機能

  1. 01タイムラインと更新ポリシーの確認
  2. 02ウィジェットサイズとディープリンクの確認
  3. 03インテント設定の確認
  4. 04メモリ、キャッシュ、更新予算の確認
  5. 05報告前の根拠確認ゲート

活用シーン

  1. 01TimelineProviderの実装レビュー
  2. 02サイズごとのウィジェット動作確認
  3. 03設定可能なウィジェット変更の評価
  4. 04ウィジェットのメモリや更新に関する調査

インストール

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

$npx skills add https://github.com/existential-birds/beagle --skill widgetkit-code-review

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

同梱ファイル

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

references/
intents.md
performance.md
timeline.md
views.md

詳細

WidgetKit コードレビュー

クイックリファレンス

問題の種類参照先
TimelineProvider、エントリー、再読み込みポリシーreferences/timeline.md
ウィジェットファミリー、containerBackground、ディープリンクreferences/views.md
AppIntentConfiguration、EntityQuery、@Parameterreferences/intents.md
更新予算、メモリ制限、キャッシュreferences/performance.md

レビューチェックリスト

  • placeholder(in:) は非同期処理を行わず、すぐに返る
  • Timeline エントリーの間隔は少なくとも 5 分空いている
  • ギャラリーのプレビューでは、getSnapshot が context.isPreview を確認している
  • iOS 17 以降との互換性のために containerBackground(for:) を使用している
  • systemSmall では widgetURL を使用している(Link ではない)
  • Button ビューを使用していない(Link または widgetURL を使用する)
  • ウィジェットビューで AsyncImage や UIViewRepresentable を使用していない
  • 画像をウィジェットの表示サイズに合わせてダウンサンプリングしている(上限は約 30MB)
  • アプリとウィジェット間のデータ共有に App Groups を設定している
  • EntityQuery が、非オプションのパラメーターに対して defaultResult() を実装している
  • 新しいインテントパラメーターが、更新後の既存ウィジェットで nil を処理している
  • reloadTimelines を適切なタイミングで呼び出している(データが変更されるたびではない)

参照資料を読み込むタイミング

  • TimelineProvider の実装または更新の問題 -> timeline.md
  • ウィジェットのサイズ、ロック画面、containerBackground -> views.md
  • 設定可能なウィジェット、AppIntent への移行 -> intents.md
  • メモリの問題、キャッシュ、予算管理 -> performance.md

レビュー時の確認事項

  1. システムによる更新が遅れた場合に備えて、ウィジェットにフォールバック用のエントリーがありますか?
  2. ロック画面のファミリー(accessoryCircular/Rectangular/Inline)は適切に処理されていますか?
  3. IntentConfiguration から移行すると、既存のユーザーウィジェットに問題が生じますか?
  4. タイムラインには今後のエントリーが設定されていますか?それとも頻繁な更新に依存していますか?
  5. ウィジェットからアクセスできるよう、データは App Groups 経由でキャッシュされていますか?

ハードゲート(報告前)

報告する予定の各指摘について、順番に完了してください。合格条件を満たすまで次に進まないでください。

  1. 場所を示す根拠 — 指摘には、現在のファイル内容からコピーした [FILE:LINE](または行範囲)が含まれており、そのパスがこのリポジトリ内で解決できます。
  2. 対象範囲の読み込み — 差分の一部分やコードスニペットだけでなく、周辺の実装全体を読みます。該当する場合は、TimelineProvider(placeholder、getSnapshot、getTimeline を含む)、@main の Widget/ウィジェットバンドル、または設定可能なウィジェットの AppIntentConfiguration/インテント型を読みます。
  3. プラットフォームまたはシステムに関する主張(指摘が更新予算、約 30MB のメモリに関する指針、ロック画面のアクセサリーファミリー、iOS 17 以降の containerBackground、App Groups によるデータ共有、または IntentConfiguration から AppIntentConfiguration への移行に依存する場合のみ) — 確認した具体的な根拠(例:.entitlements/プロジェクト内の App Group ID、ソースコード内の WidgetFamily の処理、IPHONEOS_DEPLOYMENT_TARGET、または参照資料の該当するサブセクション)を 1 つ示すか、指摘を削除するか、未解決の質問として扱います。
  4. プロトコル — この項目について、review-verification-protocol に記載されている報告前の手順を満たしていること(満たしていない場合は指摘しないでください)。

報告する指摘には、それぞれ [FILE:LINE] ISSUE_TITLE の形式を使用してください。ハードゲート 4 は、このスキルのレビュー種別における報告前チェックリスト全体です。

コメント