go-modern-guidelines Skill:让 AI coding agent 写出地道现代 Go 的 JetBrains 官方指南
一款让 AI 编程助手”跟上时代”的 JetBrains 官方 Skill——go-modern-guidelines。它解决的问题很直接:大模型的训练数据有截止日期,写代码时会本能地使用旧语法;在 GitHub trending 上榜的今天,JetBrains 把 Go 1.0 到 Go 1.27 所有最现代的写法打包成一份 AI 可引用的指南,让 coding agent 从第一行开始就写出现代 Go,而不是先写老代码再靠 modernize 工具来修。
功能与原则
go-modern-guidelines 是一份结构化的 Go 编码规范库,核心能力是引导 AI coding agent 在生成代码时使用最新语法。它不替代 linter,而是从源头控制”第一版代码”的质量。
设计原则:
- 版本感知:从
go.mod读取项目 Go 版本,只推荐该版本及以下可用的特性 - 显式优于隐式:把模型”可能见过但不常用”的新 API 直接写进规则(如
slices.Contains、cmp.Or、errors.AsType[T]) - 对齐官方方向:Go 团队维护的
modernizeanalyzer 目标是将老代码升级为新写法,这套指南让新代码从一开始就现代 - 跨 Agent 兼容:支持 Junie、Claude Code、Codex、Cursor,覆盖主流 coding agent
认可度
- GitHub stars:约 2,195(截至 2026-08-28)
- 今日 GitHub Trending 上榜:Python/工具类 trending,300+ 今日新增 star
- 维护方:JetBrains(GoLand 团队),背书权威性高
- 安装方式:Claude Code plugin marketplace、skills.sh 等多渠道
- 生态定位:AI coding agent 专用,区别于通用代码规范文档
链接
GitHub:https://github.com/JetBrains/go-modern-guidelines
原作者
JetBrains / GoLand 团队(@JetBrains)——全球最知名的 IDE 厂商之一,GoLand 和 Fleet 的开发方,在语言工具链领域积累深厚。他们发布这份指南属于”官方下场”,代表了 JetBrains 对 AI 编程工具生态的战略布局。
介绍
大模型写代码有两个典型问题:训练数据滞后和频率偏差。前者导致模型不知道 Go 1.26 新增的 errors.AsType[T] 或 new(42) 这种新语法;后者导致即模型”见过”现代写法,也会因为老写法出现频率更高而优先选旧方案。
go-modern-guidelines 的解法是把 Go 各版本的现代写法整理成 AI 可查询的规则集。当 agent 在处理 Go 项目时,它会:
- 读取
go.mod确定项目 Go 版本 - 基于版本加载对应的现代写法规则
- 在生成代码时优先使用规则中的新 API 和新模式
以错误处理为例,传统写法是逐层判断 err == nil 或 if err != nil;现代写法用 errors.AsType[T](err) 做类型安全匹配,代码更简洁且语义更清晰。指南会让 agent 主动使用这类新模式,而不是”能跑就行”。
覆盖范围从 Go 1.0 到 Go 1.27,包括 slices.Contains 替代手动循环、cmp.Or 替代链式 nil 判断、max/min 内置函数替代 if-else 版极值等高频场景。
特点
- 版本精确匹配:读取
go.mod,只推荐目标版本可用的特性,不会生成目标环境跑不了的代码 - 现代 API 全覆盖:涵盖
slices、maps、cmp、errors、math等标准库的新增函数 - Go 1.26+ 新语法:原生支持
new(42)指针字面量、errors.AsType[T]泛型错误匹配等最新特性 - Claude Code 自动触发:安装后 agent 在处理 Go 任务时自动激活,无需手动调用
- marketplace 生态:通过 Claude Code plugin marketplace 一键安装,自动更新
使用方法
安装(Claude Code)
在 Claude Code 中依次执行:
# 添加 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 在处理任何 Go 项目时会自动激活该 skill,在合适场景提示使用现代写法。
如需手动触发:
/modern-go-guidelines:use-modern-go
安装(其他 agent)
通过 skills.sh 安装,适用于 Junie、Codex、Cursor 等支持 skills.sh 的 agent。
版本升级
claude plugin marketplace update goland-claude-marketplace
claude plugin update modern-go-guidelines@goland-claude-marketplace
使用场景与人群
适用场景:
- Go 项目开发,AI coding agent 辅助编程
- 老旧 Go 代码库维护,需要引入现代写法
- 团队想统一 AI 生成代码的风格标准
目标用户:
- 使用 Claude Code / Codex / Cursor 等 AI 编程工具的 Go 开发者
- 需要 AI 生成符合项目 Go 版本要求代码的工程师
- 希望 AI 第一版代码就是”现代 Go”而不是”能用但过时”的团队
输入与输出案例
输入: 一个 Go 函数,用传统方式遍历 slice 查找元素:
func findUser(users []User, id string) *User {
for _, u := range users {
if u.ID == id {
return &u
}
}
return nil
}
输出(go-modern-guidelines 激活后): agent 识别到这是 Go 项目且版本支持 slices 包,重写为:
import "slices"
func findUser(users []User, id string) *User {
idx := slices.IndexFunc(users, func(u User) bool { return u.ID == id })
if idx == -1 {
return nil
}
return &users[idx]
}
或更现代的写法:
func findUser(users []User, id string) (u *User, ok bool) {
u = slices.Collect(slices.Filter(users, func(u User) bool { return u.ID == id }))
if len(u) > 0 {
return &u[0], true
}
return nil, false
}
输入: 用 if-else 链做 nil 检查返回默认值:
func getConfig(primary, secondary, tertiary *Config) *Config {
if primary != nil {
return primary
}
if secondary != nil {
return secondary
}
if tertiary != nil {
return tertiary
}
return nil
}
输出(go-modern-guidelines 激活后): agent 识别到 cmp.Or 可替代链式判断:
import "cmp"
func getConfig(primary, secondary, tertiary *Config) *Config {
return cmp.Or(primary, secondary, tertiary)
}
代码从 12 行压缩到 3 行,且意图一目了然。
评论区
登录后可评论。