mcpField
A
app-intents

app-intents

github.com/n0an開発39523 回インストール5 週間前に更新
リポジトリ

app-intents について

app-intentsは、AppleのApp Intentsフレームワークでアプリ機能を公開するSwiftコードの作成・レビューを支援するスキルです。タスク別の案内と、Intent、エンティティ、Siri、Spotlight、テストなどの確認項目を提供します。

主な機能

  1. 01Intentのプロトコル、パラメーター、戻り値のレビュー
  2. 02エンティティ、クエリー、Spotlightインデックスの検証
  3. 03SiriとApple Intelligence連携の案内
  4. 04ショートカット、ナビゲーション、スニペットの確認
  5. 05依存関係、実行、テストのパターンを網羅

活用シーン

  1. 01App Intentを作成して検出可能に登録
  2. 02SiriやSpotlightからアプリデータを検索可能にする
  3. 03Siriやショートカットから特定のアプリ内エンティティを開く
  4. 04Intentのテストや実装上の問題の調査

インストール

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

$npx skills add https://github.com/n0an/app-intents-agent-skill --skill app-intents

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

同梱ファイル

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

agents/
openai.yaml
references/
anti-patterns.md
assistant-schemas.md
dependencies.md
entities.md
fundamentals.md
long-running-and-execution.md
onscreen-awareness.md
open-and-snippet-intents.md
parameters.md
shortcuts-and-siri.md
siri-intelligence.md
spotlight.md
testing-intents.md

詳細

App Intents フレームワークを通じてアプリの機能を公開する Swift コードを作成・レビューし、プロトコルへの適合、安全なデータフロー、慣用的な検出可能性の設定を確認します。

レビューの手順:

  1. references/fundamentals.md を使って、インテントの基本(プロトコル、perform()、戻り値の型、ダイアログ)を確認します。
  2. references/parameters.md を使って、パラメーターとパラメーターオプションを検証します。
  3. references/entities.md を使って、エンティティ型、表示表現、クエリを検証します。
  4. references/shortcuts-and-siri.md を使って、AppShortcutsProvider の登録と検出可能性 UI を確認します。
  5. references/open-and-snippet-intents.md を使って、OpenIntent のナビゲーションとスニペットビューの戻り値の型を検証します。
  6. references/dependencies.md を使って、依存関係の注入とデータコントローラーのパターンを確認します。
  7. references/spotlight.md を使って、IndexedEntity、IndexedEntityQuery、属性セットによる Spotlight のインデックス作成を検証します。
  8. references/assistant-schemas.md を使って、@AssistantEntity/@AssistantIntent スキーマの採用を確認します。
  9. references/siri-intelligence.md を使って、Siri/Apple Intelligence との連携(コンテンツの検索、カスタム応答、寄付、確認、所有権)を検証します。
  10. references/onscreen-awareness.md を使って、画面上の認識とコンテンツの転送(ビューのアノテーション、IntentValueRepresentation、システム連携アノテーション)を確認します。
  11. 30 秒を超えて実行されるインテント、キャンセルを処理するインテント、または特定のプロセスを対象とするインテントには、references/long-running-and-execution.md を使います。
  12. インテントのテストを作成またはレビューする場合は、references/testing-intents.md を使います(新しい AppIntentsTesting フレームワークを扱います)。
  13. references/anti-patterns.md を使って、よくある間違いを見つけます。

一部の作業のみを行う場合は、関連するリファレンスファイルだけを読み込みます。

タスク別の参照先

ユーザーの目的に合わせて、読み込む順序を選びます。必要なものだけを読み込みます。

「最初の App Intent を作成する」
  1. references/fundamentals.md - プロトコル、perform()、戻り値の型
  2. references/shortcuts-and-siri.md - 表示されるように登録する
「Shortcuts でユーザーが選択するパラメーターを追加する」
  1. references/parameters.md - @Parameter、プロンプト、曖昧さの解消
  2. references/entities.md - パラメーターがドメインエンティティの場合
「Siri/Spotlight からアプリのデータを検索できるようにする」
  1. references/entities.md - AppEntity、IndexedEntity、@Property
  2. references/spotlight.md - インデックス作成の方針、属性セット
  3. references/shortcuts-and-siri.md - 柔軟なマッチング、フレーズのルール
「Siri がインテントを実行したときに概要/インタラクティブビューを表示する」
  1. references/open-and-snippet-intents.md - インラインと間接スニペット、SnippetIntent、Button(intent:)
  2. references/fundamentals.md - 戻り値の型とスニペットの設計ルール
「Siri/Shortcuts からアプリ内の特定の項目を開く」
  1. references/open-and-snippet-intents.md - OpenIntent、URLRepresentableIntent、TargetContentProvidingIntent
  2. references/dependencies.md - ナビゲーター/シーンのルーティング
「アプリのコンテンツやアクションを Siri/Apple Intelligence で利用できるようにする」
  1. references/siri-intelligence.md - 連携モデル、コンテンツの検索(セマンティックインデックス/構造化検索/アプリ内検索)、カスタム応答、寄付、確認/所有権
  2. references/assistant-schemas.md - スキーママクロ、ドメイン、複数スキーマの要件、Xcode のスニペット
  3. references/onscreen-awareness.md - ビューのアノテーション、コンテンツの転送、システム連携アノテーション
「Apple Intelligence と連携する」
  1. references/assistant-schemas.md - スキーママクロ、ドメイン、Use Model アクション、画面上のコンテンツ
  2. references/entities.md - @Property、Transferable(複数のスキーマで必須)
「Siri が画面上の内容を理解できるようにする」
  1. references/onscreen-awareness.md - 4 つのアノテーション API、コンテンツの転送、displayRepresentations の高速パス、通知/再生中/AlarmKit でのアノテーション
  2. references/siri-intelligence.md - 画面上のコンテキストが Siri の全体的な仕組みにどう組み込まれるか
「インテントの実行時間を30秒より長くする、またはプロセスを指定する」
  1. references/long-running-and-execution.md - LongRunningIntent、CancellableIntent、allowedExecutionTargets、バックグラウンド GPU
  2. references/fundamentals.md - ProgressReportingIntent、supportedModes
「大量のエンティティを効率的に処理する/デバイス間で同期する」
  1. references/parameters.md - EntityCollection(識別子のみのパラメーター)
  2. references/entities.md - デバイス間の識別には SyncableEntity、プロアクティブな提案には RelevantEntities
「Visual Intelligence/画像検索に対応する」
  1. references/assistant-schemas.md - IntentValueQuery、SemanticContentDescriptor、@UnionValue
  2. references/entities.md - Transferable と OpenIntent の組み合わせ
「インタラクティブなウィジェットまたはコントロールセンターのコントロールを作成する」
  1. references/open-and-snippet-intents.md - Button(intent:)、WidgetConfigurationIntent、ControlConfigurationIntent、ControlWidgetButton
  2. references/dependencies.md - App Group の共有ストレージ、プロセス境界
「App Intents を中心にアプリを構成する」
  1. references/fundamentals.md - 正規のアクションレイヤーとしてのインテント
  2. references/dependencies.md - @Dependency、モジュール間の AppIntentsPackage
  3. references/entities.md - エンティティを橋渡しにするパターン
「App Intents をテストする」
  1. references/testing-intents.md - AppIntentsTesting フレームワーク(プロセス外の統合テスト)、構造体の直接的な単体テスト、@Dependency のモック化、テスト専用インテント、テストできない内容
「ビルドエラーや実行時のバグが発生している」
  1. references/anti-patterns.md - 35件以上の問題と修正前/修正後の例

判断ツリー

タスクはわかっているものの、適切な API がわからない場合のクイックガイドです。

どのインテントプロトコルに準拠すればよいですか?
Generic action?
  → AppIntent

Opens the app to a specific entity?
  → OpenIntent (+ TargetContentProvidingIntent on iOS)
  → on iOS 27+, @AppIntent(schema: .system.open) on the OpenIntent, with a legacy sibling intent for older OS

Renders an interactive view only, no business logic?
  → SnippetIntent

Needs to bring the app forward conditionally?
  → AppIntent with supportedModes (iOS 26+)
  → or ForegroundContinuableIntent (iOS 17-18)

Runs longer than 30 seconds (upload, sync, inference)?
  → LongRunningIntent + performBackgroundTask (iOS 27+)

Needs to clean up gracefully when cancelled (with the reason)?
  → CancellableIntent + withIntentCancellationHandler (iOS 26.4+)

Deletes entities with standard confirmation?
  → DeleteIntent

Routes a search query into the app?
  → ShowInAppSearchResultsIntent

Backs widget configuration?
  → WidgetConfigurationIntent (empty conformance, no perform)

Backs a Control Center control?
  → ControlConfigurationIntent

Has a universal-link URL representation?
  → URLRepresentableIntent + OpenIntent (no perform needed)

Matches an Apple Intelligence domain?
  → AppIntent + @AppIntent(schema: .domain.action)
どのエンティティ型を使えばよいですか?
Fixed set known at compile time?
  → AppEnum

Dynamic data with a persistent id?
  → AppEntity

Entity must appear in Spotlight?
  → AppEntity + IndexedEntity

Entity IS a file (scan, voice memo, exported image)?
  → FileEntity

Computed / aggregated data with no stable id?
  → TransientAppEntity

Needs Apple Intelligence schema awareness?
  → AppEntity + @AppEntity(schema: .domain.type)

Supports cross-app sharing?
  → AppEntity + Transferable
エンティティにはどのクエリを使えばよいですか?
Small fixed set, enumerable?
  → EnumerableEntityQuery (also gets a basic Find intent)

Large dataset, searchable by name?
  → EntityQuery + EntityStringQuery

Many queryable properties, user should build predicates?
  → EntityPropertyQuery (auto-generates Find intent with comparators + sort)

Simple id-only lookup, no search?
  → UniqueIDEntityQuery

Indexed in Spotlight and want reindexing support?
  → IndexedEntityQuery (iOS 27+)

Structured Siri search you can't index ahead of time?
  → IntentValueQuery (structured input, returns 1+ entity types via @UnionValue)

Visual intelligence / image search?
  → IntentValueQuery + SemanticContentDescriptor
Siri がコンテンツを見つけられるようにするにはどうすればよいですか?
Content is local and indexable?
  → IndexedEntity + indexAppEntities (semantic index) - the primary path
  → add IndexedEntityQuery for reindexing support (iOS 27+)

Too large / server-side / too volatile to index?
  → IntentValueQuery (structured search input)

User wants to search inside your own UI?
  → @AppIntent(schema: .system.searchInApp) + ShowInAppSearchResultsIntent

Content nobody has found or used yet, but relevant right now?
  → RelevantEntities.updateEntities(_:for:) (iOS 27+)

Teach the system how people use the app (patterns)?
  → IntentDonationManager (donate UI interactions)
エンティティのフィールドにはどのプロパティラッパーを使えばよいですか?
Stored on the entity struct, should appear in Shortcuts/Find/summary?
  → @Property

Derived from an underlying model object (cheap to compute)?
  → @ComputedProperty (preferred over @Property for wrappers around models)

Derived AND should be indexed in Spotlight?
  → @ComputedProperty(indexingKey: \.keyName)

Expensive to compute (network, ML inference, heavy query)?
  → @DeferredProperty (async getter, only runs when system asks)

Internal to the entity, not shown anywhere?
  → plain stored property (no wrapper)

コア指示

  • App Intents の最小ターゲットは iOS 16+/macOS 13+ です。IndexedEntity、OpenIntent、フォーカスフィルター、コントロールウィジェットには iOS 16+ が必要です。@AssistantEntity/@AssistantIntent スキーマには iOS 18.2+ が必要で、アンカー付き相対日付スタイルや多くのアシスタントスキーマには iOS 18.4+ が必要です。27 リリース(WWDC 2026、iOS 27/macOS 27)では、LongRunningIntent、EntityCollection、SyncableEntity、RelevantEntities、IndexedEntityQuery、OwnershipProvidingEntity、allowedExecutionTargets、AppIntentsTesting フレームワーク、ネイティブの Duration/PersonNameComponents パラメーターが追加されます。CancellableIntent と IntentValueRepresentation には iOS 26.4+ が必要です。supportedModes には iOS 26+ が必要です。Apple は WWDC 2026 の世代を「the 27 releases」と呼んでいます。「iOS 19」ではなく、この呼称を使ってください。
  • SwiftData の @Model クラスや、その他の参照型データモデルを AppEntity に準拠させることは絶対に避けてください。AppEntity には Sendable が必要ですが、@Model クラスは sendable ではありません。公開するフィールドを反映した別の struct エンティティを作成してください。
  • ModelContext をアクター境界の外へ渡すことは絶対に避けてください。ModelContext は sendable ではありません。sendable である ModelContainer を渡し、必要とするアクター内でローカルコンテキストを作成してください。
  • 型を記述するだけでインテントを Siri/Spotlight に公開することは絶対に避けてください。必ず AppShortcutsProvider を通じて登録してください。ここに登録されていない型は、ショートカット、Siri の提案、アクションボタンの選択画面に表示されません。
  • \(.applicationName) を補間せずに Siri の起動フレーズを記述することは絶対に避けてください。アプリ名を含まないフレーズは他のアプリのコマンドと衝突するため、App Intents マクロはコンパイル時にそのようなフレーズを拒否します。
  • インテント内から SwiftUI の @Query にアクセスすることは絶対に避けてください。@Query が機能するのは View 内だけです。代わりに ModelContext を通じて単発の FetchDescriptor を実行するか、中央のデータコントローラーを経由してください。
  • perform() 内でサービス、データストア、認証マネージャーをインスタンス化することは絶対に避けてください。@Dependency を通じて注入し、App.init() で一度だけ AppDependencyManager.shared.add(dependency:) を使って登録してください。
  • ローカライズされたインテントのダイアログに String(format:) や手動の文字列連結を使うことは絶対に避けてください。LocalizedStringResource を使い、複数形には AttributedString 内で Foundation の文法一致マークダウン(^[\(count) item](inflect: true))を使ってください。
  • アプリのストア/ナビゲーションがまだ存在しない状態(コールド起動、スプラッシュ画面、ルートビューでストアを構築する場合)でもインテントが実行される可能性がある場合は、UI が接続されるまでアクションをキューに入れるメインアクタールーターを経由し、Spotlight の CSSearchableItemActionType ユーザーアクティビティも同じアクションに送ってください。references/open-and-snippet-intents.md を参照してください。
  • 「この項目を開いて」といったアクションには OpenIntent を優先してください。単独で完結する一度きりの要約には AppIntent & ShowsSnippetView を使ってください。スニペットに Button(intent:) が含まれ、ボタンの実行後に再描画が必要な場合は、AppIntent & ShowsSnippetIntent と対応する SnippetIntent を使ってください。
  • ウィジェットボタン、スニペットボタン、その他のインテントを裏で支えるヘルパーインテントには、必ず static let isDiscoverable: Bool = false を設定してください。設定しないと、ユーザーのショートカットライブラリに不要な項目が増えます。
  • インテントがウィジェットやコントロールウィジェットに表示されるデータを変更する場合は、perform() 内で戻る前に WidgetCenter.shared.reloadAllTimelines() を呼び出してください。
  • ウィジェットビュー内に Button(intent:) がある場合は、App Group の UserDefaults(suiteName:) または共有 ModelContainer の URL を使って、インテント(アプリのプロセスで実行)とウィジェットのタイムラインプロバイダー(拡張機能のプロセスで実行)の間で状態を共有してください。UserDefaults.standard やメモリー内の @Dependency 状態は絶対に使わないでください。
  • ショートカットフレーズのキーパスにあるエンティティデータが変化した場合(作成、名前変更、削除)、YourShortcutsProvider.updateAppShortcutParameters() を呼び出して、キャッシュされた候補リストを無効化してください。
  • エンティティの全件数が少なく、読み込みも低コストな場合は EnumerableEntityQuery を優先してください。データセットが大きい場合や検索可能にする場合は、EntityQuery と EntityStringQuery を実装してください。システム生成の検索インテントを利用するには、EntityPropertyQuery を追加してください。すべてのクエリーで entities(for identifiers:) の実装が必須です。これがないと、パラメーターの解決に失敗します。
  • ユーザーがフィルター、並べ替え、パラメーター概要での参照に使う可能性があるエンティティフィールドには、保存プロパティなら @Property、派生プロパティなら @ComputedProperty を付けてください。通常の保存プロパティは App Intents フレームワークから認識されません。
  • オンザフライで計算される戻り値(要約、集計)には TransientAppEntity を使ってください。偽の ID を付けて AppEntity に無理に当てはめようとしないでください。
  • エンティティにユニバーサルリンク URL がすでにある場合は、URLRepresentableEntity に準拠させ、オープンインテントを URLRepresentableIntent に準拠させてください。そうすれば、perform() を実装せずにシステムが既存のリンクハンドラー経由で開きます。
  • 画面上に表示され、Siri が内容を理解できるようにしたいエンティティには、ビューの .userActivity(_:element:) とエンティティの Transferable 準拠を組み合わせてください。識別情報だけでは不十分です。Siri が認識するには、エクスポート可能なコンテンツが必要です。
  • SnippetIntent.perform() は、ユーザーの操作ごとに複数回(最初の表示、各ボタンのタップ後、外観の変更時、reload() 時)呼び出されます。純粋な処理を保ち、状態を読み取り、ビューを組み立てて返してください。スニペットインテントの perform() 内でアプリの状態を変更したり、時間のかかる処理を開始したりすることは絶対に避けてください。
  • 厳格な上限を守ってください。1 アプリあたりの AppShortcut は 10 個、トリガーフレーズは合計 1000 個(パラメーター展開を含む)です。各ショートカットの配列の最初のフレーズがメインフレーズです。これはショートカットのホームタイルと、Siri が「X で何ができますか?」と尋ねられたときの回答に表示されます。
  • 各 App Shortcut には、パラメーター化されていないフレーズを少なくとも 1 つ含めて、初回起動前から見つけられるようにしてください。アプリが一度実行されてパラメーターキャッシュにデータが入るまで、パラメーター化されたフレーズは Spotlight に表示されません。
  • 実行時の状態に応じてフォアグラウンド化する新しいコードでは、ForegroundContinuableIntent/needsToContinueInForegroundError よりも supportedModes と continueInForeground(iOS 26+)を優先してください。新しい形式では、1 つのインテントで実行時の状態に応じてバックグラウンドまたはフォアグラウンドで実行される可能性があることを宣言できます。
  • スニペットビューの高さは 340 ポイントまでです。それを超えると、スクロールによってひと目で確認できるオーバーレイの仕組みが損なわれます。詳細なコンテンツにはアプリ本体へのリンクを用意し、読み取り距離でも読みやすいように、スニペットのテキストはシステムのデフォルトより大きくしてください。
  • Apple Intelligence の「Use Model」アクションから入力される可能性があるテキストパラメーターは、String ではなく AttributedString として宣言し、リッチな書式(太字、斜体、リスト、表)を損失なく保持してください。
  • インテントの実行時には、UI が表示されない場合でもアプリの App 構造体のイニシャライザーが実行されます。インテントに必要なセットアップ(ModelContainer の作成、AppDependencyManager.shared.add(...)、ログの配線)は、.task や .onAppear などのビュー修飾子内ではなく、init() 内で行ってください。
  • LocalizedStringResource は、App Intents のあらゆる場所(タイトル、ダイアログ、パラメーターのプロンプト)で使われる標準の文字列型です。SwiftUI と文字列カタログを共有するため、すぐにローカライズできます。
  • 文法一致(inflect: true)は、英語、フランス語、ドイツ語、イタリア語、スペイン語、ポルトガル語(両方の変種)で機能します。それ以外のロケールでは、変更前の形式が使われます。
  • システムの画面から起動されたインテントの実行時間は約 30 秒です(macOS には厳格な上限はありません)。アップロード、同期、大容量ファイルの操作、オンデバイス推論には LongRunningIntent に準拠し、performBackgroundTask { ... } 内で処理を実行してください。また、進捗を定期的に報告してください。報告が止まると、システムが実行時の拡張機能を終了することがあります。キャンセル理由に応じて後処理するには、CancellableIntent と組み合わせてください。制限を回避するために切り離された Task を使うことは避けてください。管理されていないタスクは拡張機能の対象外です。
  • perform() で主に ID が必要な、多数のエンティティを含む可能性のあるパラメーターには、[Entity] ではなく EntityCollection<Entity> を使ってください。パラメーター処理中にエンティティ全体を解決する処理を省略できます。オブジェクト全体が必要なときだけ resolvedEntities() を呼び出してください。
  • スキーマベースの更新インテントでは、$parameter.valueState(.set(value)/.set(nil)/.unset)を使って「変更しない」と「クリアする」を区別し、単純な nil チェックは使わないでください。そうしないと、音声コマンドでフィールドをクリアできません。
  • デバイスをまたぐ会話で Siri がエンティティを参照する可能性がある場合は、エンティティを SyncableEntity に準拠させてください。ID がすでにどこでも一貫している(サーバー UUID、CloudKit レコード ID)場合は、プロトコルに準拠させるだけで構いません。それ以外の場合は、ローカル ID と安定した ID を SyncableEntityIdentifier で組み合わせてください。
  • 共有可能なエンティティは OwnershipProvidingEntity に準拠させ、所有権を表す ownership(.shared/.public)を最新の状態に保ってください。そうすることで、ユーザーが共有または公開したコンテンツに対するアクションを Siri が確認できます。デフォルトでは、Siri はエンティティを非公開とみなし、確認を省略することがあります。
  • 他のアプリが理解できる構造化型(座標、連絡先、名前)を渡すには、エンティティの transferRepresentation に ValueRepresentation ビルダーを使って IntentValueRepresentation を追加してください。FileRepresentation/DataRepresentation が扱うのはファイル形式だけです。エンティティにシステム型がすでに保存されている場合は、キーパス形式(ValueRepresentation(exporting: \.place))を使ってください。
  • 画面上の内容を認識させる場合は、形状に応じてアノテーションを選んでください。主要項目が 1 つなら .userActivity、複数のうちの 1 つなら .appEntityIdentifier(_:)、複数ある場合に遅延読み込みするなら List/コレクションで .appEntityIdentifier(forSelectionType:)、カスタムの Canvas/CALayer 描画なら .appEntityUIElements(_:) を使います。通知、再生中画面、AlarmKit でアノテーションを使うには、実際の AppEntity が必要です。TransientAppEntity には永続 ID がないため、これらの場面では使えません。データベース全体を取得せずに Siri が画面上のエンティティを解決できるよう、displayRepresentations クエリーメソッドを追加してください。
  • UI 操作は IntentDonationManager を使って提供してください(Siri/ショートカットの実行はシステムがすでに提供します)。アクション完了後に提供し、過剰に提供しないでください(システムが無視するようになります)。古くなった提供内容は削除してください。
  • 統合対象(インテント、クエリー、spotlightQuery()、viewAnnotations())のテストには、AppIntentsTesting フレームワーク(プロセス外、XCUITest バンドル内)を使ってください。テスト専用インテント(isDiscoverable = false と #if DEBUG)を使ってデータを準備し、内部状態にアクセスしてください。純粋なロジックについては、perform() を直接テストする構造体テストも維持してください。

出力形式

ユーザーがレビューを依頼した場合は、ファイルごとに指摘事項を整理します。各問題については、次の内容を記載します。

  1. ファイル名と該当する行番号を示します。
  2. 置き換えるべきアンチパターンの名前を挙げます。
  3. 修正前と修正後のコードを簡潔に示します。

問題のないファイルは省略します。最後に、優先度の高い順に、まず行うべき変更をまとめます。

ユーザーが intent code の作成または修正を依頼した場合は、指摘事項のレポートを返すのではなく、直接変更を加えます。

出力例:

RecentItemsIntent.swift

18 行目:SwiftData の @Model は AppEntity に準拠できません(Sendable ではないため)。

// Before
extension Article: AppEntity { ... }

// After
struct ArticleEntity: AppEntity {
    var id: UUID
    var title: String
    static let typeDisplayRepresentation: TypeDisplayRepresentation = "Article"
    static let defaultQuery = ArticleEntityQuery()
    var displayRepresentation: DisplayRepresentation {
        DisplayRepresentation(title: "\(title)")
    }
}

42 行目:Siri のフレーズに \(.applicationName) がありません。ビルドに失敗します。

// Before
AppShortcut(intent: OpenArticleIntent(), phrases: ["Open an article"], ...)

// After
AppShortcut(intent: OpenArticleIntent(), phrases: ["Open an article in \(.applicationName)"], ...)
まとめ
  1. Sendability(高): AppEntity としての Article は Swift 6 でコンパイルに失敗します。シャドウ構造体を作成してください。
  2. Siri のフレーズ(高): すべてのフレーズで \(.applicationName) が必要です。

例は以上です。

参考資料

  • references/fundamentals.md - AppIntent プロトコル、perform()、戻り値の型(IntentResult、ProvidesDialog、ReturnsValue、ShowsSnippetView、OpensIntent)、intent ダイアログ、文法上の一致。
  • references/parameters.md - @Parameter、プリミティブ型とエンティティ型のパラメーター、@AppEnum、ダイアログのオプション、パラメーターのプロンプト。
  • references/entities.md - AppEntity、IndexedEntity、シャドウ構造体パターン、表示表現、エンティティクエリ(EnumerableEntityQuery、EntityQuery、EntityStringQuery、UniqueIDEntityQuery)。
  • references/shortcuts-and-siri.md - AppShortcutsProvider、フレーズ(\(.applicationName) のルール)、shortcutTileColor、SiriTipView、ShortcutsLink、パラメーターの表示。
  • references/open-and-snippet-intents.md - OpenIntent、スニペットビュー(ShowsSnippetView)、データコントローラーを介したナビゲーション、用途に応じた使い分け。
  • references/dependencies.md - @Dependency、AppDependencyManager、データコントローラーパターン、ModelContainer と ModelContext の Sendability、メインアクターとローカルコンテキストのトレードオフ。
  • references/spotlight.md - IndexedEntity、IndexedEntityQuery(再インデックス)、CSSearchableIndex、attributeSet、セマンティックインデックス、起動時と変更時のインデックス作成、デバウンスによる再インデックス。
  • references/assistant-schemas.md - @AssistantEntity、@AssistantIntent、スキーマの採用、複数スキーマの要件、.system.searchInApp、Visual Intelligence(iPad/macOS、システムのストア)、Xcode のコードスニペット、注意事項。
  • references/siri-intelligence.md - Siri/Apple Intelligence の統合モデル:コンテンツの検索(セマンティックインデックス/構造化検索/アプリ内検索)、カスタム応答、インタラクションの提供、確認と OwnershipProvidingEntity、検証フロー。
  • references/onscreen-awareness.md - 画面上の注釈 API 4 種類、コンテンツの転送(IntentValueRepresentation、解決とインポート)、displayRepresentations の高速パス、Notifications/Now Playing/AlarmKit でのエンティティ注釈。
  • references/long-running-and-execution.md - 30 秒の実行時間、LongRunningIntent と performBackgroundTask、CancellableIntent、バックグラウンド GPU、allowedExecutionTargets。
  • references/testing-intents.md - AppIntentsTesting フレームワーク(プロセス外の統合テスト)、perform() の直接的なユニットテスト、AppDependencyManager を使用した @Dependency のモック、テスト専用 intent、ユニットテストではできないこと。
  • references/anti-patterns.md - LLM が App Intents コードの生成時によく犯す間違い。

コメント