
Swift Language
Apply modern Swift language patterns and idioms for non-concurrency, non-SwiftUI code.
Install
npx skills add dpearson2699/swift-ios-skills --skill swift-language -g -a claude-code -y- Repository
- dpearson2699/swift-ios-skills1.3k
- Category
- Design
- Updated
- 3mo ago
- License
- See repository
- Context cost
- Mediumabout 3,000 tokens
- Runs scripts
- No, instructions only
What it does
Apply modern Swift language patterns and idioms for non-concurrency, non-SwiftUI code. Covers if/switch expressions (Swift 5.9+), typed throws (Swift 6+), result builders, property wrappers, opaque and existential types (some vs any), guard patterns, Never type, Regex builders (Swift 5.7+), basic Codable shaping (CodingKeys, custom decoding, nested containers), modern collection APIs (count(where:), contains(where:), replacing()), basic FormatStyle usage, and string interpolation patterns. Use when writing core Swift code involving generics, protocols, enums, closures, or modern language features; route deep Codable to swift-codable, detailed formatting/localization to swift-formatstyle, and API naming to swift-api-design-guidelines.
Swift Language Patterns
Apply current Swift language syntax without changing behavior or evaluation order.
Route deep decoding to swift-codable, formatting to swift-formatstyle, naming
to swift-api-design-guidelines, concurrency to swift-concurrency, and SwiftUI
state/view work to swiftui-patterns.
Contents
- If/Switch Expressions
- Typed Throws
- Result Builders
- Property Wrappers
- Opaque and Existential Types
- Guard Patterns
- Never Type
- Regex Builders
- Codable Best Practices
- Modern Collection APIs
- FormatStyle
- String Interpolation
- Common Mistakes
- Review Checklist
- References
If/Switch Expressions
For modernization, pin current behavior and evaluation order, make one semantic rewrite, compile the affected module, and run focused fixtures/tests. Fix any change before continuing; repeat until behavior is preserved.
Swift 5.9+ allows if and switch as expressions that return values. Use them
to assign, return, or initialize directly.
// Assign from if expression
let icon = if isComplete { "checkmark.circle.fill" } else { "circle" }
// Assign from switch expression
let label = switch status {
case .draft: "Draft"
case .published: "Published"
case .archived: "Archived"
}
// Works in return position
func badgeText(for priority: Priority) -> String {
switch priority {
case .high: "High"
case .medium: "Medium"
case .low: "Low"
}
}
Rules:
- Every branch must produce a value of the same type.
- Multi-statement branches are not allowed -- each branch is a single expression.
- Wrap in parentheses when used as a function argument to avoid ambiguity.


