SwiftUI-Agent-Skill swiftui-pro
Comprehensively reviews SwiftUI code for best practices on modern APIs, maintainability, and performance. Use when reading, writing, or reviewing SwiftUI projects.
git clone https://github.com/twostraws/SwiftUI-Agent-Skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/twostraws/SwiftUI-Agent-Skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/swiftui-pro" ~/.claude/skills/twostraws-swiftui-agent-skill-swiftui-pro && rm -rf "$T"
swiftui-pro/SKILL.mdReview 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
.references/api.md - Check that views, modifiers, and animations have been written optimally using
.references/views.md - Validate that data flow is configured correctly using
.references/data.md - Ensure navigation is updated and performant using
.references/navigation.md - Ensure the code uses designs that are accessible and compliant with Apple’s Human Interface Guidelines using
.references/design.md - Validate accessibility compliance including Dynamic Type, VoiceOver, and Reduce Motion using
.references/accessibility.md - Ensure the code is able to run efficiently using
.references/performance.md - Quick validation of Swift code using
.references/swift.md - Final code hygiene check using
.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
instead offoregroundStyle()
").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
instead of foregroundStyle()
.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
in view body - use Binding(get:set:)
with @State
instead.onChange()
// 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):
on line 12 should beforegroundColor()
.foregroundStyle() - Data flow (medium): The manual binding on line 31 is fragile and harder to maintain.
End of example.
References
- Dynamic Type, VoiceOver, Reduce Motion, and other accessibility requirements.references/accessibility.md
- updating code for modern API, and the deprecated code it replaces.references/api.md
- guidance for building accessible apps that meet Apple’s Human Interface Guidelines.references/design.md
- making code compile cleanly and be maintainable in the long term.references/hygiene.md
- navigation usingreferences/navigation.md
/NavigationStack
, plus alerts, confirmation dialogs, and sheets.NavigationSplitView
- optimizing SwiftUI code for maximum performance.references/performance.md
- data flow, shared state, and property wrappers.references/data.md
- tips on writing modern Swift code, including using Swift Concurrency effectively.references/swift.md
- view structure, composition, and animation.references/views.md