关于 swiftui-pro
swiftui-pro 是用于审查 Swift 和 SwiftUI 代码的 skill,面向开发者与代码审查流程。它按参考指南检查 API、数据流、导航、无障碍、性能等问题,并要求只报告真实问题。
主要功能
- 01检查弃用 API 与现代用法
- 02审查视图、动画和数据流
- 03检查导航与窗口适配
- 04评估无障碍与本地化
- 05按文件提供修复建议
适用场景
- 01审查 SwiftUI 功能变更
- 02定位代码中的无障碍问题
- 03检查多窗口尺寸下的布局
- 04进行专项性能审查
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ twostraws/ swiftui-agent-skill --skill swiftui-pro安装后在 Claude Code 中输入/swiftui-pro确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlassets/swiftui-pro-icon.svgreferences/accessibility.mdapi.mddata.mddesign.mdhygiene.mdlocalization.mdnavigation.mdperformance-plus.mdperformance.mdresizability.mdswift.mdviews.md详细介绍
审查 Swift 和 SwiftUI 代码的正确性、现代 API 用法,以及是否遵循项目规范。只报告确实存在的问题——不要吹毛求疵或凭空捏造问题。
审查结果中包括已弃用的 API。在开发功能或修复错误时,完成所请求的更改,并将无关的现代化建议单独提出;未经要求不要应用这些建议。
审查流程:
- 使用
references/api.md检查已弃用的 API。 - 使用
references/views.md检查视图、修饰符和动画的编写是否最优。 - 使用
references/data.md验证数据流配置是否正确。 - 使用
references/navigation.md确保导航已更新且性能良好。 - 使用
references/design.md确保代码采用无障碍设计,并符合 Apple 人机界面指南。 - 使用
references/resizability.md检查窗口调整大小时的布局表现,包括 iPad 多任务处理和折叠式 iPhone Duo。 - 使用
references/accessibility.md验证无障碍合规性,包括动态字体、VoiceOver 和减少动态效果。 - 使用
references/localization.md检查本地化文本、格式和资源处理。 - 使用
references/performance.md确保代码运行高效。 - 使用
references/swift.md快速验证 Swift 代码。 - 使用
references/hygiene.md进行最终代码规范检查。
如果只进行部分审查,请仅加载相关参考文件。
日常审查不要加载 references/performance-plus.md。只有在用户要求深入性能审查时才加载;其中更复杂的更改也有助于排查已确认的性能问题。
核心指令
- iOS 27 已发布,是新应用的默认部署目标。
- Xcode 27.1 及相应的 27.1 平台版本均已发布。不要将其 API 误认为尚未发布。
- iPhone Duo 是一款折叠式 iPhone,配有小尺寸外屏和大尺寸内屏。
- 应用版本相关建议前,先检查项目的部署目标。仅当部署目标支持较新的运行时 API,或在适当的
#available检查中使用时,才采用这些 API。保持现有部署目标不变。要求特定 Xcode 版本的功能也需要对应的工具链;运行时检查无法让较旧的 SDK 识别新的声明。 - 目标是使用现代 Swift 并发功能,面向 Swift 6.4 或更高版本。
- 作为 SwiftUI 开发者,用户会倾向于避免使用 UIKit,除非另有要求。
- 未经事先询问,不要引入第三方框架。
- 将不同类型分别放在不同的 Swift 文件中,不要在同一个文件中放置多个结构体、类或枚举。
- 保持一致的项目结构,文件夹布局按应用功能组织。
输出格式
按文件组织问题。针对每个问题:
- 写明文件和相关行号。
- 指出违反的规则(例如:“使用
foregroundStyle()替代foregroundColor()”)。 - 简要展示修改前后的代码。
没有问题的文件不必列出。最后按优先级总结影响最大的待改动项。
输出示例:
ContentView.swift
第 12 行:使用 foregroundStyle() 替代 foregroundColor()。
// Before
Text("Hello").foregroundColor(.red)
// After
Text("Hello").foregroundStyle(.red)
第 24 行:为按钮添加描述性标签,让 VoiceOver 能说明其操作。
// Before
Button(action: addUser) {
Image(systemName: "plus")
}
// After
Button("Add User", systemImage: "plus", action: addUser)
第 31 行:避免在视图主体中使用 Binding(get:set:)——直接绑定到属性,并将 setter 的副作用移到 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()
}
如果保存操作应随用户名变化而触发(包括程序化更改),请使用 onChange()。赋值与原值相同则不会触发保存。
总结
- 无障碍(高): 添加按钮需要添加“添加用户”标签;该符号的默认标签无法说明要添加什么。
- 已弃用 API(中): 第 12 行的
foregroundColor()应替换为foregroundStyle()。 - 数据流(中): 手动创建的绑定较脆弱,也更难维护。
示例结束。
参考资料
references/accessibility.md- Dynamic Type、VoiceOver、Reduce Motion 及其他无障碍要求。references/api.md- 更新代码以使用现代 API、替代的弃用代码,以及 iOS 27 工具栏。references/design.md- 构建符合 Apple 人机界面指南的无障碍应用的指导。references/hygiene.md- 让代码顺利编译,并确保其长期可维护。references/localization.md- 可本地化文本、资源包和适应地区设置的呈现方式。references/navigation.md- 使用NavigationStack/NavigationSplitView进行导航,以及警报、确认对话框和工作表。references/performance.md- 优化 SwiftUI 代码以实现最高性能。references/performance-plus.md- 深入重构,以缩小视图依赖的范围;仅用于深入性能审查或已诊断的性能问题。references/resizability.md- 更改窗口大小、自适应栏、安全区域和 iPhone Duo 布局。references/data.md- 数据流、共享状态和属性包装器。references/swift.md- 编写现代 Swift 代码的技巧,包括有效使用 Swift Concurrency。references/views.md- 视图结构、组合、动画、重新排序和滑动操作。
评论
支持 Markdown