Swift Architecture Skill
Overview
Use this skill to pick the best Swift architecture playbook for SwiftUI/UIKit codebases and apply it to the user’s task.
Workflow
Step 1: Analyze the Request Context
Before selecting an architecture, capture:
- task type (new feature, refactor, PR review, debugging)
- UI stack (SwiftUI, UIKit, or mixed)
- scope (single screen, multi-screen, app-wide)
- existing conventions to preserve
Step 2: Select the Architecture
If the user explicitly names an architecture, treat it as the initial candidate and run a fit check before committing:
- validate against UI stack fit (SwiftUI/UIKit/mixed), state complexity, effect orchestration needs, team familiarity, and existing codebase conventions
- if it fits, proceed with the requested architecture
- if it mismatches key constraints, explicitly explain the mismatch and recommend the closest-fit alternative from
references/selection-guide.md
- if the user still insists on a mismatched architecture, proceed with a risk-mitigated plan and state the risks up front
When no architecture is named, load references/selection-guide.md and infer the best fit from stated constraints (state complexity, team familiarity, testing goals, effect orchestration needs, and framework preferences). Explain the recommendation briefly.
Architecture reference mapping:
- MVVM →
references/mvvm.md
- MVI →
references/mvi.md
- TCA →
references/tca.md
- Clean Architecture →
references/clean-architecture.md
- VIPER →
references/viper.md
- Reactive →
references/reactive.md
Step 3: Analyze Existing Codebase (When Applicable)
When code already exists:
- detect current architecture and DI style
- note concurrency model (async/await, Combine, GCD, mixed)
- align recommendations to local conventions
Step 4: Produce Concrete Deliverables
Read the selected architecture reference and convert its guidance into deliverables tailored to the user's request:
- File and module structure: directory layout with file names specific to the feature
- State and dependency boundaries: concrete types, protocols, and injection points
- Async strategy: cancellation, actor isolation, and error paths
- Testing strategy: what to test, how to stub dependencies, and example test structure
- Migration path (for refactors): incremental steps to move from current to target architecture
- UI stack adaptation: where SwiftUI and UIKit guidance should differ for the chosen architecture
Step 5: Validate with Checklist
End with the architecture-specific PR review checklist from the reference file, adapted to the user's feature.
Output Requirements
- Keep recommendations scoped to the requested feature or review task.
- Prefer protocol-based dependency injection and explicit state modeling.
- Flag anti-patterns found in existing code and provide direct fixes.
- Include cancellation and error handling in all async flows.
- For explicit architecture requests, include a short fit result (
fit or mismatch) with 1-2 reasons.
- For mismatch cases, include one closest-fit alternative and why it better matches the stated constraints.
- When writing code, include only the patterns relevant to the task — do not dump entire playbooks.
- Treat reference snippets as illustrative by default; add full compile scaffolding only if the user asks for runnable code.
- Ask only minimum blocking questions; otherwise proceed with explicit assumptions stated up front.
- When reviewing PRs, use the architecture-specific checklist and call out specific violations with line-level fixes.
1---2name: swift-architecture-skill3description: Agent Skill for Swift architecture design and implementation patterns, with architecture-specific playbooks and review checklists. Use when designing new features, refactoring existing modules, reviewing pull requests, or debugging maintainability issues in SwiftUI/UIKit projects and you need concrete guidance for MVVM, MVI, TCA, Clean Architecture, VIPER, or Reactive patterns.4---5
6# Swift Architecture Skill
7
8## Overview
9
10Use this skill to pick the best Swift architecture playbook for SwiftUI/UIKit codebases and apply it to the user’s task.
11
12## Workflow
13
14### Step 1: Analyze the Request Context
15
16Before selecting an architecture, capture:
17- task type (new feature, refactor, PR review, debugging)
18- UI stack (SwiftUI, UIKit, or mixed)
19- scope (single screen, multi-screen, app-wide)
20- existing conventions to preserve
21
22### Step 2: Select the Architecture
23
24If the user explicitly names an architecture, treat it as the initial candidate and run a fit check before committing:
25- validate against UI stack fit (SwiftUI/UIKit/mixed), state complexity, effect orchestration needs, team familiarity, and existing codebase conventions
26- if it fits, proceed with the requested architecture
27- if it mismatches key constraints, explicitly explain the mismatch and recommend the closest-fit alternative from `references/selection-guide.md`
28- if the user still insists on a mismatched architecture, proceed with a risk-mitigated plan and state the risks up front
29
30When no architecture is named, load `references/selection-guide.md` and infer the best fit from stated constraints (state complexity, team familiarity, testing goals, effect orchestration needs, and framework preferences). Explain the recommendation briefly.
31
32Architecture reference mapping:
33- MVVM → `references/mvvm.md`
34- MVI → `references/mvi.md`
35- TCA → `references/tca.md`
36- Clean Architecture → `references/clean-architecture.md`
37- VIPER → `references/viper.md`
38- Reactive → `references/reactive.md`
39
40### Step 3: Analyze Existing Codebase (When Applicable)
41
42When code already exists:
43- detect current architecture and DI style
44- note concurrency model (async/await, Combine, GCD, mixed)
45- align recommendations to local conventions
46
47### Step 4: Produce Concrete Deliverables
48
49Read the selected architecture reference and convert its guidance into deliverables tailored to the user's request:
50
51- **File and module structure**: directory layout with file names specific to the feature
52- **State and dependency boundaries**: concrete types, protocols, and injection points
53- **Async strategy**: cancellation, actor isolation, and error paths
54- **Testing strategy**: what to test, how to stub dependencies, and example test structure
55- **Migration path** (for refactors): incremental steps to move from current to target architecture
56- **UI stack adaptation**: where SwiftUI and UIKit guidance should differ for the chosen architecture
57
58### Step 5: Validate with Checklist
59
60End with the architecture-specific PR review checklist from the reference file, adapted to the user's feature.
61
62## Output Requirements
63
64- Keep recommendations scoped to the requested feature or review task.
65- Prefer protocol-based dependency injection and explicit state modeling.
66- Flag anti-patterns found in existing code and provide direct fixes.
67- Include cancellation and error handling in all async flows.
68- For explicit architecture requests, include a short fit result (`fit` or `mismatch`) with 1-2 reasons.
69- For mismatch cases, include one closest-fit alternative and why it better matches the stated constraints.
70- When writing code, include only the patterns relevant to the task — do not dump entire playbooks.
71- Treat reference snippets as illustrative by default; add full compile scaffolding only if the user asks for runnable code.
72- Ask only minimum blocking questions; otherwise proceed with explicit assumptions stated up front.
73- When reviewing PRs, use the architecture-specific checklist and call out specific violations with line-level fixes.