mcpField
S
swift-ui-architect

swift-ui-architect

github.com/pproencaDevelopment218270 installsUpdated 11w ago
Repository

About swift-ui-architect

swift-ui-architect is a skill with modular MVVM-C guidelines for SwiftUI clinic apps using iOS 26 and Swift 6.2. It defines layer boundaries, state, navigation, dependency injection, and data-flow rules for building or reviewing features.

Key features

  1. 01Modular MVVM-C layer rules
  2. 02View identity and state guidance
  3. 03Coordinator-based navigation rules
  4. 04Dependency injection patterns
  5. 05Async data-flow recommendations

Use cases

  1. 01Designing local SPM feature modules
  2. 02Wiring coordinators and route shells
  3. 03Reviewing data and error-flow boundaries

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/pproenca/dot-skills --skill swift-ui-architect

After installing, type/swift-ui-architectin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

metadata.json
assets/templates/
_template.md
references/
_sections.md
data-async-init.md
data-cancellation.md
data-combine-avoid.md
data-error-loadable.md
data-task-modifier.md
di-container-composition.md
di-environment-injection.md
di-mock-testing.md
di-protocol-abstraction.md
diff-avoid-anyview.md
diff-closure-skip.md
diff-equatable-views.md
diff-identity-stability.md
diff-printchanges-debug.md
diff-reference-types.md
layer-dependency-rule.md
layer-model-value-types.md
layer-no-view-repository.md
layer-repository-protocol.md
layer-usecase-protocol.md
layer-viewmodel-boundary.md
list-constant-viewcount.md
list-filter-in-model.md
list-id-keypath.md
list-lazy-stacks.md
nav-coordinator-pattern.md
nav-deeplink-support.md

Details

From the project README

SwiftUI Modular MVVM-C Architecture

Opinionated architecture enforcement for SwiftUI clinic-style apps. This skill aligns to the iOS 26 / Swift 6.2 clinic architecture: modular MVVM-C in local SPM packages, concrete coordinators and route shells in the App target, pure Domain protocols, and Data as the only I/O layer.

Mandated Architecture Stack

┌───────────────────────────────────────────────────────────────┐
│ App target: DependencyContainer, Coordinators, Route Shells   │
├───────────────┬───────────────┬───────────────┬──────────────┤
│ Feature* SPM  │ Feature* SPM  │ Feature* SPM  │ Feature* SPM │
│ View + VM     │ View + VM     │ View + VM     │ View + VM    │
├───────────────────────────────────────────────────────────────┤
│ Data SPM: repository impls, remote/local, retry, sync queue   │
├───────────────────────────────────────────────────────────────┤
│ Domain SPM: models, repository protocols, coordinator protocols│
│ and ErrorRouting/AppError                                      │
├───────────────────────────────────────────────────────────────┤
│ Shared SPMs: DesignSystem, SharedKit                           │
└───────────────────────────────────────────────────────────────┘

Dependency Rule: Feature modules import Domain + DesignSystem only. Features never import Data or other features. App target is the only convergence point.

Clinic Architecture Contract (iOS 26 / Swift 6.2)

All guidance in this skill assumes the clinic modular MVVM-C architecture:

  • Feature modules import Domain + DesignSystem only (never Data, never sibling features)
  • App target is the convergence point and owns DependencyContainer, concrete coordinators, and Route Shell wiring
  • Domain stays pure Swift and defines models plus repository, *Coordinating, ErrorRouting, and AppError contracts
  • Data owns SwiftData/network/sync/retry/background I/O and implements Domain protocols
  • Read/write flow defaults to stale-while-revalidate reads and optimistic queued writes
  • ViewModels call repository protocols directly (no default use-case/interactor layer)

When to Apply

Reference these guidelines when:

  • Building or refactoring feature modules under local SPM packages
  • Wiring coordinators, route shells, and dependency container factories
  • Defining Domain protocols for repositories, coordinators, and error routing
  • Enforcing Data-only ownership of networking, persistence, and sync
  • Reviewing stale-while-revalidate reads and optimistic queued writes

Non-Negotiable Constraints (iOS 26 / Swift 6.2)

  • @Observable for ViewModels/coordinators, ObservableObject / @Published never
  • No dedicated use-case/interactor layer: ViewModels call Domain repository protocols directly
  • Coordinator protocols live in Domain; concrete coordinators own NavigationPath in App target
  • Route shells live in App target and own .navigationDestination mapping
  • AppError + ErrorRouting drive presentation policy; ViewModels do not hardcode global error UI
  • SwiftData / URLSession / retry / sync queue logic stays in Data package only

Rule Categories by Priority

PriorityCategoryImpactPrefixRules
1View Identity & DiffingCRITICALdiff-6
2State ArchitectureCRITICALstate-7
3View CompositionHIGHview-6
4Navigation & CoordinationHIGHnav-5
5Layer ArchitectureHIGHlayer-6
6Dependency InjectionMEDIUM-HIGHdi-4
7List & Collection PerformanceMEDIUMlist-4
8Async & Data FlowMEDIUMdata-5

Quick Reference

1. View Identity & Diffing (CRITICAL)
2. State Architecture (CRITICAL)
3. View Composition (HIGH)
4. Navigation & Coordination (HIGH)
5. Layer Architecture (HIGH)
6. Dependency Injection (MEDIUM-HIGH)
7. List & Collection Performance (MEDIUM)
8. Async & Data Flow (MEDIUM)

How to Use

Read individual reference files for detailed explanations and code examples:

Reference Files

FileDescription
references/_sections.mdCategory definitions and ordering
assets/templates/_template.mdTemplate for new rules
metadata.jsonVersion and reference information

Comments

Markdown supported