mcpField
H
healthkit-code-review

healthkit-code-review

github.com/existential-birds测试与质量85129 次安装11 周前更新
代码仓库

关于 healthkit-code-review

面向审查 Apple HealthKit 代码的技能,提供授权、查询、后台交付和数据类型方面的检查要点。它要求审查者按证据门槛逐步核实可用性、权限语义、线程处理与查询生命周期。

主要功能

  1. 01HealthKit 可用性与授权检查
  2. 02查询谓词和结果限制检查
  3. 03统计聚合方式检查
  4. 04观察查询与后台交付检查
  5. 05线程处理和生命周期检查

适用场景

  1. 01审查 HealthKit 权限流程
  2. 02检查样本查询和谓词
  3. 03核对后台交付配置
  4. 04检查长期运行查询的停止方式

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/existential-birds/beagle --skill healthkit-code-review

安装后在 Claude Code 中输入/healthkit-code-review确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
authorization.md
background.md
data-types.md
queries.md

详细介绍

HealthKit 代码审查

快速参考

问题类型参考
HKHealthStore、权限、状态检查、隐私references/authorization.md
HKQuery 类型、谓词、锚定查询、统计references/queries.md
后台传输、观察者查询、完成处理程序references/background.md
HKQuantityType、HKCategoryType、锻炼、单位references/data-types.md

审查清单

  • 在执行任何 HealthKit 操作前调用 HKHealthStore.isHealthDataAvailable()
  • 仅请求所需数据类型的授权(最小权限)
  • 不要误解 requestAuthorization 完成处理程序的含义,将其视为已授予权限
  • 不尝试确定读取权限状态(隐私设计原则)
  • 将查询结果分发到主线程以更新 UI
  • 仅在谓词有界时使用 HKObjectQueryNoLimit
  • 使用 HKStatisticsQuery 进行聚合,而非手动求和
  • 始终调用观察者查询的 completionHandler()(使用 defer)
  • 在 application(_:didFinishLaunchingWithOptions:) 中注册后台传输
  • 添加后台传输授权(iOS 15+)
  • 为数量类型使用正确的单位(例如,心率使用 count/min)
  • 将长时间运行的查询存储为属性,并在 deinit 中停止

何时加载参考资料

  • 审查授权/权限流程 -> authorization.md
  • 审查 HKSampleQuery、HKAnchoredObjectQuery 或谓词 -> queries.md
  • 审查 HKObserverQuery 或 enableBackgroundDelivery -> background.md
  • 审查 HKQuantityType、HKCategoryType 或 HKWorkout -> data-types.md

审查关卡

按顺序执行。在当前步骤满足通过条件之前,不要在后续步骤中提出问题(每项通过条件都应能根据正在审查的代码库作答)。

  1. 范围 — **通过:**列出使用 HealthKit、HKHealthStore 或 HK* API 的文件路径和类型/符号(或明确说明差异中未涉及这些内容)。
  2. 可用性与存储 — **通过:**指出 HealthKit 使用前调用 isHealthDataAvailable() 的位置,或说明在限定代码范围内省略该调用为何可以接受;指出创建或注入 HKHealthStore 的位置。
  3. 授权语义 — **通过:**对于每个 requestAuthorization / getRequestStatusForAuthorization,根据 references/authorization.md 指出各处理程序分支(例如,成功并不能证明具有读取权限);不要仅根据 authorizationStatus 推断读取权限。
  4. 查询与限制 — **通过:**对于每个查询,指出谓词和限制(仅在谓词有界时使用 HKObjectQueryNoLimit);对于总计/聚合,根据 references/queries.md 指出使用 HKStatisticsQuery / 集合查询,还是手动求和。
  5. 观察者与后台 — **通过:**如果出现 HKObserverQuery 或 enableBackgroundDelivery,指出启动/停止观察者以及注册后台传输的位置;根据 references/background.md 指出授权/Info.plist,或标出缺失的配置。如果不存在,**通过:**用一行说明“范围内没有观察者/后台处理。”
  6. 线程与生命周期 — **通过:**指出查询回调中用于 UI 更新的主队列(或已记录的模式);根据上述清单指出长时间运行查询的保留方式/stop()/deinit。

审查问题

  1. 创建 HKHealthStore 前是否检查了 isHealthDataAvailable()?
  2. 代码是否能妥善处理被拒绝的权限(返回空结果)?
  3. 观察者查询完成处理程序是否在所有代码路径中都会调用?
  4. 后台处理程序中的工作是否精简(约 15 秒限制)?
  5. HKQueryAnchors 是否按样本类型持久化(而非共用)?

评论

支持 Markdown