Communitygithub.com

netresearch/go-development-skill

Agent 技能:企业级 Go 开发模式——弹性服务与测试 | 兼容 Claude Code

go-development-skill 是什么?

此技能为企业级 Go 开发提供了一整套模式与规范,涵盖类型安全、一致性、测试策略及编码约定。它强调使用 `any` 替代 `interface{}`、泛型以及具体类型,并推荐使用 `log/slog` 进行结构化日志记录。技能要求在执行代码审查时关联安全审计(OWASP)、企业就绪度(OpenSSF/SLSA)和 GitHub 项目管理(分支保护)等相关技能。其包含一个全面的参考文档库,涉及架构、日志、弹性、测试、linting、API 设计等主题,并定义了运行 `golangci-lint`、`go vet` 等工具的强制性质量门。该技能主要面向 Claude Code,但也适用于其他 AI 代理与开发环境。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add netresearch/go-development-skill

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Go 开发模式

必需工作流程

进行审查时,请调用相关技能: security-audit (OWASP)、enterprise-readiness (OpenSSF/SLSA)、github-project (分支保护)。所有技能均为必需。

核心原则

类型安全

  • 避免: interface{}(改用 any)、sync.Map、散乱的类型断言、反射
  • 偏好: 泛型 [T any]、errors.AsType[T] (Go 1.26)、具体类型
  • 升级后运行 go fix ./...

一致性

  • 每个问题域使用一种模式
  • 匹配现有代码库的模式
  • 要么整体重构,要么完全不重构
  • 配置优先级:默认值 < 配置文件 < 环境变量 < 标志

测试

  • 构建标签隔离测试层级:单元(默认)、integration、e2e
  • 始终使用 t.Parallel()、t.Helper()、表驱动子测试
  • 直接使用 log/slog —— 绝不要包装成自定义 Logger 接口

约定

  • 错误消息:小写、无标点(errors.New("invalid input"))
  • 命名:ID、URL、HTTP(而非 Id、Url、Http)
  • 错误包装:fmt.Errorf("failed to process: %w", err)

参考资料

Git hooks: ls lefthook.yml 2>/dev/null && lefthook install || echo "添加 lefthook — 参见 references/lefthook-template.md"

按需加载:

参考文档用途
references/architecture.md包结构、配置管理、中间件链
references/logging.md使用 log/slog 的结构化日志,从 logrus 迁移
references/cron-scheduling.mdgo-cron 模式:命名任务、运行时更新、上下文、弹性
references/resilience.md重试逻辑、优雅关闭、上下文传播
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.md用于 CI/CD 的标准 Makefile 接口
references/modernization.mdGo 1.26 现代化工具、go fix、errors.AsType[T]、wg.Go()
references/lefthook-template.mdGo 项目 Git hooks 的即用型 lefthook.yml
references/reusable-workflows.md可复用的 Actions 工作流调用者、权限传播、发布门输出
references/single-build-release.md单构建发布:一次交叉编译,复用于发布+容器
references/awesome-go-submission.mdawesome-go 提交:CI 解析的 PR 正文、条目格式、名称冲突

质量门

在完成任何审查之前运行:

golangci-lint run --timeout 5m    # 代码检查
go vet ./...                       # 静态分析
staticcheck ./...                  # 额外检查
govulncheck ./...                  # 漏洞扫描
go test -race ./...                # 竞态检测

标准库漏洞修复

当 govulncheck 报告标准库漏洞时:通过 vuln.go.dev 检查修复版本,在 go.mod 中更新 go X.Y.Z,运行 go mod tidy。对于有分支保护的仓库,使用 PR 分支。


贡献: 提交改进到 https://github.com/netresearch/go-development-skill

相关技能