composable-architectur…
Use when building features with TCA (The Composable Architecture), structuring reducers,…
Swift code style conventions for clean, readable code. Use when writing Swift code to ensure consistent formatting, naming, organization, and idiomatic patterns.
$ npx -y skills add johnrogers/claude-swift-engineering --skill swift-style --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/swift-styleContext preview
The summary Claude sees to decide when to auto-load this skill.
Swift code style conventions for clean, readable code. Use when writing Swift code to ensure consistent formatting, naming, organization, and idiomatic patterns.
name: swift-style description: Swift code style conventions for clean, readable code. Use when writing Swift code to ensure consistent formatting, naming, organization, and idiomatic patterns.
Code style conventions for clean, readable Swift code.
**Clarity > Brevity > Consistency**
Code should compile without warnings.
// Preferred let maximumWidgetCount = 100 func fetchUser(byID id: String) -> User
Left-hand margin is the happy path. Don't nest `if` statements.
// Preferred
func process(value: Int?) throws -> Result {
guard let value = value else {
throw ProcessError.nilValue
}
guard value > 0 else {
throw ProcessError.invalidValue
}
return compute(value)
}Use extensions and MARK comments:
class MyViewController: UIViewController {
// Core implementation
}
// MARK: - UITableViewDataSource
extension MyViewController: UITableViewDataSource { }Avoid `self` unless required by compiler.
// Preferred
func configure() {
backgroundColor = .systemBackground
}Omit `get` for read-only:
var diameter: Double {
radius * 2
}Trailing closure only for single closure parameter.
Let compiler infer when clear. For empty collections, use type annotation:
var names: [String] = []
// Preferred var items: [String] var cache: [String: Int] var name: String?
resource.request().onComplete { [weak self] response in
guard let self else { return }
self.updateModel(response)
}Use case-less enum for namespacing:
enum Math {
static let pi = 3.14159
}1. **Abbreviations beyond URL, ID, UUID** — Abbreviations like `cfg`, `mgr`, `ctx`, `desc` hurt readability. Spell them out: `configuration`, `manager`, `context`, `description`. The three exceptions are URL, ID, UUID.
2. **Nested guard/if statements** — Deep nesting makes code hard to follow. Use early returns and guards to keep the happy path left-aligned.
3. **Inconsistent self usage** — Either always omit `self` (preferred) or always use it. Mixing makes code scanning harder and confuses capture semantics.
4. **Overly generic type names** — `Manager`, `Handler`, `Helper`, `Coordinator` are too vague. Names should explain responsibility: `PaymentProcessor`, `EventDispatcher`, `ImageCache`, `NavigationCoordinator`.
5. **Implied access control** — Don't skip access control. Explicit `private`, `public` helps future maintainers understand module boundaries. `internal` is default, so omit it.
Claude Code plugin marketplace for modern Swift/SwiftUI development A specialized AI toolkit for building professional iOS/macOS features with modern Swift 6.2, TCA (The Composable Architecture), and SwiftUI.
Use when building features with TCA (The Composable Architecture), structuring reducers,…
Use when implementing on-device AI with Apple's Foundation Models framework (iOS 26+),…
Use when encountering unfamiliar import statements, exploring dependency APIs, or when user…
Use when writing raw SQL with GRDB, complex joins across 4+ tables, window functions,…
Use when adding haptic feedback for user confirmations (button presses, toggles, purchases),…
Use when implementing iOS 26 features (Liquid Glass, new SwiftUI APIs, WebView, Chart3D),…