← ClaudeAtlas

arch-clean-swiftlisted

Clean Swift (VIP) by Raymond Law. Strict V → I → P → V cycle, per-boundary Request/Response/ViewModel structs, Worker for repo access. Use for TDD-committed UIKit teams; avoid in SwiftUI.
kbelasheuski/ios-architecture-skills · ★ 0 · AI & Automation · score 72
Install: claude install-skill kbelasheuski/ios-architecture-skills
# Clean Swift (VIP) **Source references:** - Raymond Law, *Clean Swift* — https://clean-swift.com/ - Essential Developer, *Clean Swift design pattern review* — https://www.essentialdeveloper.com/articles/clean-ios-architecture-part-7-vip-clean-swift-design-pattern-or-architecture/ ## When to use - TDD-committed UIKit teams. - Long-lived codebases where data shape per layer is auditable. - Reject for SwiftUI-first. ## Folder structure ``` Scenes/ UserList/ UserListModels.swift UserListViewController.swift UserListInteractor.swift UserListPresenter.swift UserListRouter.swift UserListWorker.swift UserListConfigurator.swift UserDetail/ ... (same seven files) ``` ## Reference implementation — full feature ```swift // Scenes/UserList/UserListModels.swift import Foundation enum UserList { enum FetchUsers { struct Request: Equatable { let reset: Bool } struct Response: Equatable { let users: [User] let loading: ViewModel.Loading let errorMessage: String? } struct ViewModel: Equatable { struct Row: Equatable { let id: User.ID; let title: String; let subtitle: String } enum Loading { case none, fullScreen, nextPage } let rows: [Row] let loading: Loading let errorMessage: String? } } enum SelectRow { struct Request { let index: Int } } } // Scenes/UserList/UserListWorker.swift final cl