App Intents — Foundations Skill
Purpose
Route App Intents implementation tasks to the minimum required App
Intents Knowledge Contracts. v1 scope is authoring an AppIntent itself
-- its declaration, parameters, entities, Siri Shortcuts surface, and
result -- not legacy SiriKit, not custom Siri vocabulary beyond basic
phrase rules, not Interactive Snippets, not Spotlight indexing of
entities, and not LiveActivityIntent specifics.
Routing
Load only the contracts relevant to the task. All paths relative to knowledge/app-intents/.
- Conforming to
AppIntent; declaringtitle/description/perform(); declaring inputs with@Parameter/IntentParameter; restricting a parameter with anAppEnum; or implementingparameterSummary/ParameterSummary-> app-intent-declaration-and-parameters.md - Conforming to
AppEntity; providing anEntityQuery/EntityStringQueryand assigningdefaultQuery; implementingdisplayRepresentation; or reasoning about disambiguation when a query returns multiple matches -> app-entities-and-queries.md - Conforming to
AppShortcutsProvider; building anAppShortcut(shortTitle,systemImageName); authoring Siri phrases (\(.applicationName)); or callingupdateAppShortcutParameters()-> app-shortcuts-and-siri-phrases.md - Returning
IntentResultfromperform(); composingReturnsValue/ProvidesDialog/OpensIntent; or authoring theperform()body of an intent destined for a widget'sButton(intent:)/Toggle(_:isOn:intent:)-> intent-results-and-widget-hookup.md
Never load more than the contracts relevant to the specific question.
Stop Conditions
Stop and report if the requested topic has no matching Knowledge
Contract in knowledge/app-intents/ — do not guess or fall back to
general knowledge. Legacy SiriKit donation-based intents (INIntent,
NSUserActivity donation) are out of scope entirely -- superseded by
App Intents, not planned as a separate domain; report that explicitly.
Custom Siri vocabulary/AppShortcutOptionsCollection beyond basic
phrase authoring, Interactive Snippets and other visual intent-response
UI beyond ProvidesDialog, Spotlight indexing of entities, and
LiveActivityIntent's specifics are deferred, not yet built (see
docs/architecture/domain-map.md). Wiring an already-authored AppIntent
into a widget's Button(intent:)/Toggle(_:isOn:intent:), or anything
inside a widget extension's TimelineProvider/Timeline, is owned by
the widgetkit domain (knowledge.widgetkit.widget-interactivity-and-deep-links)
-- this Skill only routes to authoring the intent itself: its
declaration, parameters, entities, Shortcuts surface, and result.