Skip to main content
skill CX Codex

swift-style — Claude Code skill: Swift style and installation

This skill gives an AI agent conventions for naming, formatting, and organizing Swift code. Use it when adding code or cleaning up an existing Swift file.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add johnrogers/claude-swift-engineering --skill swift-style -a claude-code
Open on GitHub

What swift-style does

The guide sets naming rules for Swift types and other identifiers, and favors descriptive words over abbreviations; URL, ID, and UUID are exceptions. It also recommends keeping the main execution path unindented with guard checks, and arranging related code in extensions with MARK comments.

Other sections cover whitespace, self, computed properties, closures, type inference, access control, and memory management. Comments should explain why a choice was made rather than restate the implementation. The guide says code should compile without warnings, so warning-producing edits conflict with its stated standard.

What it helps with

  • align Swift type and variable names with the guide
  • replace nested conditionals with early exits and guard
  • group implementations into extensions and MARK sections
  • review self usage and access modifiers

Example prompts for the agent

  • Apply the swift-style conventions to this Swift file.
  • Check this Swift code for naming and nesting issues covered by the skill.
  • Reorganize this type's methods and extensions using the swift-style rules.

How to install swift-style

1Skills CLI (Vercel)

npx skills add johnrogers/claude-swift-engineering --skill swift-style -a claude-code

2Manually: put the files in place

~/.claude/skills/swift-style/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/swift-style/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about swift-style

How do I install swift-style in Claude Code?

Run npx skills add johnrogers/claude-swift-engineering --skill swift-style -a claude-code. The skill file is placed at ~/.claude/skills/swift-style/SKILL.md.

What does swift-style do?

It gives an agent conventions for Swift naming, formatting, control flow, code organization, and access control.

Which abbreviations does swift-style allow?

The guide favors fully spelled-out names and permits URL, ID, and UUID as exceptions. It also recommends consistent handling of self.

Source text

SKILL.md · MIT
---
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.
---

# 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**, 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.

© johnrogers · MIT · johnrogers/claude-swift-engineering

Similar skills

Everything for Mobile →

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor