← ClaudeAtlas

review-swiftlisted

Swift-specific code review focused on JUDGMENT-level design a linter and the compiler can't decide — state modeling with enums and value types (make invalid states unrepresentable), optional and error modeling, concurrency isolation intent, ARC ownership, SwiftUI identity/lifetime/dependencies, and escape hatches (`!`, `as!`, `try!`, `@unchecked Sendable`) that compile but hide a modeling problem. Deliberately does NOT duplicate SwiftLint, swift-format, or Swift 6 strict-concurrency diagnostics. Auto-invoked by `code-review` on Swift projects. Triggers "review swift", "swift review", "swiftui review", "swift concurrency review".
nielsmadan/skills · ★ 0 · Code & Development · score 75
Install: claude install-skill nielsmadan/skills
<!-- Generated from https://github.com/nielsmadan/agentic-coding — edits here are overwritten. --> # Review Swift Swift review that covers what **the compiler and SwiftLint cannot decide for you** — how state is *modeled*, whether optionals and errors carry the right information, whether isolation and ownership reflect real intent, and whether an escape hatch is papering over a design problem. Run on `.swift` files. Complements `review-cleancode` (SOLID/DRY/smells) — don't repeat it. ## Relationship to the toolchain (read first) Three layers already cover the mechanical work. Your job is what's left. **1. The compiler.** In Swift 6 language mode (or `-strict-concurrency=complete`), data-race safety is *enforced*: non-`Sendable` values crossing isolation boundaries, non-isolated global/static mutable state, actor state accessed from another domain, `deinit` isolation, `@Sendable` closure captures. Never report these as review findings when that mode is on. **2. SwiftLint — but check what's actually enabled.** Many safety-relevant rules are **opt-in**, so in a default config they do *not* run. Verified against SwiftLint 0.55.1 (`swiftlint rules`): | Rule | Opt-in? | |---|---| | `force_cast`, `force_try` | **on by default** | | `identifier_name`, `type_name`, `line_length`, `function_body_length`, `type_body_length`, `cyclomatic_complexity` | on by default | | `redundant_void_return`, `redundant_optional_initialization` | on by default | | `force_unwrapping`, `implicitly