App Intents Expert Skill
Expert guidance for the App Intents framework on iOS 26+. This skill covers building intents, entities, queries, App Shortcuts, interactive snippets, and integrating with Siri, Spotlight, Apple Intelligence, and Visual Intelligence.
When to use this skill
Use this skill when the developer is:
- Creating or modifying any
AppIntent, AppEntity, AppEnum, or EntityQuery
- Adding Siri, Shortcuts, Spotlight, or Apple Intelligence support to an app
- Building
AppShortcutsProvider or App Shortcuts
- Implementing interactive snippets with
SnippetIntent
- Indexing entities for Spotlight with
IndexedEntity
- Integrating with Visual Intelligence or image search
- Navigating with
TargetContentProvidingIntent and onAppIntentExecution
- Migrating from SiriKit (
INIntent) to App Intents
- Debugging App Intents build errors or runtime issues
Task-based routing
Based on what the developer needs, read the relevant reference files.
"I want to create my first App Intent"
- Read references/intent-fundamentals.md
- Then references/shortcuts-provider.md for discoverability
"I want my app's content searchable in Siri and Spotlight"
- Read references/entities-and-queries.md
- Then references/spotlight-indexing.md
- Then references/siri-integration.md
"I want to integrate with Apple Intelligence and the new Siri"
- Read references/apple-intelligence.md
- Then references/siri-integration.md
- Then references/intent-fundamentals.md if new to the framework
"I want to build interactive snippets"
- Read references/interactive-snippets.md
- Then references/intent-fundamentals.md if not familiar with intents
"I want to add Shortcuts and Siri phrases to my app"
- Read references/shortcuts-provider.md
- Then references/siri-integration.md
"I want to structure my app around App Intents"
- Read references/intent-driven-architecture.md
- Then references/entities-and-queries.md
- Then references/intent-fundamentals.md
"I want to support Visual Intelligence / image search"
- Read references/apple-intelligence.md — image search section
- Then references/entities-and-queries.md
"I'm migrating from SiriKit"
- Read references/migration-from-sirikit.md
- Then references/intent-fundamentals.md
"I need to test my App Intents"
- Read references/testing-intents.md
"I'm hitting build errors or runtime issues"
- Read references/common-pitfalls.md
Quick-reference checklists
Minimum viable App Intent
Minimum viable App Entity
Minimum viable App Shortcut
Making an entity Spotlight-searchable
Adding interactive snippets (iOS 26+)
Key decision tree
Which protocol should my intent conform to?
Is it a basic action?
→ AppIntent
Does it open your app to show content?
→ OpenIntent + TargetContentProvidingIntent
Does it render an interactive view?
→ SnippetIntent
Should it support undo?
→ UndoableIntent
Does it match an Apple Intelligence domain?
→ Use @AppIntent macro with the appropriate schema
Which entity type should I use?
Is the set of values fixed and known at compile time?
→ AppEnum
Is the set of values dynamic?
→ AppEntity
Do I need Spotlight indexing?
→ AppEntity + IndexedEntity
Do I need image search / Visual Intelligence?
→ AppEntity + Transferable + OpenIntent
Which query type should I use?
Can all entities fit in memory?
→ EnumerableEntityQuery
Do I need text-based search?
→ EntityStringQuery
Do I need filtering by properties?
→ EntityPropertyQuery
Do I only need lookup by ID?
→ EntityQuery (base protocol)
Should a property be @Property, @ComputedProperty, or @DeferredProperty?
Is the value stored on the entity struct?
→ @Property
Can the value be derived from another source (UserDefaults, model)?
→ @ComputedProperty (preferred — lower overhead)
Is the value expensive to compute (network call, heavy I/O)?
→ @DeferredProperty (async getter, only called when system requests it)
Framework architecture notes
- App Intents uses build-time metadata extraction. Your Swift source code is read at compile time to generate an App Intents representation stored inside your app bundle. This is why certain values (titles, display representations) must be compile-time constants.
- The system reads this metadata without running your app. After installation, intents, entities, and shortcuts are available immediately.
- Each target in your app is processed independently. When sharing App Intent types across targets, use
AppIntentsPackage to register each target.
- App Intents can now live in Swift Packages and static libraries (new in iOS 26).
- Register dependencies with
AppDependencyManager.shared.add { } as early as possible in your app's lifecycle (typically in the App.init()).
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: app-intents-expert-skill3description: Expert App Intents guidance for building Siri, Shortcuts, Spotlight, Apple Intelligence, and interactive snippet integrations on iOS 26+. Use when implementing AppIntent, AppEntity, AppEnum, EntityQuery, AppShortcutsProvider, SnippetIntent, SiriTipView, IndexedEntity, or when making an app work with Siri, Shortcuts, Spotlight, Apple Intelligence, Visual Intelligence, Action Button, or Apple Pencil. Also use when asked about App Intents architecture, intent-driven development, or migrating from SiriKit. Use when this capability is needed.4---56# App Intents Expert Skill78Expert guidance for the App Intents framework on iOS 26+. This skill covers building intents, entities, queries, App Shortcuts, interactive snippets, and integrating with Siri, Spotlight, Apple Intelligence, and Visual Intelligence.910## When to use this skill1112Use this skill when the developer is:13- Creating or modifying any `AppIntent`, `AppEntity`, `AppEnum`, or `EntityQuery`14- Adding Siri, Shortcuts, Spotlight, or Apple Intelligence support to an app15- Building `AppShortcutsProvider` or App Shortcuts16- Implementing interactive snippets with `SnippetIntent`17- Indexing entities for Spotlight with `IndexedEntity`18- Integrating with Visual Intelligence or image search19- Navigating with `TargetContentProvidingIntent` and `onAppIntentExecution`20- Migrating from SiriKit (`INIntent`) to App Intents21- Debugging App Intents build errors or runtime issues2223## Task-based routing2425Based on what the developer needs, read the relevant reference files.2627### "I want to create my first App Intent"281. Read [references/intent-fundamentals.md](references/intent-fundamentals.md)292. Then [references/shortcuts-provider.md](references/shortcuts-provider.md) for discoverability3031### "I want my app's content searchable in Siri and Spotlight"321. Read [references/entities-and-queries.md](references/entities-and-queries.md)332. Then [references/spotlight-indexing.md](references/spotlight-indexing.md)343. Then [references/siri-integration.md](references/siri-integration.md)3536### "I want to integrate with Apple Intelligence and the new Siri"371. Read [references/apple-intelligence.md](references/apple-intelligence.md)382. Then [references/siri-integration.md](references/siri-integration.md)393. Then [references/intent-fundamentals.md](references/intent-fundamentals.md) if new to the framework4041### "I want to build interactive snippets"421. Read [references/interactive-snippets.md](references/interactive-snippets.md)432. Then [references/intent-fundamentals.md](references/intent-fundamentals.md) if not familiar with intents4445### "I want to add Shortcuts and Siri phrases to my app"461. Read [references/shortcuts-provider.md](references/shortcuts-provider.md)472. Then [references/siri-integration.md](references/siri-integration.md)4849### "I want to structure my app around App Intents"501. Read [references/intent-driven-architecture.md](references/intent-driven-architecture.md)512. Then [references/entities-and-queries.md](references/entities-and-queries.md)523. Then [references/intent-fundamentals.md](references/intent-fundamentals.md)5354### "I want to support Visual Intelligence / image search"551. Read [references/apple-intelligence.md](references/apple-intelligence.md) — image search section562. Then [references/entities-and-queries.md](references/entities-and-queries.md)5758### "I'm migrating from SiriKit"591. Read [references/migration-from-sirikit.md](references/migration-from-sirikit.md)602. Then [references/intent-fundamentals.md](references/intent-fundamentals.md)6162### "I need to test my App Intents"631. Read [references/testing-intents.md](references/testing-intents.md)6465### "I'm hitting build errors or runtime issues"661. Read [references/common-pitfalls.md](references/common-pitfalls.md)6768## Quick-reference checklists6970### Minimum viable App Intent71- [ ] Create a struct conforming to `AppIntent`72- [ ] Add a `static let title: LocalizedStringResource`73- [ ] Implement `func perform() async throws -> some IntentResult`74- [ ] Add `@Parameter` for any inputs75- [ ] Add a `ParameterSummary` for all required parameters76- [ ] Set `supportedModes` if the intent should foreground the app7778### Minimum viable App Entity79- [ ] Create a struct conforming to `AppEntity`80- [ ] Add a persistent, unique `id` property81- [ ] Add `@Property` or `@ComputedProperty` for each exposed property82- [ ] Provide `typeDisplayRepresentation` and `displayRepresentation`83- [ ] Create an `EntityQuery` with `entities(for:)` method84- [ ] Set `static let defaultQuery` on the entity85- [ ] Register data dependencies with `AppDependencyManager`8687### Minimum viable App Shortcut88- [ ] Create an `AppShortcutsProvider` with `static var appShortcuts`89- [ ] Create `AppShortcut` instances with intent, phrases, shortTitle, systemImageName90- [ ] Every phrase must include `\(.applicationName)`91- [ ] At most one `@Parameter` per phrase92- [ ] Call `updateAppShortcutParameters()` when suggested entities change9394### Making an entity Spotlight-searchable95- [ ] Conform entity to `IndexedEntity`96- [ ] Add `indexingKey` parameter to `@Property` attributes97- [ ] Donate entities using the framework's indexing APIs98- [ ] Implement an `OpenIntent` so tapping results navigates to the entity99100### Adding interactive snippets (iOS 26+)101- [ ] Create a struct conforming to `SnippetIntent`102- [ ] Mark all view-driving variables as `@Parameter`103- [ ] Return `.result(view:)` from `perform()`104- [ ] Use `Button(intent:)` or `Toggle(intent:)` in the snippet view105- [ ] Return `ShowsSnippetIntent` from the parent intent106- [ ] Do NOT mutate app state in the snippet intent's perform method107108## Key decision tree109110### Which protocol should my intent conform to?111112```113Is it a basic action?114 → AppIntent115116Does it open your app to show content?117 → OpenIntent + TargetContentProvidingIntent118119Does it render an interactive view?120 → SnippetIntent121122Should it support undo?123 → UndoableIntent124125Does it match an Apple Intelligence domain?126 → Use @AppIntent macro with the appropriate schema127```128129### Which entity type should I use?130131```132Is the set of values fixed and known at compile time?133 → AppEnum134135Is the set of values dynamic?136 → AppEntity137138Do I need Spotlight indexing?139 → AppEntity + IndexedEntity140141Do I need image search / Visual Intelligence?142 → AppEntity + Transferable + OpenIntent143```144145### Which query type should I use?146147```148Can all entities fit in memory?149 → EnumerableEntityQuery150151Do I need text-based search?152 → EntityStringQuery153154Do I need filtering by properties?155 → EntityPropertyQuery156157Do I only need lookup by ID?158 → EntityQuery (base protocol)159```160161### Should a property be @Property, @ComputedProperty, or @DeferredProperty?162163```164Is the value stored on the entity struct?165 → @Property166167Can the value be derived from another source (UserDefaults, model)?168 → @ComputedProperty (preferred — lower overhead)169170Is the value expensive to compute (network call, heavy I/O)?171 → @DeferredProperty (async getter, only called when system requests it)172```173174## Framework architecture notes175176- App Intents uses **build-time metadata extraction**. Your Swift source code is read at compile time to generate an App Intents representation stored inside your app bundle. This is why certain values (titles, display representations) must be compile-time constants.177- The system reads this metadata **without running your app**. After installation, intents, entities, and shortcuts are available immediately.178- Each target in your app is processed independently. When sharing App Intent types across targets, use `AppIntentsPackage` to register each target.179- App Intents can now live in **Swift Packages and static libraries** (new in iOS 26).180- Register dependencies with `AppDependencyManager.shared.add { }` as early as possible in your app's lifecycle (typically in the `App.init()`).181182---183> Converted and distributed by [TomeVault](https://tomevault.io/claim/rudrankriyam) — claim your Tome and manage your conversions.184<!-- tomevault:4.0:skill_md:2026-04-13 -->