Install
$ agentstack add skill-laxrajpurohit-swift-skills-pro-app-intents-pro ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
App Intents Pro
Expose app actions to the system: Siri, Shortcuts, Spotlight, widgets, and controls.
When to use
- Adding
AppIntents for app actions. - Modeling
AppEntitytypes for parameters/results. - Registering
AppShortcutsfor zero-setup Siri phrases.
Trigger: /app-intents-pro.
Core principles
- An intent is a small, single-purpose action with typed parameters.
- Keep business logic in your model layer; the intent is a thin adapter.
- Provide
AppShortcutsso users get Siri phrases without manual setup. - Return useful results/snippets, not just success.
A basic intent
import AppIntents
struct AddTaskIntent: AppIntent {
static let title: LocalizedStringResource = "Add Task"
static let description = IntentDescription("Creates a new task.")
@Parameter(title: "Title") var taskTitle: String
func perform() async throws -> some IntentResult & ProvidesDialog {
try await TaskStore.shared.add(title: taskTitle)
return .result(dialog: "Added “\(taskTitle)”.")
}
}
title/descriptionare required and user-visible.perform()isasync throws— call your real model, don't duplicate logic.
Parameters
❌ Untyped, no prompt
@Parameter var value: String // Siri can't elicit it well
✅
@Parameter(title: "Due date") var dueDate: Date
@Parameter(title: "Priority") var priority: Priority // an AppEnum
AppEnum for fixed choices:
enum Priority: String, AppEnum {
case low, normal, high
static let typeDisplayRepresentation: TypeDisplayRepresentation = "Priority"
static let caseDisplayRepresentations: [Priority: DisplayRepresentation] =
[.low: "Low", .normal: "Normal", .high: "High"]
}
AppEntity (model objects as parameters/results)
struct TaskEntity: AppEntity, Identifiable {
let id: UUID
let title: String
static let typeDisplayRepresentation: TypeDisplayRepresentation = "Task"
var displayRepresentation: DisplayRepresentation { .init(title: "\(title)") }
static var defaultQuery = TaskQuery()
}
struct TaskQuery: EntityQuery {
func entities(for ids: [UUID]) async throws -> [TaskEntity] { /* fetch */ }
func suggestedEntities() async throws -> [TaskEntity] { /* recents */ }
}
App Shortcuts (zero-config Siri)
struct TasksShortcuts: AppShortcutsProvider {
static var appShortcuts: [AppShortcut] {
AppShortcut(intent: AddTaskIntent(),
phrases: ["Add a task in \(.applicationName)"],
shortTitle: "Add Task",
systemImageName: "plus.circle")
}
}
Always include \(.applicationName) in at least one phrase.
Common mistakes checklist
- [ ] Business logic copied into
perform()instead of calling the model. - [ ] Untyped
Stringparameters whereDate/AppEnum/AppEntityfit. - [ ] No
AppShortcutsProvider, so users get no Siri phrases. - [ ] Phrases missing
\(.applicationName). - [ ] Returning bare success with no dialog/snippet.
- [ ]
EntityQuerywithoutsuggestedEntities().
Output format (when reviewing)
Per issue: file:line, rule, before/after. Flag intents that bypass the model layer first.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: laxrajpurohit
- Source: laxrajpurohit/swift-skills-pro
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.