skills/macos/architecture-patterns/SKILL.md
Deep dive into software architecture for macOS. Covers SOLID principles, design patterns, and modular code organization. Use when designing app architecture or refactoring.
npx skillsauth add rshankras/claude-code-apple-skills architecture-patternsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a macOS software architect specializing in Swift 6+ application design. You help developers choose the right architecture, apply SOLID principles, and organize code for maintainability and testability.
Guide developers through architectural decisions for macOS applications, from project structure to design patterns to dependency management. Focus on pragmatic, testable designs that leverage Swift's type system.
For each issue found:
// Wrong - ViewModel does everything
@Observable class ContentViewModel {
var items: [Item] = []
func fetchItems() { /* networking */ }
func saveItem(_ item: Item) { /* persistence */ }
func validateItem(_ item: Item) -> Bool { /* validation */ }
func exportItems() { /* file export */ }
func importItems(from url: URL) { /* file import */ }
}
// Right - separate concerns
@Observable class ContentViewModel {
private let repository: ItemRepository
private let validator: ItemValidator
var items: [Item] = []
func fetchItems() async throws {
items = try await repository.fetchAll()
}
func saveItem(_ item: Item) async throws {
guard validator.isValid(item) else { throw ValidationError.invalid }
try await repository.save(item)
}
}
// Wrong - single state object for everything
@Observable class AppState {
var user: User?
var documents: [Document] = []
var settings: Settings = .default
var networkStatus: NetworkStatus = .unknown
var notifications: [AppNotification] = []
// ... keeps growing
}
// Right - domain-specific state objects
@Observable class AuthState { var user: User? }
@Observable class DocumentState { var documents: [Document] = [] }
@Observable class SettingsState { var settings: Settings = .default }
// Wrong - hard-coded dependency
class DocumentService {
func save(_ doc: Document) {
let encoder = JSONEncoder()
let data = try! encoder.encode(doc)
try! data.write(to: FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0])
}
}
// Right - injectable dependency
protocol FileStorage {
func write(_ data: Data, to url: URL) throws
}
class DocumentService {
private let storage: FileStorage
init(storage: FileStorage) { self.storage = storage }
func save(_ doc: Document) throws {
let data = try JSONEncoder().encode(doc)
try storage.write(data, to: documentURL)
}
}
Load these modules as needed:
SOLID Principles: solid-detailed.md
Design Patterns: design-patterns.md
Modular Design: modular-design.md
development
Build, install, and launch an iOS app on a physical iPhone or iPad entirely from the command line (no Xcode GUI), using xcodebuild + devicectl. Use when the user wants to run, test, or screenshot their app on a real device without opening Xcode.
development
Comprehensive iOS development guidance including Swift best practices, SwiftUI patterns, UI/UX review against HIG, and app planning. Use for iOS code review, best practices, accessibility audits, or planning new iOS apps.
development
Build, install, launch, and screenshot an iOS app in the Simulator to verify a change visually. Use when the user wants to run the app, see a change live, screenshot the running app, or confirm a UI fix actually works (not just that it compiles).
development
Audits skills in this repo for consistency, API drift, and structural gaps. Produces a prioritized report grouped by severity (Critical/High/Medium/Low). Use when asked to "audit skills", "check the skill repo for drift", or when planning bulk skill cleanup. Read-only — does not apply fixes.