mcpField
S
swift-refactor

swift-refactor

github.com/pproenca开发218278 次安装11 周前更新
代码仓库

关于 swift-refactor

为开发者提供 Swift 和 SwiftUI 模块化 MVVM-C 重构指南,围绕 Domain、Data、Feature 与 App 的边界组织架构。内容针对 iOS 26 / Swift 6.2,涵盖 API、状态、导航和性能调整。

主要功能

  1. 01模块化 MVVM-C 包结构指南
  2. 02SwiftUI API 现代化规则
  3. 03Observable ViewModel 与状态设计
  4. 04基于 Coordinator 的导航模式
  5. 05视图身份与列表性能规则

适用场景

  1. 01迁移旧版 SwiftUI 导航与状态 API
  2. 02将应用拆分为 Domain、Data、Feature 和 App 模块
  3. 03重构视图与列表以改善差异计算
  4. 04用可取消加载替代手动任务管理

安装

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

$npx skills add https://github.com/pproenca/dot-skills --skill swift-refactor

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

包含的文件

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

metadata.json
assets/templates/
_template.md
references/
_sections.md
api-alert-confirmation-dialog.md
api-environment-object-removal.md
api-list-foreach-identifiable.md
api-navigationstack-migration.md
api-observable-macro.md
api-onchange-signature.md
api-toolbar-migration.md
arch-environment-key-injection.md
arch-feature-module-extraction.md
arch-model-view-separation.md
arch-protocol-dependencies.md
arch-viewmodel-elimination.md
data-cancellation.md
data-error-loadable.md
data-task-modifier.md
di-container-composition.md
di-mock-testing.md
diff-closure-skip.md
diff-equatable-views.md
diff-identity-stability.md
diff-printchanges-debug.md
layer-dependency-rule.md
layer-no-view-repository.md
layer-repository-protocol.md
layer-usecase-protocol.md
layer-viewmodel-boundary.md
list-constant-viewcount.md

详细介绍

Swift/SwiftUI 重构(模块化 MVVM-C)

将 Swift/SwiftUI 代码迁移到模块化 MVVM-C 的全面重构指南,采用本地 SPM 包边界和 App 目标组合根装配。

规定的架构技术栈

┌───────────────────────────────────────────────────────────────┐
│ App target: DependencyContainer, Coordinators, Route Shells   │
├───────────────────────────────────────────────────────────────┤
│ Feature modules: View + ViewModel (Domain + DesignSystem deps)│
├───────────────────────────────────────────────────────────────┤
│ Data package: repositories, remote/local stores, sync, retry  │
├───────────────────────────────────────────────────────────────┤
│ Domain package: models, repository/coordinator/error protocols │
└───────────────────────────────────────────────────────────────┘

依赖规则:功能模块绝不导入 Data,也绝不导入同级功能模块。

Clinic 架构约定(iOS 26 / Swift 6.2)

本技能中的所有指导均基于 Clinic 模块化 MVVM-C 架构:

  • 功能模块仅导入 Domain + DesignSystem(绝不导入 Data,也绝不导入同级功能模块)
  • App 目标是汇聚点,并负责 DependencyContainer、具体协调器和 Route Shell 装配
  • Domain 保持纯 Swift,并定义模型以及 repository、*Coordinating、ErrorRouting 和 AppError 契约
  • Data 负责 SwiftData/网络/同步/重试/后台 I/O,并实现 Domain 协议
  • 读写流程默认采用过期数据优先并后台重新验证的读取方式,以及乐观排队写入
  • ViewModel 直接调用 repository 协议(不设默认的用例/交互器层)

适用场景

在以下情况下参考这些指南:

  • 从已弃用的 SwiftUI API 迁移(ObservableObject、NavigationView、旧版 onChange)
  • 重构状态管理,改用 @Observable ViewModel
  • 为视图添加 @Equatable 差分,以提升性能
  • 将大型视图拆分为最多包含 10 个节点的视图主体
  • 将导航重构为协调器 + Route Shell 模式
  • 重构为 Domain/Data/Feature/App 包边界
  • 通过 DependencyContainer 设置依赖注入
  • 提升列表/集合滚动性能
  • 用 .task(id:) 和可取消加载替代手动 Task 管理

不可协商的约束(iOS 26 / Swift 6.2)

  • ViewModel/协调器使用 @Observable,绝不使用 ObservableObject / @Published
  • NavigationStack 由 App 目标的 Route Shell 和协调器持有
  • 每个视图都使用 @Equatable 宏,绝不使用 AnyView
  • Domain 定义 repository/协调器/错误路由协议;不包含与框架耦合的 I/O
  • 不设专用的用例/交互器层;ViewModel 直接调用 repository 协议
  • 视图绝不直接访问 repository

按优先级划分的规则类别

优先级类别影响前缀规则数
1视图标识与差分严重diff-4
2API 现代化严重api-7
3状态架构严重state-6
4视图组合高view-7
5导航与协调高nav-5
6分层架构高layer-5
7架构模式高arch-5
8依赖注入中高di-2
9类型安全与协议中高type-4
10列表与集合性能中list-4
11异步与数据流中data-3
12Swift 语言基础中swift-8

快速参考

1. 视图标识与差分(严重)
2. API 现代化(关键)
3. 状态架构(关键)
4. 视图组合(高)
5. 导航与协调(高)
6. 分层架构(高)
7. 架构模式(高)
8. 依赖注入(中高)
9. 类型安全与协议(中高)
10. 列表与集合性能(中)
11. 异步与数据流(中)
12. Swift 语言基础(中)

使用方法

阅读各参考文件,了解详细说明和代码示例:

参考文件

文件描述
references/_sections.md类别定义和排序
assets/templates/_template.md新规则模板

评论

支持 Markdown