Build one app action
Add your app to new places without rewriting how it works.
Agree on what one action should do, then create small changes for Siri, Shortcuts, or AI tools. Every change stays tied to the original code, permissions, version, and test results.
Agree before generating
Decide what the action should do before changing code.
Build starts after Audit finds a useful app task. A person decides what the action does, which code owns it, what it may change, and where it should appear.
Only then does Capability Studio suggest code. The result is a small patch for review—not a second copy of the feature and not a promise that it is ready to ship.
One shared definition
Write down the action from start to finish.
A stable ID
A name and version that stay the same when Swift code or screens change.
Agreed details
The inputs, result, errors, permissions, confirmation, and limits for the action.
The working code
A link to the service or store that already performs the task and saves the data.
Where it appears
A clear choice about whether the action belongs in Siri, Shortcuts, AI tools, or nowhere yet.
A version for each place
Keep the same action, even when each platform asks for different code.
Each connection gets only what that platform needs: names, inputs, descriptions, safeguards, and tests. The app action stays the shared source; the platform-specific code is just one way to expose it.
Calls the app service that already performs the task
Suggested phrases and places where people can find the action
Explains the action but does not claim it can run yet
Needs a tested way to run the action first
One action, many connections
Keep the real work in your app.
Your app screen, App Intent, and every approved connection should call the same service or store. Capability Studio keeps the action name, permissions, connections, and test results—not your business rules, user data, passwords, or live system.
Review every change
See exactly what will change—and what will stay alone.
Review the action details, code patch, possible breakage, and test plan before saving a new version.
+ struct TrackMigraineIntent: AppIntent {
+ static let title = “Track a migraine”
+ @Parameter var severity: Severity
+ @Parameter var symptoms: [Symptom]
+ func perform() async throws -> some IntentResult {
+ let session = try await migraineStore.track(…)
+ return .result(value: session)
+ }
+ }One action from start to finish
Keep the same action through every step.
Audit finds the task. Build defines it. Preview shows where it should appear. Deploy tests the exact version. Measure records what happened after it ran.
Start with one reviewed user task
Add one app action without creating another copy of the feature.
Bring one important app task. Leave with agreed action details, a small code plan, the exact proposed changes, and a clear test plan.