Skills app-intents-code-review
Reviews App Intents code for intent structure, entities, shortcuts, and parameters. Use when reviewing code with import AppIntents, @AppIntent, AppEntity, AppShortcutsProvider, or @Parameter.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/anderskev/app-intents-code-review" ~/.claude/skills/clawdbot-skills-app-intents-code-review && rm -rf "$T"
manifest:
skills/anderskev/app-intents-code-review/SKILL.mdsource content
App Intents Code Review
Quick Reference
| Issue Type | Reference |
|---|---|
| AppIntent protocol, perform(), return types | references/intent-structure.md |
| AppEntity, EntityQuery, identifiers | references/entities.md |
| AppShortcutsProvider, phrases, discovery | references/shortcuts.md |
| @Parameter, validation, dynamic options | references/parameters.md |
Review Checklist
-
marked withperform()
if accessing UI/main thread resources@MainActor -
completes within 30-second timeout (no heavy downloads/processing)perform() - Custom errors conform to
CustomLocalizedStringResourceConvertible -
handles missing identifiers gracefullyEntityQuery.entities(for:) -
used if Siri voice input needed (not plainEntityStringQuery
)EntityQuery -
returns reasonable defaults for disambiguationsuggestedEntities() -
phrases includeAppShortcut
parameter.applicationName - Non-optional
has sensible defaults or uses@ParameterrequestValue() -
not used on iOS 16 targets (crashes)@IntentParameterDependency - Phrases localized in
, notAppShortcuts.stringsLocalizable.strings - App Intents defined in app bundle, not Swift Package (pre-iOS 17)
-
for internal/widget-only intentsisDiscoverable = false
When to Load References
- AppIntent protocol implementation -> intent-structure.md
- Entity queries, identifiers, Spotlight -> entities.md
- App Shortcuts, phrases, discovery -> shortcuts.md
- Parameter validation, dynamic options -> parameters.md
Review Questions
- Does
handle timeout limits for long-running operations?perform() - Are entity queries self-contained (no
injection in Siri context)?@Dependency - Do phrases read naturally and include the app name?
- Are SwiftData models passed by
, not directly?persistentModelID - Would migrating from SiriKit break existing user shortcuts?