Go Modern Guidelines Skill:让 AI 代理写出一手地道现代 Go 代码的官方技能库
Go Modern Guidelines Skill:让 AI 代理写出一手地道现代 Go 代码的官方技能库
做 Go 开发的同学大概都有这个感受:同样让 Claude Code 写一段代码,JavaScript 或 Python 项目质量还行,一到 Go 就容易”出土文物”——for i := 0; i < len(s); i++ 这种上世纪写法信手拈来,errors.As(err, &target) 的泛型版愣是不出现,slices.Contains 嫌麻烦自己写循环……问题不在模型笨,而在训练数据有延迟,模型根本不知道 Go 1.22+ 以后出了多少好用的新 API。JetBrains 出手做了这件事。
Go Modern Guidelines 是 JetBrains 官方维护的 AI 代理技能库,本质是一份 SKILL.md + 小型 CLI 工具,告诉 AI 编码代理”这个项目用的是 Go X.XX,你只准用 X.XX 及以前版本的现代语法”。它覆盖 Go 1.0 到 Go 1.27 的所有 modernize 规则,并在每次技能激活时从项目 go.mod 自动读取目标版本,确保推荐语法与项目实际兼容。
核心能力与设计原则
该技能解决两个根本问题:一是训练数据延迟——模型不知道 errors.AsType[T](err)(Go 1.26)或 cmp.Or(a, b, c)(Go 1.24)这类新 API;二是频率偏差——即便模型”见过”某个新特性,也更容易沿用更常见的旧写法。技能通过明确规则强制代理采用现代 idiom:检测 go.mod 中的 go 版本字段,然后只推荐该版本及以下的新语法,例如用 max(a, b) 替代 if-else、用 slices.Contains 替代手动遍历、用 new(42) 直接获取指针而非 ptr := new(int); *ptr = 42。
认可度
GitHub 约 2,682 ⭐(截至 2026-08-29),Forks 79,7 月底有持续活跃更新。当天 GitHub Trending 登榜,是该日 Go 区新增 star 第一名。skills.sh 收录显示 688 次安装,claudeskills.info 显示 717 次安装,claudeskills.info 社区站统计 2,532 ⭐。JetBrains 官方背书 + GoLand 团队维护,在 Go 生态内有极高权威性。
链接
GitHub:https://github.com/JetBrains/go-modern-guidelines
原作者
JetBrains(GoLand 团队)——全球最知名的 Go IDE 厂商,Kotlin / IntelliJ IDEA / GoLand 均出自其手。
介绍
该仓库于 2026 年 2 月首次发布,核心只有一个技能文件 plugin/skills/use-modern-go/SKILL.md,附带一个本地 CLI 工具(go install 到本地缓存,不污染项目)。JetBrains 在 README 中明确指出:AI 编码代理生成 Go 代码时倾向于用旧模式,是因为训练语料和频率偏差共同作用的结果,这份技能库就是在代理的推理路径上插入一个”版本感知的现代语法参照物”。
CLI 在首次使用时通过 go install 安装到本地缓存(~/.cache/go-modern-guidelines),不修改项目文件,也不依赖任何第三方库。目标 Go 版本最低为 1.25,配合 GOTOOLCHAIN=auto(默认开启)可自动下载所需工具链。它与 Go 官方推出的 modernize analyzer 形成配合:analyzer 负责存量代码升级,这份技能库负责让新代码从一开始就写对。
特点
- 版本感知:激活时自动解析
go.mod的go字段,锁定可用特性范围,不会推荐超出项目版本的 API - 跨 Agent 支持:支持 Junie(JetBrains 自有 AI 代理)、Claude Code、Codex、Cursor、OpenCode,skills.sh 提供通用安装路径
- 零污染:CLI 安装到本地缓存,项目无感知;不修改任何项目代码
- 与官方 modernize 对齐:覆盖 Go 官方
gofmt -modernize全部规则,是新代码”源头正确”的保障 - 持续更新:跟随 Go 版本迭代,README 明确提到 Go 1.27 相关特性,确保始终与语言前沿同步
使用方法
以 Claude Code 为例,两步完成安装:
# 添加 JetBrains 官方 marketplace
/plugin marketplace add JetBrains/go-modern-guidelines
# 安装技能
/plugin install modern-go-guidelines@goland-claude-marketplace
开启自动更新(建议做一次):
- 运行
/plugin,打开 Marketplaces,选择goland-claude-marketplace,勾选 Enable auto-update - 下次 Claude Code 启动自动拉取最新版本
手动更新:
claude plugin marketplace update goland-claude-marketplace
claude plugin update modern-go-guidelines@goland-claude-marketplace
全局安装(跨项目):
npx skills add JetBrains/go-modern-guidelines --skill use-modern-go
使用场景与人群
适用于所有用 AI 代理写 Go 代码的场景:后端服务、CLI 工具、云原生组件、DevOps 脚本等。目标用户为 Go 开发者,尤其是团队中同时用 Claude Code / Cursor / Codex 的成员——多人协作时如果没有统一规范,各人 AI 助手的输出风格可能参差不齐,装上这个技能后所有代理都遵循同一套现代 Go 标准,代码审查时不再需要反复纠正”为什么用 for i := 0 而不是 range“这类问题。
输入与输出案例
案例一:自动版本检测
代理在 Go 1.24 项目中激活技能,CLI 自动从 go.mod 读取 go 1.24,代理输出:
“This project is using Go 1.24, so I’ll stick to modern Go best practices and freely use language features up to and including this version. I’ll use
slices.Contains,max/min, andcmp.Orwhere appropriate.”
接下来写代码时直接用 max(a, b)、cmp.Or(a, b, c) 而非 if-else 链,不再出现 for i := 0; i < len(s); i++。
案例二:无法检测版本时的优雅降级
在无法读取 go.mod 的场景(如新建项目或纯内存任务),技能会向用户提问:
“Could not detect Go version in this repository. Which Go version should I target? → [1.23] / [1.24] / [1.25] / [1.26]”
用户选一个数字,代理立即锁定对应版本的行为规范,避免盲目使用最新特性导致兼容问题。
评论区
登录后可评论。