关于 watchos-code-review
面向开发者的 watchOS 代码审查技能,涵盖生命周期、复杂功能、连接与性能。它提供专项参考资料、按序执行的证据门槛和统一的问题格式。
主要功能
- 01生命周期与后台任务检查
- 02复杂功能和时间线检查
- 03WatchConnectivity 审查指引
- 04性能与电池检查
- 05证据门槛和问题格式
适用场景
- 01审查 watchOS 生命周期处理
- 02检查复杂功能的时间线实现
- 03检查 WatchConnectivity 消息与文件传输代码
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ existential-birds/ beagle --skill watchos-code-review安装后在 Claude Code 中输入/watchos-code-review确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/complications.mdconnectivity.mdlifecycle.mdperformance.md详细介绍
watchOS 代码审查
快速参考
| 问题类型 | 参考资料 |
|---|---|
| App 生命周期、场景、后台模式、扩展运行时 | references/lifecycle.md |
| ClockKit、WidgetKit、时间线提供程序、智能叠放 | references/complications.md |
| WCSession、消息传递、文件传输、可达性 | references/connectivity.md |
| 内存限制、后台刷新、电池优化 | references/performance.md |
审查清单
- 使用 SwiftUI App 协议,并通过
@WKApplicationDelegateAdaptor处理生命周期事件 - 从根视图读取
scenePhase(而非始终处于.active状态的工作表或模态视图) - 仅在 App 处于活动状态时启动
WKExtendedRuntimeSession(不能从后台启动) - 在
applicationDidFinishLaunching中恢复锻炼会话(不能只在代理中恢复) - 后台任务的调度间隔至少为 5 分钟;完成当前任务前先调度下一个任务
- 后台网络请求使用
URLSessionDownloadTask(而非DataTask) - 对于 watchOS 9+ 的复杂功能,使用 WidgetKit 而非 ClockKit
- 时间线包含未来条目(不只是当前状态);避免出现空档
- 实现
TimelineEntryRelevance,以便在智能叠放中确定优先级 - 在调用
activate()前设置 WCSession 代理;使用单例模式 - 调用
sendMessage前检查isReachable;关键数据使用transferUserInfo - 在代理回调返回前同步移动收到的文件
何时加载参考资料
- 审查 App 生命周期、后台模式或扩展会话 -> lifecycle.md
- 审查复杂功能、小组件或时间线提供程序 -> complications.md
- 审查 WCSession、iPhone 与 Apple Watch 通信 -> connectivity.md
- 审查内存、电池或性能问题 -> performance.md
输出格式
按以下格式报告问题:[FILE:LINE] ISSUE_TITLE
示例:
[WatchApp.swift:18] WKExtendedRuntimeSession 在 App 未处于活动状态时启动[ConnectivityManager.swift:42] 在设置代理之前调用 WCSession.activate()[ComplicationTimeline.swift:67] 时间线没有未来条目
硬性门槛(报告前)
对于准备报告的每项发现,按顺序完成以下步骤。满足通过条件前,不得进入下一步。
- 位置依据 — 发现中包含从当前文件内容复制的
[FILE:LINE](或行范围);该路径在此仓库中有效。 - 阅读相关范围 — 阅读完整的相关代码单元:负责该行为的
View主体、WKApplicationDelegate/ 场景方法、TimelineProvider实现、WCSessionDelegate回调,或锻炼/后台任务处理程序;不能只看差异片段。 - watchOS 或配对相关主张(仅当发现依赖于后台模式、复杂功能/时间线约定、
WCSession可达性或传输语义、锻炼或扩展运行时规则,或设备特定限制时)— 指明一项已检查的具体依据(例如,用于确认后台模式的Info.plist/ target capabilities、源码中的WK*/WCSession调用顺序、entitlements,或你在快速参考对应文档中阅读的小节),或者将该事项降级为审查问题中的开放问题。 - 协议 — 满足 review-verification-protocol 中针对本事项的报告前步骤(若不满足,则不得报告发现)。
每项报告的发现均使用 [FILE:LINE] ISSUE_TITLE 格式。硬性门槛 4 是此技能对应审查类型的完整报告前检查清单。
审查问题
- 应用是否使用带有委托适配器的现代 SwiftUI 生命周期?
- 后台任务是否正确完成(调用
setTaskCompletedWithSnapshot)? isLuminanceReduced为true时,是否降低了 UI 更新频率?- WatchConnectivity 委托回调是否分派到主线程?
TabView是否嵌套在另一个TabView中?(watchOS 上会导致内存泄漏)
评论
支持 Markdown