关于 widgetkit-code-review
widgetkit-code-review 是用于审查 Apple WidgetKit 代码的技能,提供时间线、视图、意图和性能方面的检查清单与参考资料。报告问题前须满足证据及平台相关核验门槛。
主要功能
- 01检查时间线与刷新策略
- 02检查 Widget 尺寸及深层链接
- 03检查意图配置
- 04检查内存、缓存与刷新预算
- 05报告前核验问题证据
适用场景
- 01审查 TimelineProvider 实现
- 02检查不同尺寸下的 Widget 行为
- 03评估可配置 Widget 的改动
- 04排查 Widget 内存或刷新问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ existential-birds/ beagle --skill widgetkit-code-review安装后在 Claude Code 中输入/widgetkit-code-review确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/intents.mdperformance.mdtimeline.mdviews.md详细介绍
WidgetKit 代码审查
快速参考
| 问题类型 | 参考资料 |
|---|---|
| TimelineProvider、entries、重新加载策略 | references/timeline.md |
| Widget family、containerBackground、深层链接 | references/views.md |
| AppIntentConfiguration、EntityQuery、@Parameter | references/intents.md |
| 刷新预算、内存限制、缓存 | references/performance.md |
审查清单
-
placeholder(in:)立即返回,不执行异步操作 - Timeline 条目之间至少间隔 5 分钟
-
getSnapshot检查context.isPreview,以支持图库预览 - 使用
containerBackground(for:)以兼容 iOS 17+ - systemSmall 使用
widgetURL(而非 Link) - 不使用 Button 视图(改用 Link 或 widgetURL)
- Widget 视图中不使用 AsyncImage 或 UIViewRepresentable
- 图像已缩小采样至 Widget 显示尺寸(约 30MB 限制)
- 已配置 App Groups,以便在应用和 Widget 之间共享数据
- 对于非可选参数,EntityQuery 实现
defaultResult() - 更新后,新的 intent 参数能处理现有 Widget 中的 nil 值
- 策略性地调用
reloadTimelines(而非每次数据变化时都调用)
何时加载参考资料
- TimelineProvider 实现或刷新问题 -> timeline.md
- Widget 尺寸、锁定屏幕、containerBackground -> views.md
- 可配置 Widget、AppIntent 迁移 -> intents.md
- 内存问题、缓存、预算管理 -> performance.md
审查问题
- 系统延迟刷新时,Widget 是否提供备用条目?
- 是否妥善处理锁定屏幕的 family(accessoryCircular/Rectangular/Inline)?
- 从 IntentConfiguration 迁移是否会导致现有用户的 Widget 无法正常工作?
- Timeline 是否填充了未来的条目,还是依赖频繁刷新?
- 是否通过 App Groups 缓存数据,以供 Widget 访问?
硬性关卡(报告前)
对于每项拟报告的问题,必须按顺序完成以下步骤。满足通过条件前,不得进入下一步。
- 位置凭据 — 问题中包含从当前文件内容复制的
[FILE:LINE](或行范围);该路径在此仓库中有效。 - 读取相关代码范围 — 阅读完整的周边实现:
TimelineProvider(包括相关的placeholder、getSnapshot和getTimeline)、@mainWidget/ Widget bundle,或可配置 Widget 的AppIntentConfiguration/ intent 类型,而不只是 diff 片段或代码片段。 - 平台或系统声明(仅当问题依赖刷新预算、约 30MB 的内存建议、锁定屏幕 accessory family、iOS 17+ 的
containerBackground、App Groups 数据共享,或从IntentConfiguration迁移至AppIntentConfiguration时)— 指明一个已检查的具体凭据(例如项目中的.entitlements/ App Group id、源码中的WidgetFamily处理、IPHONEOS_DEPLOYMENT_TARGET,或所用参考资料的确切小节),或者将该问题删除或降级为开放问题。 - 协议 — 此项必须满足 review-verification-protocol 中针对该审查类型的报告前步骤;若未满足,不得报告问题。
每项报告的问题使用格式 [FILE:LINE] ISSUE_TITLE。硬性关卡 4 是此审查类型的完整报告前检查清单。
评论
支持 Markdown