关于 go-skills-router
go-skills-router 面向处理 Go 任务的开发者,是一份技能索引。它根据问题推荐主技能及应同时加载的相关技能,并说明技能边界和多方面任务的组合方式。
主要功能
- 01为 Go 任务匹配主技能与次要技能
- 02说明相近技能的职责边界
- 03提供多方面任务的技能组合
- 04将问题对应到工具和技能
- 05提供配置与核对指导
适用场景
- 01为 Go 代码审查选择技能
- 02开始诊断崩溃或性能问题
- 03规划 Go 服务或 CLI 的技能组合
- 04配置项目自动加载 Go 技能
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ eduardo-sl/ go-agent-skills --skill go-skills-router安装后在 Claude Code 中输入/go-skills-router确认已加载。
详细介绍
Go 技能路由
此仓库提供 35 项 Go 技能。它们的触发条件必然会重叠—— “运行很慢”可能涉及性能、并发、数据库或泄漏。请使用下表选择主技能, 然后在同一轮中加载次要技能,而不是逐一发现它们。
这是一份索引。此处列出的每项技能都可独立使用,无需阅读本文档。
路由表
| 任务 | 主技能 | 同时加载 |
|---|---|---|
| 格式化代码、整理导入、声明和初始化 | go-coding-standards | go-documentation |
| 为包、类型、函数、接收者或错误命名 | go-naming | go-coding-standards |
| 审查差异或 PR | go-code-review | 负责被审查领域的技能 |
| 返回、包装或检查错误 | go-error-handling | 对于 nil 较多的代码,加载 go-defensive-coding |
| 传递截止时间、取消工作 | go-context | 涉及 goroutine 时加载 go-concurrency-review |
| 采用较新的 Go 功能 | go-modernize | 在 CI 中提升工具链版本时加载 go-ci |
| 切片、映射、集合、预分配 | go-data-structures | go-performance-review |
| 编写 godoc、示例、弃用说明、README、CHANGELOG | go-documentation | go-coding-standards |
| 防范 panic 和静默数据损坏 | go-defensive-coding | go-error-handling |
| 审查包布局和依赖方向 | go-architecture-review | go-interface-design |
| 启动新项目或服务 | go-project-layout | go-dependency-injection、go-ci |
| 设计接口或类型 | go-interface-design | go-design-patterns |
| 应用已知模式 | go-design-patterns | go-interface-design |
| 接入依赖、移除全局变量 | go-dependency-injection | go-project-layout |
| 构建 HTTP API | go-api-design | go-openapi、go-observability |
| 基于 OpenAPI 规范开展工作 | go-openapi | go-api-design、go-test-quality |
| 构建 GraphQL API | go-graphql | go-database、go-api-design |
| 构建 gRPC 服务 | go-grpc | go-test-quality、go-observability |
| 构建 CLI | go-cli | go-project-layout、go-binary-size |
| 查询数据库、管理事务 | go-database | go-error-handling、go-security-audit |
| 编写 goroutine、通道和同步代码 | go-concurrency-review | go-context、go-test-quality |
| 审计漏洞 | go-security-audit | go-dependency-audit、go-defensive-coding |
| 减少分配、优化热点路径 | go-performance-review | go-data-structures |
| 缩小二进制文件或镜像 | go-binary-size | go-ci |
| 发布版本:GoReleaser、签名、SBOM、来源证明 | go-build-release | go-ci、go-binary-size |
| 添加日志、指标、追踪 | go-observability | go-context |
| 调试 panic、泄漏或死锁 | go-troubleshooting | go-concurrency-review、go-performance-review |
| 编写或改进测试 | go-test-quality | go-test-table-driven |
| 组织测试矩阵 | go-test-table-driven | go-test-quality |
| 审计 go.mod、检查 CVE | go-dependency-audit | go-security-audit |
| 设置 CI、lint、覆盖率门槛 | go-ci | go-dependency-audit |
| 安全地重构现有代码 | go-refactoring | go-semantic-tools,以及负责目标结构的技能 |
| 查找调用方、实现者、重命名 | go-semantic-tools | go-refactoring |
| 编写提交说明 | git-commit | — |
重叠技能之间的界限
加载负责当前问题的技能,而不是名称与代码中某个关键词匹配的技能。
“运行很慢。”
go-performance-review— 代码分配或复制了过多内容。负责基准测试、pprof 和优化模式。go-concurrency-review— 代码在锁上发生竞争,或将本可并行执行的工作串行化。go-database— 问题出在查询上:缺少索引、N+1 查询、连接池耗尽。go-troubleshooting— 你还不知道上述三者中是哪一种。从这里开始查明原因,然后转交给相应技能。
“程序崩溃了。”
go-troubleshooting— 已经发生了 panic、死锁或泄漏。负责诊断、性能分析和 delve。go-defensive-coding— 预防问题。空值陷阱、别名、溢出,以及能避免下一次崩溃的代码结构。go-concurrency-review— 数据竞争或 goroutine 生命周期问题。
“这样安全吗?”
go-security-audit— 外部威胁:注入、身份验证、密钥、TLS。go-dependency-audit— 所导入模块中已知的 CVE。go-defensive-coding— 并非攻击导致的内部正确性问题。
“应该如何组织结构?”
go-architecture-review— 现有代码库的结构。go-project-layout— 新项目的结构。go-interface-design— 某个类型或契约的结构。go-refactoring— 从当前结构转变为目标结构的过程。与上述负责目标结构的技能一同加载。
“如何将它对外提供?”
go-api-design— HTTP/REST 处理程序、路由、中间件、幂等性、健康检查、关闭。go-openapi— 契约是规范,代码由规范生成。go-graphql— 客户端决定响应的结构。go-grpc— protobuf 契约、拦截器、流式传输。
“测试。”
go-test-quality— 测什么、如何隔离、模拟什么、synctest、goleak、基准测试。go-test-table-driven— 专门负责表驱动模式:何时有用、如何设计用例结构体、何时停止使用这种模式。
“代码风格。”
go-coding-standards— 代码应遵循的规则。go-naming— 各项内容的命名:包、类型、函数、接收者、错误。go-code-review— 按严重程度将规则应用于他人的改动。go-modernize— 随着语言演进而变化的规则。go-ci— 让机器强制执行这些规则。
“发布吧。”
go-ci— 管控每次改动的流水线:构建、代码检查、测试、扫描。go-build-release— 将标签转换为经过签名、可复现的构件。go-binary-size— 缩小这些构件的体积。
哪种工具能回答这个问题
| 问题 | 工具 | 技能 |
|---|---|---|
| 在当前构建中,这个符号在哪里被使用/实现? | gopls(MCP 服务或 CLI) | go-semantic-tools |
| 我们使用的版本中,某个依赖的 API 是什么? | go doc pkg Symbol,gopls go_package_api | go-semantic-tools |
| 某个模块的其他版本是什么样的? | go doc [email protected](Go 1.27+),go list -m -versions | go-dependency-audit |
| 我们的代码实际可能触及哪些已知漏洞? | govulncheck ./... | go-dependency-audit |
| 哪些包导入了哪些包? | go list -deps、go mod graph、go mod why | go-semantic-tools |
多关注点任务
实际任务通常会涉及三项技能。开始时应一起加载,而不是依次加载。
| 请求 | 加载 |
|---|---|
| “构建一个带测试的 gRPC 服务” | go-grpc + go-test-quality + go-error-handling |
| “这个端点在负载下速度很慢” | go-troubleshooting + go-performance-review + go-database |
| “在发布前加固此服务” | go-security-audit + go-dependency-audit + go-defensive-coding + go-ci |
| “拆分这个单体应用” | go-architecture-review + go-refactoring + go-semantic-tools |
| “搭建一个新的 CLI” | go-project-layout + go-cli + go-ci + go-binary-size |
| “将其迁移到当前的 Go 版本” | go-modernize + go-test-quality + go-ci |
配置项目以使用这些技能
如果有人要求让项目自动加载这些技能:
-
找出项目已有的 Agent 配置文件:
CLAUDE.md、AGENTS.md、GEMINI.md、.github/copilot-instructions.md、.cursor/rules/。 -
跳过任何已引用
go-skills-router的文件。 -
为每个文件提议以下代码块,展示差异,并且只有在开发者同意后才写入:
## Go skills Before any Go coding, review, debugging or setup task, consult the `go-skills-router` skill and load the skills it names for the task. -
如果团队希望无论路由结果如何,每项任务都加载某些技能 (例如
go-error-handling和go-security-audit),请将它们列在代码块下方的“始终加载”部分,并说明原因。
完整目录
| 类别 | 技能 |
|---|---|
| 代码质量 | go-coding-standards go-naming go-code-review go-error-handling go-context go-modernize go-data-structures go-documentation |
| 架构 | go-architecture-review go-project-layout go-interface-design go-api-design go-openapi go-graphql go-grpc go-design-patterns go-dependency-injection go-cli |
| 数据 | go-database |
| 安全与性能 | go-concurrency-review go-security-audit go-defensive-coding go-performance-review go-observability go-troubleshooting |
| 测试 | go-test-quality go-test-table-driven |
| 工作流 | go-dependency-audit go-ci go-refactoring go-semantic-tools go-binary-size go-build-release git-commit go-skills-router |
验证清单
- 主要技能应与所提问题匹配,而不是与代码中的某个关键词匹配
- 次要技能应在同一轮中加载,而不是逐个发现
- 对于诊断任务,应先运行
go-troubleshooting,再运行优化技能 - 对于结构调整任务,应将
go-refactoring与负责目标结构的技能配合使用 - 如果恰好只有一项技能适用,应直接加载该技能,而不经过路由
- 只有在开发者批准差异后,才写入项目配置
评论
支持 Markdown