mcpField
S
solid-swift

solid-swift

github.com/fusengine开发3441 次安装2 周前更新
代码仓库

关于 solid-swift

solid-swift 是面向 Swift 6 和 SwiftUI 项目的代码组织与实现指导技能。它通过按功能划分的目录结构、并发约定和代码模板落实 SOLID 与 DRY 实践。

主要功能

  1. 01按功能划分的模块目录结构
  2. 02单一职责文件与协议分离
  3. 03使用 @Observable 的 ViewModel 和 Sendable 模型
  4. 04每个 View 必须包含 #Preview
  5. 05提供 SOLID、并发与反模式参考

适用场景

  1. 01按功能组织 SwiftUI 项目
  2. 02检查代码是否遵循 SOLID 和 DRY
  3. 03一致地创建 ViewModel、服务和模型

安装

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

$npx skills add https://github.com/fusengine/claude-plugins --skill solid-swift

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

详细介绍

为 Swift 6 和 SwiftUI(iOS 27+)项目强制执行 SOLID 和 DRY 原则:必须采用 Features/[Feature]/ 模块化目录结构(绝不使用扁平的 Sources/ 布局);每个文件只负责一项职责,唯一的行数限制是钩子上限(`FUSE_SOLID_MAX_LINES`);协议必须放在独立的 Protocols/ 目录中;ViewModel 使用 @Observable + @MainActor;模型使用 Sendable 结构体;每个 View 都必须包含 #Preview。

涵盖全部五项 SOLID 原则,并提供专门的参考文档(SRP、OCP、LSP、ISP、DIP)、并发模式(actor、@MainActor、Sendable)、反模式目录,以及 View、ViewModel、服务、协议和模型的代码模板。

要求在编写新代码前先搜索代码库,查找可复用的协议和服务;在复制用于 2 个或更多功能的逻辑前,检查共享位置(Core/Extensions/、Core/Utilities/、Core/Protocols/)。

SOLID Swift - Apple 2026 年最佳实践

Agent 工作流(强制)

在进行任何实现之前,必须并行启动 3 个 Agent,每个分别调用一次 Agent,并提供一个 name:

  1. fuse-ai-pilot:explore-codebase - 分析现有架构
  2. fuse-ai-pilot:research-expert - 通过 Apple Docs MCP + Context7 核实 Swift/Apple 文档
  3. XcodeBuildMCP - 代码更改后进行构建验证。随后运行 fuse-ai-pilot:sniper。

DRY - 创建前先复用(强制)

编写任何新代码前:

  1. 搜索代码库,查找类似的协议、服务或逻辑
  2. 检查共享位置:Core/Extensions/、Core/Utilities/、Core/Protocols/
  3. 如果存在类似代码 -> 扩展或复用,而不是重复实现
  4. 如果代码将用于 2 个或更多功能 -> 直接在 Core/ 中创建

架构(必须采用功能模块化结构)

层位置
视图Features/[Feature]/Views/
ViewModelFeatures/[Feature]/ViewModels/
服务Features/[Feature]/Services/
协议Features/[Feature]/Protocols/
共享代码Core/{Models,Protocols,Services,Extensions,Utilities}/

文件大小:唯一的行数限制是钩子上限(FUSE_SOLID_MAX_LINES);应在达到上限前充分拆分职责。如果合理的修复无法在限制内完成,请报告问题,绝不要绕过钩子。

绝不使用扁平的 Sources/ 结构——始终使用 Features/[Feature]/


关键规则(强制)

规则要求
文件限制仅受钩子上限 FUSE_SOLID_MAX_LINES 限制;每个文件只负责一项职责
ViewModel@MainActor @Observable
协议只能放在 Features/[Feature]/Protocols/ 或 Core/Protocols/ 中
模型Sendable 结构体
文档所有公共 API 都要添加 /// 文档注释
预览每个 View 都必须包含 #Preview

参考指南

概念
主题参考文档适用场景
SOLID 概览solid-principles.md快速了解所有原则
SRPsingle-responsibility.md处理臃肿的视图/ViewModel、拆分文件
OCPopen-closed.md添加提供方、提高可扩展性
LSPliskov-substitution.md协议约定、测试
ISPinterface-segregation.md臃肿的协议、拆分协议
DIPdependency-inversion.md注入、测试、模拟
并发concurrency-patterns.mdactor、@MainActor、Sendable
反模式anti-patterns.md检测代码异味
模板
模板适用场景
view.md包含子视图和 #Preview 的 SwiftUI View
viewmodel.md使用 @MainActor 的 @Observable ViewModel
service.mdAPI Service、Mock、Cache actor
protocol.mdService protocol、CQRS、Auth
model.mdModel、DTO、Error、Enum

禁止事项

反模式修复方法
文件承担多项职责,或被钩子限制所阻止按职责拆分
在实现文件中定义 Protocol移至 Protocols/ 目录
ObservableObject使用 @Observable
完成处理器使用 async/await
缺少 #Preview为每个 View 添加预览
在异步代码中使用非 Sendable 类型使用带有 let 的 struct
Sources/ 结构扁平使用 Features/[Feature]/

评论

支持 Markdown