Configures Claude Code hooks and Codex hooks.json/notify. Use when adding PreToolUse guards, Stop hooks, managed hooks, format-on-save, preflight, audits, or worktree/budget hooks.
日本語の概要は準備中です。原文の説明を表示しています。
Design local AI engines for iOS. Use when wiring Apple Foundation Models, local classifiers, extraction, summarization, grounded answers, and cloud fallbacks.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Use this skill when an iOS app should run useful AI behavior locally before spending cloud quota: Apple Foundation Models, deterministic local NLG, local retrieval stitching, local classifiers, extraction, summarization, tagging, rewrite helpers, and tool calls into app state. The common constraint is not "make chat smarter"; it is pick the right local engine, shape the data contract, gate capability correctly, and keep cloud as an explicit upgrade or fallback.
A major scenario is a rich, per-user structured context bundle (profile data, planning cache, knowledge chunks, activity ratings, journal themes, mood/energy, etc.) that needs to produce a real answer without cloud quota. In that case, the fix is never "make the reject card nicer." The fix is adding a local Composer tier between intent routing and cloud fallback.
This skill is for iOS product surfaces and local app-engine design. For pure retrieval/chunking/grounding strategy upstream of the local engine, route to ai-rag. For model serving/quantization tradeoffs beyond Apple platform APIs, route to ai-llm-inference. For evaluation of generated or extracted output, route to ai-evals-observer.
| Pattern | Local engine | Best for | Fallback |
|---|---|---|---|
| Structured generation | Apple Foundation Models + @Generable | Short prose, extraction, classification, tagging, typed transformations | Deterministic local logic or cloud opt-in |
| Deterministic NLG | Sentence bank / templates / rules | Auditable answers, safety copy, older devices, per-locale consistency | Retrieval stitch or cloud opt-in |
| Retrieval stitch | Local top-k chunks + wrappers | Grounded explanations from existing knowledge chunks | Sentence bank or cloud opt-in |
| Local classifier | Regex, NaturalLanguage, embeddings, FM enum output | Routing, intent, entity extraction, safety boundaries | Conservative default route |
| Tool-backed local model | FM tool calling into app state | Model decides when it needs app data | Pre-fetch compact data if tool overhead is too high |
| Reusable app AI foundation | LocalAIEngine facade + deterministic fallback + optional Foundation Models | New iOS app skeletons that need AI-ready architecture before the first AI feature ships | No-op or sentence-bank engine |
| Local semantic/vector search | Natural Language embeddings, local vector table, or bundled retrieval units | User notes, settings, local knowledge, short document sets, app help, offline search | Server vector brain when corpus or sharing exceeds device scope |
For non-answer tasks, use references/local-ai-task-patterns.md before reaching for the answer-composer references. For reusable app foundations, use references/foundation-models-app-skeleton.md and references/on-device-vector-retrieval-ios.md.
| Tier | Engine | Responsibility | Cost / latency |
|---|---|---|---|
| 0. Intent router | Deterministic regex + lightweight classifier | Detect archetype (reflect / interpret / guide / clarify / check_in), extract slots, assemble evidence bundle | Measure routing and retrieval separately; local compute |
| 1. Composer | One of: Foundation Models (A), sentence bank (B), retrieval stitch (C) | Render the bundle into prose within the product word budget | Measure cold/warm device latency; local compute |
| 2. Cloud LLM | Any cloud model your backend calls, chosen per product policy (not this skill's concern) | Deeper synthesis, multi-turn reasoning, novel question types | Measure end-to-end latency; check provider quota/pricing |
Local-first mode owns Tiers 0 + 1. The explicit cloud-escalation control is Tier 2. If Tier 0 routes correctly but Tier 1 does not exist, a genuine question becomes a rejection card instead of an answer — that gap is what the Composer tier exists to close. See references/three-tier-architecture.md.
Three engines. You usually ship more than one, with a fallback chain.
| Option A — Foundation Models | Option B — Sentence Bank | Option C — Retrieval Stitch | |
|---|---|---|---|
| Engine | Apple FoundationModels system model (iOS 26+) | Hand-curated prose fragments keyed by (archetype, anchor, mood) | Top-k retrieval over your knowledge chunks + boilerplate wrappers |
| Voice quality | Natural, conversational, feels personal | Curated, brand-consistent, can feel patterned over time | Mechanical, readable, "summary-ish" |
| Delivery dependency | Prompt, capability and regression evaluation | Fragment coverage and localization | Existing retrieval and source quality |
| Deterministic | No — sampling | Yes — fully auditable | Mostly — retrieval is stable |
| Offline | Yes | Yes | Yes if retrieval is local |
| API billing | No cloud API charge for on-device inference | None | None if retrieval is local |
| Localization | Needs multilingual prompt + per-locale QA | Per-locale fragment files (standard l10n flow) | Depends on knowledge chunks' language coverage |
| Device requirement | Check runtime availability and active locale; avoid hardware allowlists | Any supported app device | Any supported app device |
| Risk | Hallucination if prompt underconstrained | Repetition; "feels canned" after N sessions | Chunk quality leaks into answer quality |
| Deep dive | references/option-a-foundation-models.md | references/option-b-sentence-bank.md | references/option-c-retrieval-stitch.md |
Default recommendation for consumer iOS apps: Ship a deterministic local baseline plus Apple Foundation Models as an upgrade on capable devices. For answer surfaces, that usually means B + A together, with B as universal fallback. B closes the reject-card bug immediately; A then upgrades voice quality on iOS 26+ devices using the same bundle and the same { answer, grounding } output shape. C is useful as a last-chance Tier-1 before falling through to Tier 2 or to deterministic safety copy. Rationale: references/three-tier-architecture.md.
Don't default to "on-device because it's private" or "cloud because it's smarter" — decide per feature against four axes, in this order:
PrivateCloudComputeLanguageModel and the LanguageModel provider protocol. PCC requires eligibility and a managed entitlement; read Apple's PCC guide and access terms before adoption, and inspect quotaUsage at runtime. Do not count it as unlimited capacity.For image attachments, system tools, Core ML and MLX choices, load the engine decision paths at workflow step 2. For OS-specific context queries and error handling, load Option A before implementation.
Thermal and battery reality. Profile under load and cancel calls that exceed the app's measured deadline. Select Option B instead of leaving the UI waiting; a deadline expiry is an app decision, not a universal Foundation Models timing guarantee.
Graceful degradation is not optional. Every feature that uses Option A needs a tested B/C path for: OS below 26, Apple Intelligence disabled, region/language not yet supported, model asset still downloading, and thermal/latency ceiling exceeded. Ship the fallback first; layer A on top.
{ answer, grounding, followUps[], safetyBoundary }; for extraction/classification it means a typed enum/struct.SystemLanguageModel.default.availability == .available; local fallbacks must work when the model is unavailable, disabled, not ready, or unsupported for the active language.For answer composers specifically:
{ answer, grounding, followUps[], safetyBoundary } — composers differ only in how they fill it.emotional_support, the first sentence acknowledges the user's stated feeling before any framework-specific framing. No composer is allowed to skip this.Foundation Models begins at iOS 26; newer provider, attachment and error APIs require iOS 27 guards as well as model availability checks. Do not infer third-party access from an Apple research model announcement. Test prompts on each supported OS/model revision because system model updates can change behavior.
A local AI engine generates user-facing content, which puts the app inside several App Store Review Guidelines that have nothing to do with model quality. Treat these as build-time constraints, not a pre-submission afterthought. Full pass/fail map: ../software-ios-design/references/app-review-guidelines-map.md.
Full catalog (P1–P28, A1–A22, T1–T25, S1–S13) in references/patterns-antipatterns-traps-scenarios.md. Key entries inline:
Architecture (P1–P6, A4–A7): every composer emits a single shared Swift value type; compose from a typed EvidenceBundle, never raw text; run the universal post-processor (anchor validator → word-count trimmer → forbidden-phrase filter) after every composer including Option A.
Option A (P13–P17, P27–P28): use OS guards for API symbols, runtime gates for model capability, and the dual-SDK context/error map in Option A. Write a bundle-specific prompt rather than porting a cloud prompt unchanged.
Safety (P23–P24, A2, A16): crisis patterns bypass all composers; cloud Tier 2 is an explicit user-visible CTA, never a silent fallback; safety routing is a Tier-0 decision, not a prompt instruction to the FM.
Persistence (A21–A22): persist composer identity and grounding with the answer in whichever store the app uses. Verify write → reload preserves the shared contract; transient transport metadata is insufficient.
Top traps by day-cost: T2 (simulator lies about FM availability — always test on physical device); T6a (tool/schema overhead omitted from the measured token budget); T13 (trimmer removes grounding line); T19 (fallback-chain silent regression when feature flag flips); T25 (cohort ramp built before any users exist).
LocalAIEngine interface and deterministic fallback even if Foundation Models ships later.@Generable for Foundation Models where the model should emit the type directly; use deterministic structs for rule/template paths. For non-answer examples, see references/local-ai-task-patterns.md.SystemLanguageModel.default.availability. references/option-a-foundation-models.md.Before marking a local AI engine pass as complete, verify:
Contract conformance — output matches the locked Swift type; no composer-specific fields leak into the UI.
Anchor count — every answer names at least 2 concrete anchors from the evidence bundle (a specific data point, phase, metric, or knowledge chunk). No generic filler that could apply to anyone.
Feel-first for emotional intent — first sentence acknowledges the stated mood before any domain-specific framing.
Ordinal formatting — any ordinal shown to the user (e.g. "1st / 2nd / 3rd / 4th") never renders "1th / 21th". Centralize via a single formatOrdinal helper (server and client); invariant-test it.
No forbidden phrases — blocklist vague reassurance stock phrases ("trust the process," "it will all work out") and any composer-specific stock phrasing that shows up too often in logs.
No invented facts — assert the answer text only mentions entities, numbers, or attributes present in the bundle. An offline validator should catch this before the text reaches the UI.
Configured word budget — for answer surfaces, validate the chosen length (40–70 words is an illustrative default); reject or revise without trimming away anchors. Non-answer tasks validate their field-specific limits.
Locale cleanliness — every user-facing string goes through l10n. Composer output generated in the user's locale (not translated post-hoc).
Retry and replay — request IDs identify traces, not sampling. Choose supported seeded sampling for same-model replay; use a new seed for Retry when variation is desired, then evaluate variation. A fresh session alone guarantees neither a new answer nor cross-OS reproducibility.
Safety routes mapped — crisis patterns bypass all composers; clinical patterns soften tone; emotional patterns trigger the feel-first rule.
Grounding line passes the "anchor test" — if you strip it out of the answer, could a careful reader reconstruct "which two or three facts this was based on"? If it's ambiguous ("your overall energy"), it fails.
Accessibility — answer bubble + grounding line combine as one VoiceOver element; action row items announce individually; follow-up chips announce as buttons with hint. See software-ios-design craft patterns.
Replay in tests — deterministic composers accept injected time/randomness; model-backed composers use recorded responses for unit tests plus live per-OS regression cases. Keep UI integration separate from validation.
Non-answer task coverage — classification, extraction, summarization, tagging, rewrite, search, and tool-backed actions use the smallest reliable local engine, typed outputs, validators, and fallback rules from local-ai-task-patterns.md.
Persistence parity — save and reload output fields, composer identity, schema version and grounding/source references in the app's chosen store; test every composer and migration rather than only the immediate response.
Availability and budget — exercise unavailable-model, unsupported-locale, context overflow and timeout paths on the oldest supported OS and iOS 27. Use the dual-SDK error map; validate complete session budgets, not just prompts.
Safety, consent and trace — test crisis routing before composition and explicit cloud transmission; trace { archetype, composerUsed, anchorCount, wordCount, latencyMs, groundingScore, fallbackReason?, refusalReason? } without raw sensitive input.
Local-first fallback — verify the target local-first path answers an emotional / open question with real prose, not a reject card; the "cloud upgrade" affordance is explicit.
Runtime evidence — record OS, device, Xcode and physical-device/simulator status for regressions. Check current Apple docs when changing language, context, tools or error handling; treat community claims as hypotheses until reproduced. Run live quality cases after each supported OS/model update.
software-ios-design — for the surface that renders the answer (bubble, grounding line, action row, follow-up chips, detents).software-ios-native — for broader SwiftUI architecture, Observation, concurrency, and release gates around the composer layer.ai-rag — for the retrieval stage feeding the evidence bundle (chunking, hybrid search, reranking, freshness).ai-context-layer — for the durable per-user context store that assembles the bundle.ai-prompt-engineering — for the prompt contract inside Option A (voice, anchor rules, anti-hallucination).ai-llm-inference — for deeper model-choice tradeoffs (Apple FM vs an MLX-served open-weight model vs cloud), tokenization, and inference perf.ai-evals-observer agent/team — for regression gates and trace grading of composer output when available.software-ios-runtime-debugging — when composer output doesn't match source after a build (stale install, not a composer bug).ai-rag + ai-context-layer + ai-vector-brain for natural conversational surfaces, Path A (Apple Foundation Models) and Path B (vector-DB-only) for three generic domain shapes (consumer reflection, regulated copilot, multi-turn emotional companion)LocalAIEngine facade, Foundation Models service, typed contracts, fallback behavior, and App Intents/tool-call boundaries for generic iOS appsai-vector-brainFoundationModels framework composer, @Generable output, availability gating, guardrailsWhen prior decisions or pitfalls are relevant, consult learnings.consolidated.md if present; use learnings.md only for needed history or as the available fallback. Otherwise skip both.
After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Configures Claude Code hooks and Codex hooks.json/notify. Use when adding PreToolUse guards, Stop hooks, managed hooks, format-on-save, preflight, audits, or worktree/budget hooks.
日本語の概要は準備中です。原文の説明を表示しています。
Configures and hardens Claude Code and Codex MCP servers. Use when connecting databases, APIs, SaaS, building servers, or serving a clearance-filtered knowledge base.
日本語の概要は準備中です。原文の説明を表示しています。
Owns instruction files: AGENTS.md, CLAUDE.md, personal and repo rules. Use when writing, pruning, auditing them, sharing rules across Claude and Codex, or fixing ignored rules.
日本語の概要は準備中です。原文の説明を表示しています。
Creates and audits agent skills: SKILL.md, references, scripts, runtime metadata. Use when writing, validating, or security-reviewing a skill, or fixing truncated skill listings.
日本語の概要は準備中です。原文の説明を表示しています。
Adds per-skill learnings loops for dated patterns, mistakes, and domain facts. Use when wiring skill memory, consolidation, or drift audits.
日本語の概要は準備中です。原文の説明を表示しています。
Chooses subagent, team, workflow, or debate and launches it on Claude Code or Codex. Use when delegating, running agent review boards, or installing shared agents.
日本語の概要は準備中です。原文の説明を表示しています。