mcpField
S
solid-swift

solid-swift

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

关于 solid-swift

solid-swift 是面向 Swift 6 和 SwiftUI 项目的编码技能,通过模块化目录规则、SOLID/DRY 指南与代码模板约束实现方式。适用于需要一致架构与并发规范的 Swift 开发。

主要功能

  1. 01强制按功能模块组织目录
  2. 02提供 SOLID 原则参考
  3. 03规定文件大小与分层限制
  4. 04涵盖 Swift 并发模式
  5. 05提供常用代码模板
  6. 06检查并复用共享代码

适用场景

  1. 01为 SwiftUI 功能规划目录结构
  2. 02拆分过大的 View 或 ViewModel
  3. 03实现符合规范的并发代码
  4. 04添加功能前检查可复用组件

安装

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

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

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

包含的文件

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

references/
anti-patterns.md
concurrency-patterns.md
dependency-inversion.md
interface-segregation.md
liskov-substitution.md
open-closed.md
single-responsibility.md
solid-principles.md
references/templates/
model.md
protocol.md
service.md
view.md
viewmodel.md

详细介绍

为 Swift 6 和 SwiftUI(iOS 27+)项目强制执行 SOLID 和 DRY 原则:必须采用 Features/[Feature]/ 模块化目录结构(绝不使用扁平的 Sources/ 布局),严格限制文件大小(100 行,在 90 行时拆分,并为 Views/ViewModels/Services/Protocols 设置各层预算),将协议放在独立的 Protocols/ 目录中,ViewModel 使用 @Observable + @MainActor,模型使用 Sendable 结构体,并要求每个 View 都必须包含 #Preview。

涵盖全部五项 SOLID 原则,并提供专门的参考资料(SRP、OCP、LSP、ISP、DIP)、并发模式(actors、@MainActor、Sendable)、反模式目录,以及 View、ViewModel、Service、Protocol 和 Model 的代码模板。

要求在编写新代码前先搜索代码库中的可复用协议和服务,并在复制供 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 模块化结构)

层位置最大行数
ViewsFeatures/[Feature]/Views/80
ViewModelsFeatures/[Feature]/ViewModels/100
ServicesFeatures/[Feature]/Services/100
ProtocolsFeatures/[Feature]/Protocols/30
共享代码Core/{Models,Protocols,Services,Extensions,Utilities}/-

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


关键规则(必须)

规则值
文件限制100 行(在 90 行时拆分)
ViewModel@MainActor @Observable
协议仅限 Features/[Feature]/Protocols/ 或 Core/Protocols/
模型Sendable 结构体
文档所有公共 API 都添加 ///
预览每个 View 都必须包含 #Preview

参考指南

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

禁止事项

反模式修复方法
文件超过 100 行在 90 行处分拆
在实现文件中定义 Protocol移至 Protocols/ 目录
ObservableObject使用 @Observable
Completion handler使用 async/await
缺少 #Preview为每个 View 添加预览
在异步代码中使用非 Sendable 类型使用带有 let 的 struct
扁平的 Sources/ 结构使用 Features/[Feature]/

评论

支持 Markdown