mcpField
S
solid-go

solid-go

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

关于 solid-go

solid-go 是面向 Go 项目的模块化架构技能,规定功能目录、接口位置与规模,并提供 SOLID 参考和实现模板。适用于希望统一代码结构、复用策略和依赖注入方式的 Go 开发者。

主要功能

  1. 01强制按功能模块组织代码
  2. 02将接口限制在 ports 目录
  3. 03规定文件与处理器大小
  4. 04要求小型接口和 godoc 注释
  5. 05提供 SOLID 与架构参考
  6. 06提供模块及测试模板

适用场景

  1. 01规划 Go 功能模块目录
  2. 02拆分过大的处理器或接口
  3. 03新增功能前检查共享代码
  4. 04为服务和 HTTP 处理器搭建结构

安装

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

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

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

包含的文件

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

references/
architecture-patterns.md
dependency-inversion.md
interface-segregation.md
liskov-substitution.md
open-closed.md
single-responsibility.md
solid-principles.md
references/templates/
error.md
handler.md
interface.md
module.md
service.md
test.md

详细介绍

SOLID Go 为 Go 1.27+ 强制规定模块化架构:每项功能都位于 `internal/modules/[feature]/` 下(handlers、services、repositories、ports、models),共享代码位于 `internal/core/`;接口(ports)仅放在 `ports/` 目录中,并保持精简(1-3 个方法,符合 Go 惯用写法);函数接受接口但返回结构体;每个导出的函数都必须附带 godoc 注释。

编写任何新代码之前,都必须检查 internal/core/services 和 internal/core/ports,避免重复实现。概览请参阅 solid-principles.md;SRP/OCP/LSP/ISP/DIP 的详细说明请参阅各原则对应的参考文档;六边形/模块化布局请参阅 architecture-patterns.md;模块/服务/接口/处理器/错误/测试脚手架请参阅模板。

SOLID Go - 模块化架构

Agent 工作流(强制)

任何实现开始之前,必须并行启动 3 个 Agent,每个使用一次 Agent 调用并指定一个 name:

  1. fuse-ai-pilot:explore-codebase - 分析现有架构
  2. fuse-ai-pilot:research-expert - 通过 Context7 验证 Go 文档
  3. fuse-ai-pilot:sniper - 实现后验证

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

编写任何新代码之前:

  1. 在代码库中使用 Grep 查找类似接口、服务或逻辑
  2. 检查共享位置:internal/core/services/、internal/core/ports/
  3. 如果存在类似代码 -> 扩展/复用,而不是重复创建
  4. 如果代码将被 2 个或更多功能使用 -> 在 internal/core/ 中创建

架构(模块化,强制)

层位置最大行数
处理器internal/modules/[feature]/handlers/50
服务internal/modules/[feature]/services/100
仓库internal/modules/[feature]/repositories/100
Ports(接口)internal/modules/[feature]/ports/30
模型internal/modules/[feature]/models/50
共享internal/core/{services,ports,models}/-

绝不使用扁平的 internal/ 结构——始终使用 internal/modules/[feature]/


关键规则(强制)

规则值
文件限制100 行(达到 90 行时拆分)
处理器< 50 行,委托给服务
接口仅限 ports/ 目录
Godoc为每个导出的函数编写文档
接受接口返回结构体
小型接口最多 1-3 个方法(Go 惯用写法)

参考指南

概念
主题参考文档何时查阅
SOLID 概览solid-principles.md快速参考
SRPsingle-responsibility.md结构体臃肿时
OCPopen-closed.md添加提供方时
LSPliskov-substitution.md契约
ISPinterface-segregation.md接口臃肿时
DIPdependency-inversion.md注入
架构architecture-patterns.md六边形/模块化
模板
模板使用场景
module.md功能模块结构
service.md业务逻辑服务
interface.mdPort 定义
handler.mdHTTP 处理器
error.md自定义错误
test.md表驱动测试

禁止事项

反模式修正方法
文件超过 100 行达到 90 行时拆分
在实现文件中定义接口移至 ports/ 目录
臃肿接口(4 个或更多方法)拆分为小型接口
扁平的 internal/ 结构使用 internal/modules/[feature]/
使用 init() 进行依赖装配使用构造函数注入

评论

支持 Markdown