| name | apple-intelligence |
| description | Apple Intelligence participation layer. Wire an app's actions and content into Siri, Spotlight, Writing Tools, Image Playground, and summaries via App Intents, entities, and schemas. Use before adding App Intents/schemas, Spotlight indexing, Writing Tools, or Image Playground; defer custom generative features and on-device model files to the sibling skills. |
Apple Intelligence
Overview
Apple Intelligence is the personal intelligence system behind built-in capabilities
across Apple platforms. It runs on-device on Apple silicon and in Private Cloud
Compute. Your app participates by teaching the system about its actions and
content so system features — Siri, Spotlight, Shortcuts, Writing Tools, Image
Playground, Visual Intelligence, Genmoji, and summaries — can use them.
The participation contract is the App Intents framework: an AppIntent wraps one
of your app's actions; an AppEntity represents the data those actions operate on.
Apple Intelligence uses donated intents/entities, your Spotlight index, and declared
schemas to find and act on your content — even when described vaguely.
Two sibling skills handle the custom-model side and are out of scope here:
foundation-models — the Foundation Models framework for custom generative
features (prompting, guided generation, tool calling, Private Cloud Compute).
core-ai — running your own deep-learning model files (.aimodel) on-device.
This skill covers only the built-in intelligence surfaces an app adopts.
Device eligibility and availability
Apple Intelligence requires Apple silicon (iPhone 15 Pro and later, iPad with A17 Pro
or M-series, Mac with M-series). It is opt-in via the Apple Intelligence toggle in
Settings. Before exposing intelligence features, branch on the system model's
availability rather than assuming it is on:
import FoundationModels
private var model = SystemLanguageModel.default
switch model.availability {
case .available:
case .unavailable(.deviceNotEligible):
case .unavailable(.appleIntelligenceNotEnabled):
case .unavailable(.modelNotReady):
case .unavailable(let other):
}
How an app participates: App Intents, entities, schemas
The single biggest lever. Make the system aware of your actions and data via the App
Intents framework:
- App intents — a custom type encapsulating one action. Ship in your app or an app
extension so the action runs even when the app isn't open. Each intent performs an
action in
perform(), returns a result/error, declares parameters, and provides a
localized title Siri and Shortcuts can display.
- App entities — lightweight versions of your data objects. Define them only for
the subset of data people see and might reference with Siri ("this photo", "this
album"). Real data objects stay the source of truth.
- App enums — enumerate fixed choices (e.g. repeat options) so the system can
resolve parameters.
- Donations — when someone performs an action in your UI, donate the matching
intent/entity. Donations give Apple Intelligence behavioral cues to predict and
disambiguate. Donate only direct UI interactions, not actions Siri or Shortcuts
initiated.
- Schemas (domains) — the predefined intent/entity shapes for common actions (mail,
messaging, files, etc.). Prefer building from a schema over a custom intent; schemas
are the contract Apple Intelligence uses to match everyday phrases.
Grounded minimal AppIntent shape:
struct OrderAlbum: AppIntent {
static var title: LocalizedStringResource { "Order Album" }
static var description = IntentDescription("Order a vinyl record album.")
@Parameter(title: "Album", description: "The name of the album to order.")
var albumName: String
@Dependency
private var albumManager: AlbumDataManager
func perform() async throws -> some IntentResult {
return .result()
}
static var parameterSummary: some ParameterSummary {
Summary("Order \(\.$albumName)")
}
}
For full intent/entity/schema implementation patterns, see the sibling
ios-app-intents skill.
App Shortcuts
An AppShortcut bundles an AppIntent with a title, image, preconfigured parameters,
and spoken phrases so it appears polished in Shortcuts and other system experiences.
The compiler generates system metadata, so shortcuts are available the moment someone
installs your app — no registration needed. Define them in a type adopting the
AppShortcutProvider protocol, alongside the intents they use. Surface them in-app
with tip views.
Apple Intelligence + Siri AI: the extra steps
Beyond a basic App Intents adoption, make content discoverable by Apple Intelligence
specifically:
- Index entities into Spotlight — Apple Intelligence uses Spotlight's semantic
search to find your content even when described vaguely. This is what makes "the
email from Mei about the Q3 plan" work.
- Choose transferable types — conform entities/values to transferable types so the
system can move content across apps for cross-app Siri tasks.
- Adopt schemas — the contract the system uses to identify, query, and understand
actions and content, and to match them to conversational phrases.
- Associate entities with views / user activities — gives Apple Intelligence
onscreen context so someone can refer to what's visible ("this photo").
- Donate actions and content — behavioral cues for prediction and disambiguation.
Spotlight / semantic indexing
Indexing your app's content makes it findable in search and lets Siri and other system
features locate app-specific data. If you define app entities for your data, index
those entities with the rest of your content. When a search finds your content, the
system uses the associated entity to open your app and navigate to it. Apple
Intelligence retrieves entities it finds in your Spotlight index to interact with your
content.
Writing Tools and Genmoji
Writing Tools (proofreading, rewrite, summaries) integrate into standard system text
views automatically:
- Adopt
NSAttributedString / attributed strings as the backing store for text content.
- Use standard text views whenever possible and customize via their configuration
options.
- Use the Writing Tools API directly only if you have a custom text-editing engine or
can't use system views.
- Genmoji is built into system text views. In custom views, add Genmoji text
attachments and read/write them correctly when persisting to a custom file format.
Image Playground
The ImagePlayground framework gives a system interface to generate images from a text
description, an optional source image, and a style. Present a system sheet (SwiftUI) or
view controller (UIKit/AppKit); the system manages all interaction and delivers the
resulting image. Key API surface:
ImagePlaygroundViewController — the standard system interface (UIKit/AppKit).
ImagePlaygroundConcept — text elements specifying content to include.
ImagePlaygroundStyle / ImagePlaygroundOptions — style and generation options.
ImageCreator — generate images programmatically without the UI.
- SwiftUI sheet modifier:
imagePlaygroundSheet(
isPresented: Binding<Bool>,
concept: String,
sourceImage: Image?,
onCompletion: (URL) -> Void,
onCancellation: (() -> Void)?
)
Visual Intelligence
For object/scene scanning via Camera Control, adopt Visual Intelligence. The framework
detects content and exchanges information with your app using App Intents — so your App
Intents participation is also what makes you a destination for Visual Intelligence
results.
Checklist
Resources