mcpField
A
app-intents-code-review

app-intents-code-review

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

app-intents-code-review について

SwiftのApp Intents実装を、インテント、エンティティ、ショートカット、パラメーターの観点から確認するコードレビュースキルです。専用チェックリストを備え、指摘前にコード位置と周辺コンテキストの確認を求めます。

主な機能

  1. 01AppIntentの構造と動作の確認
  2. 02エンティティクエリと識別子の確認
  3. 03ショートカットのフレーズと検出性の確認
  4. 04パラメーターと動的オプションの検証
  5. 05位置とコードコンテキストの確認要件

活用シーン

  1. 01AppIntent実装のレビュー
  2. 02Siriエンティティクエリの動作確認
  3. 03App Shortcutフレーズの点検
  4. 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.md
intent-structure.md
parameters.md
shortcuts.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

レビュー時の質問

  1. perform() は、長時間実行される操作のタイムアウト制限に対応していますか?
  2. エンティティクエリは自己完結していますか(Siri のコンテキストで @Dependency を注入していませんか)?
  3. フレーズは自然に読め、アプリ名を含んでいますか?
  4. SwiftData モデルは直接渡すのではなく、persistentModelID で渡していますか?
  5. SiriKit から移行すると、既存のユーザーショートカットが機能しなくなりますか?

報告前の必須ゲート

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

  1. 位置情報の証跡 — 指摘には、現在のファイル内容からコピーした [FILE:LINE](または行範囲)が含まれており、パスがこのリポジトリ内で解決できること。
  2. 対象範囲の確認 — 指摘対象のコードを含む型全体、すなわち AppIntent/AppEntity/EntityQuery/AppShortcutsProvider(または同等の型)を読み、差分の一部やスニペットだけで済ませていないこと。
  3. プラットフォームまたは統合に関する主張(指摘が最低 iOS バージョン、Swift Package とアプリターゲットの違い、@IntentParameterDependency の利用可能性、SiriKit からの移行、または isDiscoverable/エクステンションの配置に依存する場合のみ)— 確認した具体的な証跡を1つ挙げてください(たとえば、IPHONEOS_DEPLOYMENT_TARGET、Xcode プロジェクト内のターゲットメンバーシップ、Package.swift の platforms、エンタイトルメント、インテントファイルの配置場所など)。それができない場合は、指摘を取り下げるか、未解決の質問として扱ってください。
  4. プロトコル — この項目について、review-verification-protocol に記載された報告前の手順を満たしていること(満たしていない場合、指摘は報告しないでください)。

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

コメント