arch-clean-architecturelisted
Install: claude install-skill kbelasheuski/ios-architecture-skills
# Clean Architecture (Layered)
**Source references (study after reading this skill):**
- kudoleh/iOS-Clean-Architecture-MVVM — https://github.com/kudoleh/iOS-Clean-Architecture-MVVM
- nalexn/clean-architecture-swiftui — https://github.com/nalexn/clean-architecture-swiftui
- Alexey Naumov, *Clean Architecture for SwiftUI* — https://nalexn.github.io/clean-architecture-swiftui/
- Uncle Bob, *The Clean Architecture* — https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
Code follows the kudoleh template's split:
- `Domain/Entities`, `Domain/UseCases`, `Domain/Interfaces/Repositories`
- `Data/Network`, `Data/Repositories`
- `Presentation/<Scene>/ViewModel`, `Presentation/<Scene>/View`
- `Application/DIContainer`, `Presentation/<Scene>/Flows/<Coordinator>`
## When to use
- Medium/large apps with non-trivial domain logic.
- SPM-modular setups (compose with `arch-modular-tma`).
- Regulated domains where business rules must be isolated from UI/persistence.
## Folder structure
Matches the worked example in `examples/clean-architecture/`:
```
Sources/
App/
UsersApp.swift
DIContainer/AppDIContainer.swift
DIContainer/UsersSceneDIContainer.swift
Domain/
User.swift ← Entity + UsersPage + errors
UserRepository.swift ← repository protocol (the inner boundary)
UseCases/FetchUsersUseCase.swift
UseCases/FetchUserUseCase.swift
UseCases/UpdateUserUseCase.swift
Data/
LiveUserRepository.swift