ios-architect
Installation
SKILL.md
iOS Architect
Keep token usage low by loading only the references needed for the current request.
Load Strategy
- Always read
references/intake.mdfirst. - Read only the references relevant to the build type:
New app from scratch
references/new-app-scaffold.mdreferences/feature-scaffold.mdreferences/database-and-migrations.mdreferences/testing-concurrency-di.mdreferences/error-taxonomy.md- If screenshots or UI/snapshot testing:
references/screenshots.md
New feature
references/feature-scaffold.mdreferences/error-taxonomy.md- If persistence changes:
references/database-and-migrations.md - If tests/concurrency concerns:
references/testing-concurrency-di.md - If screenshots or UI/snapshot testing:
references/screenshots.md
New cross-domain shared service or model
references/testing-concurrency-di.md- If DB-backed:
references/database-and-migrations.md
New database migration
→ Use the ios-persistence skill directly.
New local SPM package
references/new-app-scaffold.mdreferences/testing-concurrency-di.md
Do not bulk-load all references when the task is narrow.
Cross-Skill Handoffs
- ios-design-system: invoke when the request mentions a reusable UI component (used by 2+ features), a color/spacing token, theming, or Liquid Glass. Do NOT invoke for a one-off view inside a feature.
- ios-persistence: invoke when the request is ONLY about a migration, query optimization, or ValueObservation setup with no Domain/Data/Presentation changes. If Domain/Data layers change alongside persistence, ios-architect handles it and loads
database-and-migrations.mditself. - ios-platform: invoke when the request is ONLY about the API client, navigation router overhaul, privacy manifest, or Foundation Models integration. Feature scaffolding (Domain/Data/Presentation) stays in ios-architect even if networking is involved.
- ios-testing: invoke when the request is ONLY about writing or fixing tests, mocks, or actor isolation errors, with no new feature scaffolding.
- ios-visual: invoke when the request involves screenshots, visual regression, or design comparison.
Shared Placement Rule
- Default all model/repository/view-model ownership to the feature that uses it.
- Use
Sharedonly for true cross-domain capabilities consumed by at least two domains/features (e.g. Settings). - Keep shared capabilities domain-scoped (
Shared/Settings/...) with their own Domain/Data/Presentation split. - Never create catch-all buckets such as
Shared/ModelsorShared/Data.
Execution Contract
- Run intake first (build type, name, flow, fields, data source, integrations, test scope).
- If the user does not answer intake questions (e.g., non-interactive context), state safe defaults and proceed to generation immediately. Never stop at intake.
- Generate ALL three layers for every feature — Domain, Data, AND Presentation:
- Domain — model struct(s) + repository protocol
- Data — repository implementation (+ records if persistence is used)
- Presentation — at least one ViewModel (
@Observable @MainActor) AND at least one SwiftUI View that consumes it - Skipping the Presentation layer is never acceptable. Every feature must have a working View + ViewModel.
- Keep each layer in the owning feature by default; only promote to shared for proven cross-domain reuse.
- If screenshots are in scope, generate the full JSON config and env var router hook (one JSON file per
AppScreencase, plusAPP_USE_PREVIEW_DATAenv var at the app entry point) before handing off to ios-visual. - For new-app scaffolds: generate Tuist config AND app code (entry point, root navigation, first feature with all three layers) in the same response. Never stop after emitting only project configuration files.
- Use modern APIs (
@Observable,@MainActor, Swift Concurrency, Swift Testing). - Validate generated output:
- New Tuist app:
tuist generate+ one build - Feature/module changes: targeted build/tests
- New Tuist app:
- Report created files, validations run, and assumptions.
Sister Skills
- ios-design-system — design tokens, UI components, Liquid Glass styling
- ios-platform — networking, navigation, privacy, Foundation Models
- ios-persistence — GRDB setup, migrations, ValueObservation
- ios-testing — Swift Testing, mock repositories, DI, concurrency
- ios-visual — visual regression, pixel-perfect comparison, UI error detection
Related skills