mcpField
S
swiftdata-code-review

swiftdata-code-review

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

swiftdata-code-review について

モデル、クエリ、並行処理、マイグレーションを評価する SwiftData 向けコードレビュースキルです。関連資料の確認とソース行の根拠を求める、順序付きのレビューゲートを設けています。

主な機能

  1. 01モデルとリレーションのチェック項目
  2. 02クエリと述語のレビュー
  3. 03並行処理とアクターの指針
  4. 04スキーママイグレーションの確認
  5. 05順序付きの根拠ゲート

活用シーン

  1. 01SwiftData のモデル設計のレビュー
  2. 02クエリ性能と述語の確認
  3. 03バックグラウンドデータ処理の評価
  4. 04スキーマ移行レビューの計画

インストール

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

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

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

同梱ファイル

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

references/
concurrency.md
migrations.md
model-design.md
queries.md

詳細

SwiftData コードレビュー

クイックリファレンス

問題の種類リファレンス
@Model、@Attribute、@Relationship、削除ルールreferences/model-design.md
@Query、#Predicate、FetchDescriptor、#Indexreferences/queries.md
@ModelActor、ModelContext、バックグラウンド処理references/concurrency.md
VersionedSchema、MigrationStage、軽量/カスタムreferences/migrations.md

ハードゲート(指摘を報告する前に)

順番に実行してください。該当するゲートを通過するまでは、問題を指摘しないでください。

  1. スコープ — 次の場合に合格: 対象の .swift パスを特定し、対象範囲に SwiftData の要素があること(例:import SwiftData、@Model、@Query、@ModelActor、VersionedSchema、またはマイグレーション関連の型)を確認しています。該当するものがない場合は、レビューを中止するか、理由を一文で述べてスコープを絞ってください。
  2. リファレンス — 次の場合に合格: 評価するチェックリスト項目(モデル、クエリ、並行処理、マイグレーション)ごとに、クイックリファレンス表にある対応する references/*.md を開くか、理由を一行添えて N/A: no <area> in this review と記載しています。
  3. 根拠 — 次の場合に合格: すべての指摘で、読んだファイルに基づく [FILE:LINE] ISSUE_TITLE 形式の見出し(行範囲も可)を使用しています。引用のない指摘はありません。
  4. 報告 — 次の場合に合格: 指摘は、重大度またはチェックリストの分類の前に(または同じ行に)[FILE:LINE] ISSUE_TITLE 形式の引用を記載しています。引用のない断定はありません。

レビューチェックリスト

  • モデルに final を指定する(サブクラス化するとクラッシュします)
  • @Relationship デコレーターは片側だけに付ける(両側には付けない)
  • 削除ルールを明示的に設定する(デフォルトの .nullify に依存しない)
  • リレーションシップはデフォルトオブジェクトではなく空の配列で初期化する
  • 一括挿入にはバッチ操作(append(contentsOf:))を使用する
  • @Query でメインスレッドに数千件の項目を読み込まない
  • 述語内で外部の値を使用する場合は、ローカル変数に取り込む
  • 述語ではオブジェクト参照ではなく、スカラー値を比較する
  • バックグラウンド処理には @ModelActor を使用する
  • アクター間のデータ受け渡しには PersistentIdentifier/DTO を使用する
  • リリース済みの各バージョンに VersionedSchema を定義する
  • ModelContainer に MigrationPlan を渡す

リファレンスを読み込むタイミング

  • @Model またはリレーションシップのレビュー → model-design.md
  • @Query または #Predicate のレビュー → queries.md
  • @ModelActor またはバックグラウンド処理のレビュー → concurrency.md
  • スキーマ変更またはマイグレーションのレビュー → migrations.md

レビュー時の質問

  1. このリレーションシップの割り当てによって、NULL の外部キーが発生する可能性はありますか?
  2. 両側に @Relationship を付けると、循環参照が生じる可能性はありますか?
  3. この @Query によって、大規模なデータセットの処理中にメインスレッドがブロックされる可能性はありますか?
  4. モデルオブジェクトが安全でない方法でアクター間に渡されていませんか?
  5. スキーマ変更にはマイグレーションプランが必要になりますか?

コメント