swiftdata-code-review について
モデル、クエリ、並行処理、マイグレーションを評価する SwiftData 向けコードレビュースキルです。関連資料の確認とソース行の根拠を求める、順序付きのレビューゲートを設けています。
主な機能
- 01モデルとリレーションのチェック項目
- 02クエリと述語のレビュー
- 03並行処理とアクターの指針
- 04スキーママイグレーションの確認
- 05順序付きの根拠ゲート
活用シーン
- 01SwiftData のモデル設計のレビュー
- 02クエリ性能と述語の確認
- 03バックグラウンドデータ処理の評価
- 04スキーマ移行レビューの計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ existential-birds/ beagle --skill swiftdata-code-reviewインストール後、Claude Code で/swiftdata-code-reviewを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/concurrency.mdmigrations.mdmodel-design.mdqueries.md詳細
SwiftData コードレビュー
クイックリファレンス
| 問題の種類 | リファレンス |
|---|---|
| @Model、@Attribute、@Relationship、削除ルール | references/model-design.md |
| @Query、#Predicate、FetchDescriptor、#Index | references/queries.md |
| @ModelActor、ModelContext、バックグラウンド処理 | references/concurrency.md |
| VersionedSchema、MigrationStage、軽量/カスタム | references/migrations.md |
ハードゲート(指摘を報告する前に)
順番に実行してください。該当するゲートを通過するまでは、問題を指摘しないでください。
- スコープ — 次の場合に合格: 対象の
.swiftパスを特定し、対象範囲に SwiftData の要素があること(例:import SwiftData、@Model、@Query、@ModelActor、VersionedSchema、またはマイグレーション関連の型)を確認しています。該当するものがない場合は、レビューを中止するか、理由を一文で述べてスコープを絞ってください。 - リファレンス — 次の場合に合格: 評価するチェックリスト項目(モデル、クエリ、並行処理、マイグレーション)ごとに、クイックリファレンス表にある対応する
references/*.mdを開くか、理由を一行添えてN/A: no <area> in this reviewと記載しています。 - 根拠 — 次の場合に合格: すべての指摘で、読んだファイルに基づく
[FILE:LINE] ISSUE_TITLE形式の見出し(行範囲も可)を使用しています。引用のない指摘はありません。 - 報告 — 次の場合に合格: 指摘は、重大度またはチェックリストの分類の前に(または同じ行に)
[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
レビュー時の質問
- このリレーションシップの割り当てによって、NULL の外部キーが発生する可能性はありますか?
- 両側に
@Relationshipを付けると、循環参照が生じる可能性はありますか? - この
@Queryによって、大規模なデータセットの処理中にメインスレッドがブロックされる可能性はありますか? - モデルオブジェクトが安全でない方法でアクター間に渡されていませんか?
- スキーマ変更にはマイグレーションプランが必要になりますか?
コメント
Markdown 対応