app-intents-code-review について
SwiftのApp Intents実装を、インテント、エンティティ、ショートカット、パラメーターの観点から確認するコードレビュースキルです。専用チェックリストを備え、指摘前にコード位置と周辺コンテキストの確認を求めます。
主な機能
- 01AppIntentの構造と動作の確認
- 02エンティティクエリと識別子の確認
- 03ショートカットのフレーズと検出性の確認
- 04パラメーターと動的オプションの検証
- 05位置とコードコンテキストの確認要件
活用シーン
- 01AppIntent実装のレビュー
- 02Siriエンティティクエリの動作確認
- 03App Shortcutフレーズの点検
- 04パラメーターの既定値と検証の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ existential-birds/ beagle --skill app-intents-code-reviewインストール後、Claude Code で/app-intents-code-reviewを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/entities.mdintent-structure.mdparameters.mdshortcuts.md詳細
App Intents コードレビュー
クイックリファレンス
| 問題の種類 | 参照先 |
|---|---|
| AppIntent プロトコル、perform()、戻り値の型 | references/intent-structure.md |
| AppEntity、EntityQuery、識別子 | references/entities.md |
| AppShortcutsProvider、フレーズ、検出 | references/shortcuts.md |
| @Parameter、検証、動的なオプション | references/parameters.md |
レビューチェックリスト
- UI/メインスレッドのリソースにアクセスする場合、
perform()に@MainActorが付いている -
perform()が30秒のタイムアウト以内に完了する(負荷の高いダウンロードや処理を行わない) - カスタムエラーが
CustomLocalizedStringResourceConvertibleに準拠している -
EntityQuery.entities(for:)が、存在しない識別子を適切に処理する - Siri の音声入力が必要な場合、通常の
EntityQueryではなくEntityStringQueryを使用している -
suggestedEntities()が、曖昧さを解消するための適切なデフォルト値を返す -
AppShortcutのフレーズに.applicationNameパラメーターが含まれている - オプショナルではない
@Parameterに適切なデフォルト値があるか、requestValue()を使用している - iOS 16 を対象とする場合、
@IntentParameterDependencyを使用していない(クラッシュするため) - フレーズが
Localizable.stringsではなくAppShortcuts.stringsでローカライズされている - App Intents が Swift Package ではなくアプリバンドルで定義されている(iOS 17 より前)
- 内部用途/ウィジェット専用のインテントでは
isDiscoverable = falseになっている
参照資料を読み込むタイミング
- AppIntent プロトコルの実装 -> intent-structure.md
- エンティティクエリ、識別子、Spotlight -> entities.md
- App Shortcuts、フレーズ、検出 -> shortcuts.md
- パラメーターの検証、動的なオプション -> parameters.md
レビュー時の質問
perform()は、長時間実行される操作のタイムアウト制限に対応していますか?- エンティティクエリは自己完結していますか(Siri のコンテキストで
@Dependencyを注入していませんか)? - フレーズは自然に読め、アプリ名を含んでいますか?
- SwiftData モデルは直接渡すのではなく、
persistentModelIDで渡していますか? - SiriKit から移行すると、既存のユーザーショートカットが機能しなくなりますか?
報告前の必須ゲート
報告する各指摘について、順番どおりに完了してください。合格条件を満たすまでは次に進まないでください。
- 位置情報の証跡 — 指摘には、現在のファイル内容からコピーした
[FILE:LINE](または行範囲)が含まれており、パスがこのリポジトリ内で解決できること。 - 対象範囲の確認 — 指摘対象のコードを含む型全体、すなわち
AppIntent/AppEntity/EntityQuery/AppShortcutsProvider(または同等の型)を読み、差分の一部やスニペットだけで済ませていないこと。 - プラットフォームまたは統合に関する主張(指摘が最低 iOS バージョン、Swift Package とアプリターゲットの違い、
@IntentParameterDependencyの利用可能性、SiriKit からの移行、またはisDiscoverable/エクステンションの配置に依存する場合のみ)— 確認した具体的な証跡を1つ挙げてください(たとえば、IPHONEOS_DEPLOYMENT_TARGET、Xcode プロジェクト内のターゲットメンバーシップ、Package.swiftのplatforms、エンタイトルメント、インテントファイルの配置場所など)。それができない場合は、指摘を取り下げるか、未解決の質問として扱ってください。 - プロトコル — この項目について、review-verification-protocol に記載された報告前の手順を満たしていること(満たしていない場合、指摘は報告しないでください)。
報告する各指摘には、[FILE:LINE] ISSUE_TITLE 形式を使用してください。必須ゲート4は、このスキルのレビュ―種別における報告前チェックリストの全項目です。
コメント
Markdown 対応