
SwiftUI Pro
SkillHacking with Swift 作者 Paul Hudson 编写的 SwiftUI 技能:审查并改进 SwiftUI 代码,覆盖现代与已弃用 API、性能、导航与布局、状态管理和 VoiceOver 无障碍,面向 iOS 26 与 Swift 6.2。
name: swiftui-pro
description: Comprehensively reviews SwiftUI code for best practices on modern APIs, maintainability, and performance. Use when reading, writing, or reviewing SwiftUI projects.
license: MIT
metadata:
author: Paul Hudson
version: "2.0.0"
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.
Include deprecated API in review findings. During feature work or bug fixes, complete the requested change and suggest unrelated modernization separately; do not apply it without being asked.
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. - Review layout behavior as windows resize, including iPad multitasking and folding iPhone Duo, using
references/resizability.md. - Validate accessibility compliance including Dynamic Type, VoiceOver, and Reduce Motion using
references/accessibility.md. - Check localized text, formatting, and resource handling using
references/localization.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.
Keep references/performance-plus.md out of routine reviews. Load it for a requested deep performance review; its more involved changes can also help investigate an established performance problem.
Core Instructions
- iOS 27 exists, and is the default deployment target for new apps.
- Xcode 27.1 and the corresponding 27.1 platform releases are available. Do not dismiss their APIs as speculative.
- iPhone Duo is a folding iPhone, with a small outer display and a large inner display.
- Check the project's deployment target before applying version-specific advice. Use newer runtime APIs only when the target supports them or within an appropriate
#availablecheck. Keep the existing target unchanged. Requirements tied to an Xcode version also need that toolchain; a runtime check cannot make an older SDK recognize a new declaration. - Target Swift 6.4 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 offoregroundColor()"). - 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: Give the button a descriptive label so VoiceOver explains its action.
// Before
Button(action: addUser) {
Image(systemName: "plus")
}
// After
Button("Add User", systemImage: "plus", action: addUser)
Line 31: Avoid Binding(get:set:) in view body – bind to the property directly and move the setter's side effect into onChange().
// Before
TextField("Username", text: Binding(
get: { model.username },
set: { newValue in model.username = newValue; model.save() }
))
// After
TextField("Username", text: $model.username)
.onChange(of: model.username) {
model.save()
}
Use onChange() when saving should follow changes to the username, including programmatic changes. Equal-value assignments will not trigger a save.
Summary
- Accessibility (high): The add button needs an “Add User” label; the symbol’s default label does not explain what will be added.
- Deprecated API (medium):
foregroundColor()on line 12 should beforegroundStyle(). - Data flow (medium): The manual binding on line 31 is fragile and harder to maintain.
End of example.
References
references/accessibility.md- Dynamic Type, VoiceOver, Reduce Motion, and other accessibility requirements.references/api.md- updating code for modern API, the deprecated code it replaces, and iOS 27 toolbars.references/design.md- guidance for building accessible apps that meet Apple's Human Interface Guidelines.references/hygiene.md- making code compile cleanly and be maintainable in the long term.references/localization.md- localizable text, resource bundles, and locale-aware presentation.references/navigation.md- navigation usingNavigationStack/NavigationSplitView, plus alerts, confirmation dialogs, and sheets.references/performance.md- optimizing SwiftUI code for maximum performance.references/performance-plus.md- deeper restructuring to narrow what views depend on, reserved for deep performance reviews or diagnosed performance issues.references/resizability.md- changing window sizes, adaptive bars, safe areas, and iPhone Duo layouts.references/data.md- data flow, shared state, and property wrappers.references/swift.md- tips on writing modern Swift code, including using Swift Concurrency effectively.references/views.md- view structure, composition, animation, reordering, and swipe actions.
相关资源

Build iOS Apps
PluginOpenAI 官方 Codex 插件,覆盖 SwiftUI 界面与重构、App Intents、模拟器调试、性能剖析与内存泄漏排查,内置 XcodeBuildMCP。需要 macOS 与 Xcode,仅支持 Codex。
openai/plugins7.5k
Build iOS Apps
SkillOpenAI 官方 iOS 技能组:SwiftUI 界面模式与视图重构、iOS 26 Liquid Glass、App Intents、性能审计与 ETTrace 采样、用 memgraph 排查内存泄漏、模拟器调试。需要 macOS 与 Xcode,调试类技能依赖 XcodeBuildMCP。
openai/plugins7.5k
SwiftUI UI Patterns
SkillSwiftUI 界面构建的实践指南:按状态归属选择 @State、@Binding、@Observable 或 @Environment,用 TabView、NavigationStack 与 sheet 搭建应用骨架,用 .task 处理异步加载,拆小视图、写 Preview,并列出常见反模式;可按组件索引查阅具体组件的用法与示例。
Dimillian/Skills4k
Apple Design
Skill以 Apple 人机界面指南为依据(内置从 developer.apple.com 抓取的 123 页原文)审查移动端与桌面应用的界面设计,从无障碍、平台惯例等五个角度逐项引用条款给出意见,同时指出模板化、缺少个性的地方。可审截图、设计稿、Figma 导出或界面代码,适用于 SwiftUI、UIKit、Flutter、React Native、Tauri、Electron。
dickwu/apple-design-skill1.5k
Swift LSP
Plugin为 Claude Code 接入 SourceKit-LSP,让 agent 在 Swift 代码里跳转定义、查找引用、查看符号等。需先安装 Swift 工具链或 Xcode。Anthropic 官方插件。
anthropics/claude-plugins-official40.4k
SwiftLint
CLISwift 代码风格与规范检查工具,规则大多基于 SwiftSyntax,用 .swiftlint.yml 配置,支持 --fix 自动修正,可接入 Xcode 构建阶段与 SwiftPM 插件。
realm/SwiftLint19.8k