$npx -y skills add twostraws/SwiftUI-Agent-Skill --skill swiftui-proComprehensively reviews SwiftUI code for best practices on modern APIs, maintainability, and performance. Use when reading, writing, or reviewing SwiftUI projects.
| 1 | Review Swift and SwiftUI code for correctness, modern API usage, and adherence to project conventions. Report only genuine problems - do not nitpick or invent issues. |
| 2 | |
| 3 | Review process: |
| 4 | |
| 5 | 1. Check for deprecated API using `references/api.md`. |
| 6 | 1. Check that views, modifiers, and animations have been written optimally using `references/views.md`. |
| 7 | 1. Validate that data flow is configured correctly using `references/data.md`. |
| 8 | 1. Ensure navigation is updated and performant using `references/navigation.md`. |
| 9 | 1. Ensure the code uses designs that are accessible and compliant with Apple’s Human Interface Guidelines using `references/design.md`. |
| 10 | 1. Validate accessibility compliance including Dynamic Type, VoiceOver, and Reduce Motion using `references/accessibility.md`. |
| 11 | 1. Ensure the code is able to run efficiently using `references/performance.md`. |
| 12 | 1. Quick validation of Swift code using `references/swift.md`. |
| 13 | 1. Final code hygiene check using `references/hygiene.md`. |
| 14 | |
| 15 | If doing a partial review, load only the relevant reference files. |
| 16 | |
| 17 | |
| 18 | ## Core Instructions |
| 19 | |
| 20 | - iOS 26 exists, and is the default deployment target for new apps. |
| 21 | - Target Swift 6.2 or later, using modern Swift concurrency. |
| 22 | - As a SwiftUI developer, the user will want to avoid UIKit unless requested. |
| 23 | - Do not introduce third-party frameworks without asking first. |
| 24 | - Break different types up into different Swift files rather than placing multiple structs, classes, or enums into a single file. |
| 25 | - Use a consistent project structure, with folder layout determined by app features. |
| 26 | |
| 27 | |
| 28 | ## Output Format |
| 29 | |
| 30 | Organize findings by file. For each issue: |
| 31 | |
| 32 | 1. State the file and relevant line(s). |
| 33 | 2. Name the rule being violated (e.g., "Use `foregroundStyle()` instead of `foregroundColor()`"). |
| 34 | 3. Show a brief before/after code fix. |
| 35 | |
| 36 | Skip files with no issues. End with a prioritized summary of the most impactful changes to make first. |
| 37 | |
| 38 | Example output: |
| 39 | |
| 40 | ### ContentView.swift |
| 41 | |
| 42 | **Line 12: Use `foregroundStyle()` instead of `foregroundColor()`.** |
| 43 | |
| 44 | ```swift |
| 45 | // Before |
| 46 | Text("Hello").foregroundColor(.red) |
| 47 | |
| 48 | // After |
| 49 | Text("Hello").foregroundStyle(.red) |
| 50 | ``` |
| 51 | |
| 52 | **Line 24: Icon-only button is bad for VoiceOver - add a text label.** |
| 53 | |
| 54 | ```swift |
| 55 | // Before |
| 56 | Button(action: addUser) { |
| 57 | Image(systemName: "plus") |
| 58 | } |
| 59 | |
| 60 | // After |
| 61 | Button("Add User", systemImage: "plus", action: addUser) |
| 62 | ``` |
| 63 | |
| 64 | **Line 31: Avoid `Binding(get:set:)` in view body - use `@State` with `onChange()` instead.** |
| 65 | |
| 66 | ```swift |
| 67 | // Before |
| 68 | TextField("Username", text: Binding( |
| 69 | get: { model.username }, |
| 70 | set: { model.username = $0; model.save() } |
| 71 | )) |
| 72 | |
| 73 | // After |
| 74 | TextField("Username", text: $model.username) |
| 75 | .onChange(of: model.username) { |
| 76 | model.save() |
| 77 | } |
| 78 | ``` |
| 79 | |
| 80 | ### Summary |
| 81 | |
| 82 | 1. **Accessibility (high):** The add button on line 24 is invisible to VoiceOver. |
| 83 | 2. **Deprecated API (medium):** `foregroundColor()` on line 12 should be `foregroundStyle()`. |
| 84 | 3. **Data flow (medium):** The manual binding on line 31 is fragile and harder to maintain. |
| 85 | |
| 86 | End of example. |
| 87 | |
| 88 | |
| 89 | ## References |
| 90 | |
| 91 | - `references/accessibility.md` - Dynamic Type, VoiceOver, Reduce Motion, and other accessibility requirements. |
| 92 | - `references/api.md` - updating code for modern API, and the deprecated code it replaces. |
| 93 | - `references/design.md` - guidance for building accessible apps that meet Apple’s Human Interface Guidelines. |
| 94 | - `references/hygiene.md` - making code compile cleanly and be maintainable in the long term. |
| 95 | - `references/navigation.md` - navigation using `NavigationStack`/`NavigationSplitView`, plus alerts, confirmation dialogs, and sheets. |
| 96 | - `references/performance.md` - optimizing SwiftUI code for maximum performance. |
| 97 | - `references/data.md` - data flow, shared state, and property wrappers. |
| 98 | - `references/swift.md` - tips on writing modern Swift code, including using Swift Concurrency effectively. |
| 99 | - `references/views.md` - view structure, composition, and animation. |