Claude Skills
CollectionsCompareWorkflowsNominate
Sign inSign up
© 2026 Curated Agent Skills·Learn more about Agent Skills
Back to repository

swift-style

verified

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

View on GitHub

Marketplace

claude-swift-engineering

johnrogers/claude-swift-engineering

Plugin

swift-engineering

development

Repository

johnrogers/claude-swift-engineering
93stars

plugins/swift-engineering/skills/swift-style/SKILL.md

Last Verified

February 5, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/johnrogers/claude-swift-engineering/blob/main/plugins/swift-engineering/skills/swift-style/SKILL.md -a claude-code --skill swift-style

Installation paths:

Claude
.claude/skills/swift-style/
Powered by add-skill CLI

Instructions

# 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
// Preferred
let maximumWidgetCount = 100
func fetchUser(byID id: String) -> User
```

## Golden Path

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

```swift
// 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)
}
```

## Code Organization

Use extensions and MARK comments:

```swift
class MyViewController: UIViewController {
    // Core implementation
}

// MARK: - UITableViewDataSource
extension 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
// Preferred
func 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
// Preferred
var 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**, n

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
3003 chars