关于 uikit-max
uikit-max 是用于 Swift 和 UIKit 项目的代码审查技能,检查正确性、API 现代性、无障碍、性能、并发及项目规范,并只报告实际问题。
主要功能
- 01检查已弃用的 UIKit API
- 02审查视图与 Auto Layout
- 03验证导航和控制器实现
- 04检查无障碍与性能
- 05检查并发和代码整洁度
适用场景
- 01在提交拉取请求前审查 UIKit 改动
- 02发现 iOS 界面的无障碍问题
- 03检查布局与生命周期实现
- 04排查并发问题和已弃用 API
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tornikegomareli/ uikit-agent-skill --skill uikit-max安装后在 Claude Code 中输入/uikit-max确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/accessibility.mdapi.mdconcurrency.mdcontrollers.mddesign.mdhygiene.mdlayout.mdnavigation.mdperformance.mdswift.mdtableview-collectionview.mdviews.md详细介绍
根据正确性、现代 API 用法和项目约定审查 Swift 和 UIKit 代码。仅报告确实存在的问题——不要吹毛求疵或凭空捏造问题。
审查流程:
- 使用
references/api.md检查是否使用了已弃用的 API。 - 使用
references/views.md检查视图、子类化和组合模式是否遵循最佳实践。 - 使用
references/layout.md验证 Auto Layout 用法和约束模式。 - 使用
references/controllers.md确保视图控制器生命周期和架构正确。 - 使用
references/navigation.md确保导航模式现代且易于维护。 - 使用
references/tableview-collectionview.md验证 UITableView 和 UICollectionView 的用法。 - 使用
references/design.md确保代码采用符合 Apple《人机界面指南》的无障碍设计。 - 使用
references/accessibility.md验证无障碍合规性,包括动态字体、VoiceOver 和特征。 - 使用
references/performance.md确保代码运行高效。 - 使用
references/concurrency.md检查并发和线程安全问题。 - 使用
references/swift.md快速验证 Swift 代码。 - 使用
references/hygiene.md进行最终代码规范检查。
如果只进行部分审查,仅加载相关参考文件。
核心说明
- iOS 26 已发布,是最新的 iOS 版本。除非项目另有指定,新代码的最低部署目标应为 iOS 17 或更高版本。
- 目标使用 Swift 6.2 或更高版本,并采用现代 Swift 并发机制。
- 遵循项目的部署目标。 建议使用现代 API 前,先检查其可用性。如果项目面向更早版本的 iOS,请推荐最佳可用替代方案,并使用
if #available检查封装较新的 API。参考文件会标注关键 API 的 iOS 版本(例如“iOS 15+”)。不要建议使用低于项目最低目标版本的 API,除非同时提供回退方案。 - 作为 UIKit 开发者,用户期望使用 UIKit 模式。除非用户明确要求,否则不要建议改用 SwiftUI。
- 未经询问,不要引入第三方框架。
- 将不同类型拆分到不同的 Swift 文件中,不要在同一个文件中放置多个类、结构体或枚举。
- 保持一致的项目结构,并根据应用功能安排文件夹布局。
- 对新代码,优先使用通过 Auto Layout 锚点编写的编程式 UI,而不是 Storyboard 和 XIB;除非项目已广泛使用 Interface Builder。
输出格式
按文件组织审查结果。对于每个问题:
- 标明文件和相关行号。
- 指出违反的规则(例如,“使用
UIAlertController替代UIAlertView”)。 - 展示简短的修改前后代码。
跳过没有问题的文件。最后按优先级总结最值得先处理的改动。
示例输出:
ProfileViewController.swift
第 8 行:使用 UIAlertController 替代已弃用的 UIAlertView。
// Before
let alert = UIAlertView(title: "Error", message: msg, delegate: self, cancelButtonTitle: "OK")
alert.show()
// After
let alert = UIAlertController(title: "Error", message: msg, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default))
present(alert, animated: true)
第 24 行:使用 NSLayoutConstraint.activate 批量激活约束。
// Before
label.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
label.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
// After
NSLayoutConstraint.activate([
label.topAnchor.constraint(equalTo: view.topAnchor),
label.leadingAnchor.constraint(equalTo: view.leadingAnchor)
])
第 42 行:添加约束前设置 translatesAutoresizingMaskIntoConstraints = false。
// Before
view.addSubview(label)
label.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
// After
label.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(label)
NSLayoutConstraint.activate([
label.topAnchor.constraint(equalTo: view.topAnchor)
])
总结
- 已弃用的 API(高): 必须将第 8 行的
UIAlertView替换为UIAlertController。 - 布局(中): 第 24 行逐个激活约束,应改用
NSLayoutConstraint.activate。 - 布局(中): 第 42 行缺少
translatesAutoresizingMaskIntoConstraints,会导致约束冲突。
示例结束。
参考资料
references/api.md— 已弃用的 UIKit API 及其现代替代方案。references/views.md— UIView 生命周期、组合、子类化和自定义绘制。references/layout.md— Auto Layout、布局锚点、UIStackView、固有内容尺寸、安全区域。references/controllers.md— UIViewController 生命周期、容器控制器,以及避免臃肿的视图控制器。references/navigation.md— 导航控制器、标签栏、协调器模式和模态呈现。references/tableview-collectionview.md— 可差分数据源、组合布局、单元格配置和预取。references/design.md— 人机界面指南、UIAppearance、特征集合、深色模式和自适应布局。references/accessibility.md— VoiceOver、动态字体、辅助功能特征、标签和提示。references/performance.md— 离屏渲染、图层优化、图像缓存和主线程性能。references/concurrency.md— 主线程安全、async/await、DispatchQueue 迁移和后台任务。references/swift.md— 现代 Swift 代码、Swift 并发和 Objective-C 互操作。references/hygiene.md— 内存管理、循环引用、KVO/通知清理和 deinit 模式。
评论
支持 Markdown