Go 代码风格审查
基于 Uber Go Style Guide 审查 Go 代码风格,涵盖惯用约定、性能优化和编程模式。
直接操作(无需 Sub-Agent)
这些简单操作立即执行:
| 操作 | 命令 | 何时直接使用 |
|---|---|---|
| 运行 linter | golangci-lint run |
用户只需要 lint 结果 |
| 格式化代码 | goimports -w . |
仅需格式化 |
| 运行 vet | go vet ./... |
仅需 vet 检查 |
| 竞态检测 | go test -race ./... |
仅需竞态检查 |
Sub-Agent 委托
code-go-style-reviewer
用于: 系统化的 Go 风格审查
何时委托:
- 用户要求"Go 风格审查"或"代码审查"
- 需要逐项检查接口、资源管理、错误处理等
- 需要按严重程度分类问题并提供修改建议
- 涉及多个文件或整个包的审查
参数:
{
"path": "目标文件或目录路径",
"scope": "file" | "package" | "diff",
"severity": "all" | "must-fix" | "should-fix"
}
code-readability-improver(辅助)
何时联合使用:
- 风格审查 + 可读性改进 一起做
- 用户要求"全面代码审查"
决策树
用户请求:
├─ "跑一下 golangci-lint" / "lint 检查"
│ └─ 直接执行 golangci-lint run
│
├─ "审查这个文件的 Go 风格"
│ └─ 委托给 code-go-style-reviewer
│
├─ "审查最近的变更"
│ └─ 委托给 code-go-style-reviewer(scope: diff)
│
├─ "审查整个包"
│ └─ 委托给 code-go-style-reviewer(scope: package)
│
├─ "全面代码审查"
│ └─ 并行启动:
│ Agent 1: code-go-style-reviewer(风格审查)
│ Agent 2: code-readability-improver(可读性分析)
│ └─ 合并结果
│
└─ "只看 must-fix 的问题"
└─ 委托给 code-go-style-reviewer(severity: must-fix)
并行执行
多包审查
用户: "审查 pkg/mcp 和 pkg/gateway 的 Go 风格"
→ 并行启动:
Agent 1: code-go-style-reviewer(pkg/mcp)
Agent 2: code-go-style-reviewer(pkg/gateway)
→ 汇总审查报告
全面审查
用户: "全面审查代码质量"
→ 并行启动:
Agent 1: code-go-style-reviewer(风格和规范)
Agent 2: code-readability-improver(结构和可读性)
→ 合并为统一的审查报告
工作流
步骤 1: 确定范围
- 运行 lint?→ 直接执行
- 文件/包/diff?→ 委托给 Sub-Agent
- 全面审查?→ 并行启动多个 Agent
步骤 2: 启动审查 Agent
Task({
subagent_type: "general-purpose",
description: "Go 风格审查 " + path,
prompt: `你是 code-go-style-reviewer。基于 Uber Go Style Guide 审查 ${path} 的代码风格,检查接口使用、资源管理、错误处理、性能优化和代码规范,按严重程度分类问题并提供修改建议。`
})
步骤 3: 展示审查报告
审查范围说明
| 审查项 | 对应规则 | 示例 |
|---|---|---|
| 接口 | 无指针接口、编译时验证 | var _ Handler = (*Server)(nil) |
| 资源 | defer 关闭、边界拷贝 | defer f.Close() |
| 错误 | 一次处理、%w 包装 |
fmt.Errorf("...: %w", err) |
| 性能 | strconv、预分配 | make([]T, 0, n) |
| 风格 | import 分组、early return | 标准库/第三方/本项目 |
与其他技能的关系
| 场景 | 后续行动 | 使用技能 |
|---|---|---|
| 发现可读性问题 | 改进可读性 | readability-improvement |
| 发现冗余代码 | 简化代码 | code-simplification |
| 审查完成提 PR | 生成 PR 描述 | pr-description |
错误处理
- 非 Go 文件: 提示本技能仅适用于 Go 代码
- golangci-lint 未安装: 提示安装命令
- 编译失败: 建议先修复编译错误再审查风格
Converted and distributed by TomeVault — claim your Tome and manage your conversions.