mcpField
S
swiftui-code-review

swiftui-code-review

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

关于 swiftui-code-review

swiftui-code-review 是按检查清单审查 SwiftUI 代码的技能。它要求问题附带文件与行号依据,并针对视图组合、状态、性能和无障碍使用对应参考资料。

主要功能

  1. 01按顺序执行审查关卡
  2. 02问题标注文件和行号
  3. 03视图组合检查
  4. 04状态与性能检查
  5. 05无障碍审查清单

适用场景

  1. 01审查仓库中的 SwiftUI 变更
  2. 02查找状态所有权或视图标识问题
  3. 03检查无障碍和动态字体支持

安装

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

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

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

包含的文件

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

references/
accessibility.md
performance.md
state-management.md
view-composition.md

详细介绍

SwiftUI 代码审查

快速参考

问题类型参考文档
视图拆分、修饰符、body 复杂度references/view-composition.md
@State、@Binding、@Observable、@Bindablereferences/state-management.md
LazyStacks、AnyView、ForEach、标识references/performance.md
VoiceOver、动态字体、标签、特征references/accessibility.md

关卡(审查工作流)

按顺序完成;不得跳过。

  1. 界定范围 — 通过条件:每个审查过的文件都以相对于仓库的 .swift 路径列出(或者审查明确说明“未打开 / 不适用”并给出理由)。
  2. 先查参考文档,再进行批评 — 通过条件:对于任何非平凡的 body、修饰符链或包装器所有权问题,你已打开上表中对应的 references/*.md 文档,或者用一行说明“无需参考”及理由。
  3. 基于证据的发现 — 通过条件:每个实质性问题都在提出建议前包含 [FILE:LINE](或明确的行范围);符号 / 代码片段可以补充说明,但不能替代位置锚点;不得仅凭“典型的 SwiftUI”提出缺乏代码依据的问题。

审查清单

  • 视图 body 包含的组合元素少于 10 个(应提取子视图)
  • 修饰符顺序正确(padding 在 background 之前)
  • 视图拥有的对象使用 @StateObject,传入的对象使用 @ObservedObject
  • 对 @Observable 使用双向绑定时采用 @Bindable(iOS 17+)
  • 对包含 50 个及以上项目的滚动列表使用 LazyVStack/LazyHStack
  • 不使用 AnyView(改用 @ViewBuilder 或泛型)
  • ForEach 使用稳定的 Identifiable ID(而非数组索引)
  • 所有图像 / 图标都设有 accessibilityLabel
  • 自定义控件设有 accessibilityAddTraits(.isButton)
  • 支持动态字体(不使用固定字体大小)
  • 异步任务使用 .task 修饰符(而非 onAppear + Task)

何时加载参考文档

  • 复杂的视图 body 或修饰符链 -> view-composition.md
  • 属性包装器用法(@State、@Observable)-> state-management.md
  • 列表性能或视图标识问题 -> performance.md
  • VoiceOver 或无障碍功能实现 -> accessibility.md

审查问题

  1. 能否将这个大型视图 body 拆分为更小、可复用的 View?
  2. 修饰符的顺序是否经过考虑?(padding -> background -> frame)
  3. @StateObject/@ObservedObject 的用法是否符合所有权关系?
  4. LazyVStack 能否提升此 ScrollView 的性能?
  5. VoiceOver 用户能否理解此界面?

评论

支持 Markdown