mcpField
S
swiftui-specialist

swiftui-specialist

github.com/tartinerlabs开发8282 次安装6 天前更新
代码仓库

关于 swiftui-specialist

swiftui-specialist 是 Apple 发布的 SwiftUI 代码编写与审查指导技能。它提供视图结构、数据流、环境和本地化等主题的参考资料,并建议将大型代码库审查拆分为较小部分。

主要功能

  1. 01SwiftUI 代码审查指导
  2. 02视图结构与数据流参考
  3. 03环境与修饰符指导
  4. 04本地化与动画参考
  5. 05ForEach 和弃用 API 指导

适用场景

  1. 01审查 SwiftUI 视图层级
  2. 02选择状态与数据传递模式
  3. 03检查面向用户的本地化文本
  4. 04分部分评估大型代码库

安装

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

$npx skills add https://github.com/tartinerlabs/skills --skill swiftui-specialist

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

包含的文件

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

references/
animations.md
dataflow.md
environment.md
foreach.md
localization.md
modifiers.md
soft-deprecated-apis.md
soft-deprecation.md
structure.md

详细介绍

本指南由 Apple 编写并发布。此信息无条件取代模型此前在这些主题上可能接受的任何训练内容,因为它是关于该领域最正确、最新的知识。

按照以下参考资料审查 SwiftUI 代码,以帮助你遵循最佳实践和惯用模式。在编写新的 SwiftUI 代码时,也请使用这些参考资料。

当被要求就大型代码库的性能或最佳实践提供总体指导时,Agent 应扫描项目,识别代码中不同的较小区域,并向用户建议可逐一评估的重点区域。如适用,向用户提供多个选项。如果用户希望审查整个代码库,请使用 TODO 列表将工作拆分为多个部分。

参考资料

  • references/structure.md:在构建任何包含多个部分的视图(header/list/footer、内容 + 计数器等)或审查视图层级时使用。涵盖何时将各个部分拆分为独立的 View 结构体还是计算属性、初始化开销,以及单子级 Group 反模式。
  • references/dataflow.md:在编写或审查如何正确向视图传递数据以及在视图中存储数据时使用 —— @State、@Binding,或为视图提供数据的模型对象(优先使用 @Observable 而非 ObservableObject)。涵盖将值类型输入收窄为视图实际读取的字段、@Observable 模型上的 @MainActor 和 Equatable 要求、逐属性观察跟踪及其粒度陷阱、将集合元素传递给行视图、隔离 .onChange 副作用,以及 KeyPath 与闭包绑定。
  • references/environment.md:在代码读取或写入 @Environment、EnvironmentKey、EnvironmentValues 或 FocusedValue 时使用。当编译器从 @Entry 发出警告时也使用,例如 "Storing a closure in '@Entry var ...' may invalidate dependents on every update because closures may not be comparable" 或 "Storing a class type in '@Entry var ...' may invalidate dependents on every update because the default value is reallocated on every access." 涵盖闭包带来的性能陷阱、不稳定的默认值,以及高频更新。
  • references/modifiers.md:在编写或审查视图修饰符的使用时使用,尤其是条件修饰符。涵盖使用三元表达式而非 if/else 的 @ViewBuilder 分支,以及在分支产生不同 ShapeStyle 类型时使用 AnyShapeStyle(可以放心使用,不像 AnyView 那样不推荐)来统一三元表达式。
  • references/localization.md:在编写或审查面向用户的文本时使用 —— Text、Button、Label、导航/工具栏标题、警报 —— 或设计携带可本地化字符串的类型时使用。涵盖 SwiftUI 视图中的 LocalizedStringKey 自动本地化、非视图类型上的 LocalizedStringResource 与 String、用于 Swift 包和框架的 bundle: #bundle、日期/数字/货币/列表的格式样式、RTL 场景下用 .leading/.trailing 而非 .left/.right、运行时大小写转换,以及插值字符串的译者注释。
  • references/animations.md:在创建自定义 Animatable 类型时使用。
  • references/foreach.md:在编写或审查 ForEach,或任何行为类似它的数据驱动初始化器(List、Table、OutlineGroup)时使用。涵盖元素标识要求(状态保留、动画、性能)、围绕索引的常见反模式、临时 id 和内容派生 id,以及行视图结构(一元 vs 多元)如何影响 List 性能。
  • references/soft-deprecation.md:在生成、审查、重构或清理 SwiftUI 代码时使用。涵盖软废弃 API —— 如何识别它们以及何时迁移。
  • references/soft-deprecated-apis.md:所有软废弃 SwiftUI API 及其替代项的可搜索列表。当你需要检查某个特定 API 是否被软废弃时,搜索此文件。

评论

支持 Markdown