Skip to content
Development
Skill

/swift-language

Comprehensive modern Swift (6.x) language expertise — concurrency, generics, ownership/performance, macros, API design, error handling, SwiftPM, C/C++/ObjC interop, cross-platform (Linux/Android/embedded/server), and Swift Testing. Use this skill whenever writing, reviewing,

From plugin
swift-tothemax
78 skills
Install
$ npx -y skills add Dev869/swift-tothemax --skill swift-language --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/swift-language

Context preview

The summary Claude sees to decide when to auto-load this skill.

Comprehensive modern Swift (6.x) language expertise — concurrency, generics, ownership/performance, macros, API design, error handling, SwiftPM, C/C++/ObjC interop, cross-platform (Linux/Android/embedded/server), and Swift Testing. Use this skill whenever writing, reviewing,

SKILL.md

swift-language.SKILL.md
name: swift-language
description: Comprehensive modern Swift (6.x) language expertise — concurrency, generics, ownership/performance, macros, API design, error handling, SwiftPM, C/C++/ObjC interop, cross-platform (Linux/Android/embedded/server), and Swift Testing. Use this skill whenever writing, reviewing, refactoring, or debugging ANY Swift code — even a single function — and whenever the user mentions Swift, .swift files, Xcode projects, Swift packages, actors, Sendable, swiftc, or compiler errors from a Swift build. Also use it when choosing between Swift language features or migrating code to a newer Swift version. Not needed for pure SwiftUI layout questions (a dedicated SwiftUI skill may fit better), but DO use it when SwiftUI code involves concurrency, performance, or general language questions.

Swift to the Max

Expert-level guidance for modern Swift. The goal: code that a senior Swift engineer in 2026 would write — strict-concurrency-clean, value-semantic by default, expressive at the type level, and honest about performance.

Version landscape (mid-2026)

| Version | Status | Headline features | |---|---|---| | Swift 5.10 | legacy | last 5.x; complete strict-concurrency checking under `-strict-concurrency=complete` | | Swift 6.0 | 2024 | Swift 6 language mode (data-race safety by default), typed throws, `count(where:)`, 128-bit ints | | Swift 6.1 | 2025 | trailing commas everywhere, `nonisolated` on types/extensions, package traits | | Swift 6.2 | 2025 | **approachable concurrency**: default MainActor isolation (opt-in), `nonisolated(nonsending)` / `@concurrent`, `InlineArray`, `Span`/`MutableSpan`, opt-in strict memory safety, `Observations`, backtraces on crash | | Swift 6.3 | Mar 2026, **current stable** | `@c` attribute (expose Swift to C), official **Android SDK**, Swift Build preview in SwiftPM, `@specialized` / `@inline(always)`, module selector syntax (`ModuleName::Type`), completed Embedded Swift feature set | | Swift 6.4 | WWDC26 beta | `await` in `defer`, `Iterable` protocol (borrowing iteration), `anyAppleOS` availability shorthand, `@diagnose`, Swift Testing ↔ XCTest interop, unified URL implementation |

Default to Swift 6 language mode semantics unless the project's `Package.swift` / build settings say otherwise. Check `// swift-tools-version:` and `swiftLanguageModes:` before assuming. Never emit code using a beta-only (6.4) feature without flagging it as such.

Non-negotiable defaults

These apply to essentially all new Swift code; deviate only when the surrounding codebase clearly does otherwise, and say so.

  • **Value types first.** `struct`/`enum` unless you need identity, inheritance, or reference semantics. If you reach for `class`, ask whether it should be an `actor` or `final class`.
  • **Strict concurrency clean.** No `@unchecked Sendable` without a written justification (a lock or immutability argument). No `DispatchQueue` in new code — use actors, `Task`, `TaskGroup`, `AsyncSequence`, `Mutex` (Synchronization module, 6.0+).
  • **`some` before `any`.** Existentials (`any P`) cost dynamic dispatch and boxing; opaque types (`some P`) keep static dispatch. Use `any` only when you genuinely need heterogeneity.
  • **Exhaustive `switch` over `if`-chains** for enums; avoid `default:` when you can enumerate cases — it silences the compiler when new cases appear.
  • **No force unwraps / force try in production paths.** `!` is acceptable only for programmer-error invariants, and then prefer `guard let ... else { preconditionFailure("why") }` so the invariant is documented.
  • **Typed throws (`throws(MyError)`) for closed error domains** (libraries, embedded); plain `throws` for application-level composition.
  • **`guard` for early exit, one happy path** at low indentation.
  • **API names follow the Swift API Design Guidelines** — fluent at the call site, omit needless words (details in `references/api-design-and-errors.md`).

Idiom translation table

When reviewing or migrating, rewrite the left column on sight:

| Legacy | Modern | |---|---| | `DispatchQueue.global().async { ... }` | `Task { ... }` / `Task.detached` (rare) / `@concurrent` func | | `DispatchQueue.main.async { ... }` | `@MainActor` function or `MainActor.run` | | completion handlers `(Result<T, Error>) -> Void` | `async throws -> T` (bridge with `withCheckedThrowingContinuation`) | | `NSLock` / `os_unfair_lock` | `Mutex<State>` (Synchronization) or an `actor` | | `class Foo: NSObject` + KVO | `@Observable` (Observation framework) | | `Array` fixed-size hot buffers | `InlineArray<N, T>` (6.2+) | | `UnsafeBufferPointer` parameters | `Span<T>` / `RawSpan` (6.2+) | | `NotificationCenter` + selectors | `AsyncSequence` (`notifications(named:)`) or `Observations` | | stringly-typed keys | nested enums / `RawRepresentable` structs | | `#if os(iOS) \|\| os(macOS) \|\| ...` across all Apple OSes | `anyAppleOS` (6.4+, flag as beta) |

Workflow

1. **Detect the project's Swift version and language mode** first (`Package.swift`, `.xcodeproj` settings, `swift --version`). Guidance shifts meaningfully between 5.x, 6.0/6.1, and 6.2+ (default MainActor isolation may be on). 2. **Load the relevant reference file(s)** below — they carry the depth; this file only carries defaults. 3. **Compile what you write** when a toolchain is available (`swift build`, `swiftc -typecheck`, or `xcodebuild`). Swift's type checker is the cheapest reviewer you have. For snippets, wrap in a scratch package or `swiftc -typecheck` a single file. 4. **Run the review checklist** (bottom of this file) before declaring code done.

Reference routing

Read the file whose domain the task touches. Multiple may apply; read all that do.

| Topic | File | Read when… | |---|---|---| | Concurrency | `references/concurrency.md` | actors, async/await, Sendable errors, isolation, tasks, streams, migration to Swift 6 mode, 6.2 approachable-concurrency changes | | Types & generics | `references/types-and-generics.md` | protocols, `so

Read more
Ships withswift-tothemax

A Claude Code plugin covering every facet of Swift and Apple-platform development, current to mid-2026 (Swift 6.3 stable / 6.4 beta, Xcode 26.6, iOS 27 beta).

Get the whole plugin
Stats
7
Stars
0
Forks
Maintained
Maintenance
Swift
Language
MIT
License
2mo ago
Last commit
2mo ago
Created

Repo: Dev869/swift-tothemax

Other skills on swift-tothemax.