mcpField
G
go-development

go-development

github.com/netresearch开发13123 次安装今天更新
代码仓库

关于 go-development

面向 Go 项目开发与维护的技能,汇集编码约定、测试和安全检查,并提供常见工程任务的专项参考指南。

主要功能

  1. 01类型安全的 Go 模式与约定
  2. 02测试与静态检查指南
  3. 03安全及漏洞检查
  4. 04Go 工程专项参考指南

适用场景

  1. 01检查 Go 代码的一致性
  2. 02配置项目质量检查
  3. 03选择测试与错误处理模式

安装

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

$npx skills add https://github.com/netresearch/go-development-skill --skill go-development

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

包含的文件

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

checkpoints.yaml
evals/
evals.json
references/
api-design.md
architecture.md
awesome-go-submission.md
branch-protection.md
contracts-and-invariants.md
cron-scheduling.md
dependencies.md
docker.md
fuzz-testing.md
ldap.md
lefthook-template.md
linting.md
logging.md
makefile.md
modernization.md
mutation-testing.md
resilience.md
reusable-workflows.md
single-build-release.md
testing.md
scripts/
verify-go-project.sh

详细介绍

Go 开发模式

核心原则

类型安全
  • 避免: interface{}(改用 any)、sync.Map、零散的类型断言、反射
  • 优先使用: 泛型 [T any]、errors.AsType[T](Go 1.26)、具体类型
  • 升级后运行 go fix ./...
一致性
  • 每个问题领域采用一种模式
  • 与现有代码库的模式保持一致
  • 要么整体重构,要么不重构
  • 配置优先级:默认值 < 配置文件 < 环境变量 < 标志
测试
  • 使用构建标签隔离测试层级:单元测试(默认)、integration、e2e
  • 始终使用 t.Parallel()、t.Helper() 和表驱动子测试
  • 直接使用 log/slog——切勿将其封装在自定义 Logger 接口中
约定
  • 命名:ID、URL、HTTP(而非 Id、Url、Http)——不由工具强制执行(ST1003 默认关闭)
  • 错误包装:fmt.Errorf("failed to process: %w", err)

参考资料

Git 钩子:ls lefthook.yml 2>/dev/null && lefthook install || echo "Add lefthook — see references/lefthook-template.md"

按需加载:

参考资料用途
references/architecture.md包结构、状态变更的完整性
references/logging.md使用 log/slog 进行结构化日志记录、从 logrus 迁移
references/cron-scheduling.mdgo-cron 模式:命名任务、运行时更新、弹性
references/resilience.md指向 go-cron 内置的重试/断路器/超时包装器
references/docker.mdDocker 客户端模式、缓冲区池化
references/ldap.mdLDAP/Active Directory 集成
references/testing.md构建标签、资源隔离、竞态问题
references/linting.mdgolangci-lint v2、staticcheck
references/api-design.md枚举/状态的防御性处理
references/fuzz-testing.mdGo 模糊测试模式、安全种子
references/contracts-and-invariants.md契约、不变量、属性测试
references/mutation-testing.mdGremlins 配置、测试质量衡量
references/makefile.mdCI/CD 的标准 Makefile 接口
references/modernization.mdgo fix 现代化工具及其构建标签陷阱、errors.AsType[T]、b.Loop
references/dependencies.md升级:go get -u all、主版本、构建集范围
references/lefthook-template.md可直接用于 Go 项目 Git 钩子的 lefthook.yml
references/branch-protection.md规则集水位线:三规则集门槛、绕过模式
references/reusable-workflows.md可复用 Actions 工作流调用方、权限传递、发布门禁输出
references/single-build-release.md单次构建发布:交叉编译一次,供发布和容器复用
references/awesome-go-submission.mdawesome-go 提交:由 CI 解析的 PR 正文、名称冲突

质量门禁

完成任何审查前运行:

golangci-lint run --timeout 5m    # Linting
go vet ./...                       # Static analysis
staticcheck ./...                  # Additional checks
govulncheck ./...                  # Vulnerability scan
go test -race ./...                # Race detection

标准库漏洞修复

当 govulncheck 报告标准库漏洞时:通过 vuln.go.dev 检查修复版本,在 go.mod 中更新 go X.Y.Z,然后运行 go mod tidy。


贡献: 请通过 https://github.com/netresearch/go-development-skill 提交改进。

评论

支持 Markdown