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 …
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.
Stronger alternatives
This repository is archived — consider an actively maintained alternative.
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
Claude CodeNot declared
CursorNot declared
CodexNot declared
GitHub CopilotNot declared
WindsurfNot declared
Gemini CLINot declared
ClineNot declared
OpenCodeNot declared
Repository health
Stars12
LicenseLICENSE
Default branchmain
Open issues0
Status
Archived
Skill metadata
Parsed from SKILL.md frontmatter.
Version1.0
LicenseMIT
More metadata
author
rudrankriyam
version
1.0
Package contents
Files included with this skill beyond the listing page.
skill mdSKILL.md7,960 B
docsSUMMARY.md539 B
History
First seen on skills.sh
First recorded snapshot · 8 installs
SKILL.md
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.
Implement func perform() async throws -> some IntentResult
Add @Parameter for any inputs
Add a ParameterSummary for all required parameters
Set supportedModes if the intent should foreground the app
Minimum viable App Entity
Create a struct conforming to AppEntity
Add a persistent, unique id property
Add @Property or @ComputedProperty for each exposed property
Provide typeDisplayRepresentation and displayRepresentation
Create an EntityQuery with entities(for:) method
Set static let defaultQuery on the entity
Register data dependencies with AppDependencyManager
Minimum viable App Shortcut
Create an AppShortcutsProvider with static var appShortcuts
Create AppShortcut instances with intent, phrases, shortTitle, systemImageName
Every phrase must include \(.applicationName)
At most one @Parameter per phrase
Call updateAppShortcutParameters() when suggested entities change
Making an entity Spotlight-searchable
Conform entity to IndexedEntity
Add indexingKey parameter to @Property attributes
Donate entities using the framework's indexing APIs
Implement an OpenIntent so tapping results navigates to the entity
Adding interactive snippets (iOS 26+)
Create a struct conforming to SnippetIntent
Mark all view-driving variables as @Parameter
Return .result(view:) from perform()
Use Button(intent:) or Toggle(intent:) in the snippet view
Return ShowsSnippetIntent from the parent intent
Do NOT mutate app state in the snippet intent's perform method
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()).