Install
$ agentstack add skill-jakerains-agentskills-apple-foundation-models ✓ 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.
About
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
- 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. - 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.
- Check platform support and runtime readiness. Use
isAvailableandavailabilitystates, then design fallback UI for unavailable states. - Design instructions and prompts. Set behavioral constraints in
instructions:(developer-only). Keep prompts concise with length qualifiers. Seereferences/prompt-design-and-safety.md. - Design
@Generabletypes for structured output. Use@Generablewith@Guideconstraints instead of asking the model to produce JSON. Seereferences/generable-and-guided-generation.md. - Stream all user-facing generation. Use
streamResponse(to:)instead ofrespond(to:)for any output the user sees. See the streaming section inreferences/foundation-models-framework.md. - Add tools only as needed. Register tools when the model needs data or actions it cannot perform alone. See
references/tool-calling.md. - 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. - 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 and @Guide:
references/generable-and-guided-generation.md - Tool calling (Tool protocol, dynamic tools, tool graphs):
references/tool-calling.md - Prompt design, safety, and error handling:
references/prompt-design-and-safety.md - Image generation (ImagePlayground, ImageCreator):
references/image-playground.md - Local vs larger-model routing strategy:
references/routing-local-vs-bigger-model.md
Execution Rules
- Prefer official Apple docs and WWDC sources for API behavior.
- Treat Foundation Models app APIs as on-device unless Apple docs explicitly document a server-routing API for app code.
- Re-verify docs for "latest" requests because Apple Intelligence behavior can change across OS releases.
- Keep prompts concise and structured to reduce token use and latency.
- Check model limitations before implementing. If the task involves world knowledge, math, code generation, or long-form writing, design an escalation path — do not rely on the on-device model.
- Stream all user-facing generation. Use
streamResponse(to:)for any output displayed to the user. Reserverespond(to:)for background processing. - Use
@Generablefor structured output, not JSON in prompts. The model uses constrained decoding with@Generabletypes, guaranteeing valid output. Prompt-based JSON is unreliable.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: jakerains
- Source: jakerains/AgentSkills
- 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.