Skip to content

// One App Intent across interactive widgets, Control Center, Live Activities, Shortcuts, Spotlight, and Apple Intelligence.

App Intents Multi-Surface

skill --stat
  • last update

    Jun 24, 2026

  • license

    MITv1.0.0

  • format

    SKILL.md

quickstart.sh
3 steps
  1. Install

    // Downloads SKILL.md into ~/.claude/skills/app-intents-widgets-controls-siri/

    $ curl -fsSL --create-dirs -o ~/.claude/skills/app-intents-widgets-controls-siri/SKILL.md https://claudeskil.com/skills/app-intents-widgets-controls-siri/SKILL.md
  2. Invoke

    // Inside Claude Code, type the skill name as a slash command

    > /app-intents-widgets-controls-siri help me ship this
  3. Or just ask

    // Claude loads the skill by itself when a request matches its description

    > help me ship this
app-intents-widgets-controls-siri/
references
SKILL.md
readonly
name:
App Intents Multi-Surface
slug:
app-intents-widgets-controls-siri
version:
v1.0.0
license:
MIT
author:
@chiragthummar16
categories:
tags:
#app-intents#ios-26#widgetkit#control-center#siri-shortcuts
description:

One App Intent across interactive widgets, Control Center, Live Activities, Shortcuts, Spotlight, and Apple Intelligence.

features.md
4 capabilities

// What you can do with it

  • Interactive widgets — Button(intent:) / Toggle(isOn:intent:) inside your WidgetKit view, with the intent marked so it runs in-process.
  • Control Center — a ControlWidget with ControlWidgetButton/ControlWidgetToggle bound to the same intent.
  • Shortcuts & Spotlight — AppShortcutsProvider with AppShortcut entries and natural-language phrases.
  • Apple Intelligence / Siri — assigns an AppIntent schema where applicable so the system can invoke it.

README.md

app-intents-widgets-controls-siri/README.md
6 sections

App Intents Multi-Surface

Build one AppIntent and surface it everywhere iOS 26 exposes intents: interactive widgets, Control Center, Live Activities, Shortcuts, Spotlight, and Apple Intelligence. This skill generates the Swift scaffolding and wiring so a single action — "Start Timer", "Log Water", "Toggle Focus" — works identically from a Home Screen widget button, a Control Center toggle, and a Siri phrase, without duplicating logic per surface. It's for iOS developers who already have an app target and want correct, idiomatic App Intents code instead of fighting compiler errors and surface-specific quirks.

When to use it

  • You have an action you want callable from more than one place (widget tap + Shortcuts + Spotlight).
  • You're adding an interactive widget or Control Center control and need the intent behind a Button/Toggle.
  • You want typed inputs (a picker of user data) backed by AppEntity/EntityQuery instead of free-text parameters.
  • You want a Live Activity that updates from a button without launching the app.

What it does

The skill writes an AppIntent conforming type with @Parameter properties, a static var title, and a perform() that returns an IntentResult. For data-backed inputs it generates an AppEntity plus an EntityQuery (so the parameter resolves to real records), and AppEnum for fixed choice sets. Dialog and inline UI come from conforming perform()'s return to ProvidesDialog and ShowsSnippetView via .result(dialog:view:).

Surface wiring it produces:

  • Interactive widgets — Button(intent:) / Toggle(isOn:intent:) inside your WidgetKit view, with the intent marked so it runs in-process.
  • Control Center — a ControlWidget with ControlWidgetButton/ControlWidgetToggle bound to the same intent.
  • Shortcuts & Spotlight — AppShortcutsProvider with AppShortcut entries and natural-language phrases.
  • Apple Intelligence / Siri — assigns an AppIntent schema where applicable so the system can invoke it.

Usage example

bash
curl -fsSL --create-dirs -o ~/.claude/skills/app-intents-widgets-controls-siri/SKILL.md https://claudeskil.com/skills/app-intents-widgets-controls-siri/SKILL.md
swift
struct LogWaterIntent: AppIntent {
    static var title: LocalizedStringResource = "Log Water"
    @Parameter(title: "Amount") var amount: WaterAmount   // AppEnum

    func perform() async throws -> some IntentResult & ProvidesDialog {
        try await Store.shared.log(amount)
        return .result(dialog: "Logged \(amount.rawValue) ml")
    }
}

The skill then drops a matching Button(intent: LogWaterIntent(amount: .glass)) into your widget and a ControlWidgetButton for Control Center.

Tips & gotchas

  • perform() runs in a short-lived extension process; do persistence through an App Group container, not in-memory singletons, or the app won't see the change.
  • Add openAppWhenRun = true only when you genuinely need foreground — interactive widgets are meant to stay in-process.
  • EntityQuery.suggestedEntities() is what powers Shortcuts pickers; if it's empty your parameter looks broken in the Shortcuts editor.
  • After editing AppShortcutsProvider phrases, rebuild and relaunch — Spotlight/Siri indexing is cached and won't reflect changes immediately.

FAQ

Can the same intent power both a widget button and a Siri phrase? Yes — that's the point. One AppIntent type, referenced from Button(intent:), a ControlWidget, and an AppShortcut.

Do I need iOS 26? Control Center controls require iOS 18+, and the Apple Intelligence schema wiring targets iOS 26. Interactive widgets and Shortcuts work on iOS 17/16 respectively.

Where does the inline snippet UI come from? Conform perform()'s result to ShowsSnippetView and return .result(view:); the skill scaffolds a SwiftUI snippet view for you.

$ cat reviews/

Reviews

// No reviews yet. Be the first.
Loading review form…

$ ls related/

explore all →