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