Swift Style

johnrogers/claude-swift-engineering/plugins/swift-engineering/skills/swift-style

by johnrogers1dc2cf4d020bNo license231 starsListed Oct 9, 2026Updated Oct 9, 2026Repository updated 8 months ago

Swift code style conventions for clean, readable code. Use when writing Swift code to ensure consistent formatting, naming, organization, and idiomatic patterns.

Instructions onlySoftware Development
AI-generated overview

Swift code style conventions for clean, readable code, covering naming, formatting, organization and idiomatic patterns.

What it does
Provides a Swift style guide covering naming, the golden path, code organization, spacing, self usage, computed properties, closures, type inference, syntactic sugar, access control, memory management, comments and constants. It also lists common mistakes such as abbreviations, nested guards, inconsistent self usage, overly generic type names and implied access control. It produces guidance rather than files or code.
When to use it
Use when writing or reviewing Swift code and you want consistent formatting, naming and idiomatic patterns. It is also useful for checking common style mistakes before finalizing Swift code.
Requirements
No tools, packages, runtimes, credentials or network access are required; it contains instructions only and ships no scripts.

Swift Style Guide

Code style conventions for clean, readable Swift code.

Core Principles

Clarity > Brevity > Consistency

Code should compile without warnings.

Naming

  • UpperCamelCase — Types, protocols
  • lowerCamelCase — Everything else
  • Clarity at call site
  • No abbreviations except universal (URL, ID)
swift
// Preferredlet maximumWidgetCount = 100func fetchUser(byID id: String) -> User

Golden Path

Left-hand margin is the happy path. Don't nest if statements.

swift
// Preferredfunc process(value: Int?) throws -> Result {    guard let value = value else {        throw ProcessError.nilValue    }    guard value > 0 else {        throw ProcessError.invalidValue    }    return compute(value)}

Code Organization

Use extensions and MARK comments:

swift
class MyViewController: UIViewController {    // Core implementation}
// MARK: - UITableViewDataSourceextension MyViewController: UITableViewDataSource { }

Spacing

  • Braces open on same line, close on new line
  • One blank line between methods
  • Colon: no space before, one space after

Self

Avoid self unless required by compiler.

swift
// Preferredfunc configure() {    backgroundColor = .systemBackground}

Computed Properties

Omit get for read-only:

swift
var diameter: Double {    radius * 2}

Closures

Trailing closure only for single closure parameter.

Type Inference

Let compiler infer when clear. For empty collections, use type annotation:

swift
var names: [String] = []

Syntactic Sugar

swift
// Preferredvar items: [String]var cache: [String: Int]var name: String?

Access Control

  • private over fileprivate
  • Don't add internal (it's the default)
  • Access control as leading specifier

Memory Management

swift
resource.request().onComplete { [weak self] response in    guard let self else { return }    self.updateModel(response)}

Comments

  • Explain why, not what
  • Use // or ///, avoid /* */
  • Keep up-to-date or delete

Constants

Use case-less enum for namespacing:

swift
enum Math {    static let pi = 3.14159}

Common Mistakes

  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.

Source and attribution

Source:johnrogers/claude-swift-engineeringinplugins/swift-engineering/skills/swift-styleat commit1dc2cf4

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal