Jake's pick
Apple Foundation Models
Build Apple Intelligence features with Foundation Models and Image Playground on iOS 26+, iPadOS 26+, macOS 26+, Mac Catalyst 26+, and visionOS 26+. Use when implementing SystemLanguageModel, LanguageModelSession, guided generation with @Generable/@Guide, tool calling, streaming responses, prompt design, safety and guardrail handling, model availability checks, content tagging, context-window limits, local on-device inference, routing to larger-model paths, adapters, and ImagePlayground/ImageCreator APIs. Covers model capabilities and limitations, structured output, error handling, and SwiftUI integration patterns.
Install
npx skills add jakerains/AgentSkills --skill apple-foundation-modelsTags
applefoundationmodelsmacosios
Install Options
Project install
npx skills add jakerains/AgentSkills --skill apple-foundation-modelsGlobal install
npx skills add jakerains/AgentSkills --skill apple-foundation-models -gUse once
npx skills use jakerains/AgentSkills --skill apple-foundation-modelsWorks With
codexclaude-codecursoropencode
Source
Skill Preview
# Apple Foundation Models and Image Playground Implement reliable Apple Intelligence features with Apple's on-device text and image generation APIs across all supported platforms. ## Model Limitations (CRITICAL — Read First) The on-device model is ~3B parameters with a 4,096-token context window. It excels at summarization, extraction, classification, tagging, composition, and revision. It **cannot reliably** do: - **World knowledge / factual Q&A** — will hallucinate - **Math and arithmetic** — unreliable at multi-step calculations - **Code generation** — cannot produce correct code - **Long-form writing** (>200 words) — context window too small Before writing any code, check `references/model-capabilities-and-limits.md` to confirm the task is within the model's capabilities. If it is not, design an escalation path (tool, backend model, or user disclosure). ## Quick Reference | Capability | Key API | Reference | |-----------|---------|-----------| | Text generation (basic) | `LanguageModelSession.respond(to:)` | `references/foundation-models-framework.md` | | Streaming output | `session.streamResponse(to:)` | `references/foundation-models-framework.md` | | Structured output | `@Generable`, `@Guide`, `session.respond(to:generating:)` | `references/generable-and-guided-generation.md` | | Tool calling | `Tool` protocol, `session` with `tools:` | `references/tool-calling.md` | | Prompt and instruction design | `LanguageModelSession(instructions:)` | `references/prompt-design-and-safety.md` | | Safety and error handling | `guardrailViolation`, input sanitization | `references/prompt-design-and-safety.md` | | Model capabilities check | Capability/limitation tables | `references/model-capabilities-and-limits.md` | | Image generation | `ImagePlayground`, `ImageCreator` | `references/image-playground.md` | | Testing and debugging | `#Playground`, `session.transcript`, Instruments | `references/foundation-models-framework.md` | | Local vs cloud routing | `GenerationPath` enum pattern | `references/routing-local-vs-bigger-model.md` | ## Workflow 1. **Check model limitations first.** Verify the task is within the on-device model's capabilities using the tables in `references/model-capabilities-and-limits.md`. If it is not, design an escalation path before writing code. 2. **Classify the request.** Use Foundation Models for on-device text generation, ImagePlayground for image generation, and App Intents/Shortcuts for the "Use Model" automation action. 3. **Check platform support and runtime readiness.** Use `isAvailable` and `availability` states, then design fallback UI for unavailable states. 4. **Design instructions and prompts.** Set behavioral constraints in `instructions:` (developer-only). Keep prompts concise with length qualifiers. See `references/prompt-design-and-safety.md`. 5. **Design `@Generable` types for structured output.** Use `@Generable` with `@Guide` constraints instead of asking the model to produce JSON. See `references/generable-and-guided-generation.md`. 6. **Stream all user-facing generation.** Use `streamResponse(to:)` instead of `respond(to:)` for any output the user sees. See the streaming section in `references/foundation-models-framework.md`. 7. **Add tools only as needed.** Register tools when the model needs data or actions it cannot perform alone. See `references/tool-calling.md`. 8. **Decide whether to route to a larger model.** For Apple-managed routing, use App Intents "Use Model." For in-app escalation, use an explicit backend model path. See `references/routing-local-vs-bigger-model.md`. 9. **Validate behavior on physical devices** and include robust error handling for guardrail violations, context size, language support, and tool failures. ## References - **Framework core (sessions, availability, streaming, performance):** `references/foundation-models-framework.md` - **Model capabilities and limitations:** `references/model-capabilities-and-limits.md` - **Structured output with @Generable