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.Containscmp.Orerrors.AsType[T]
  • 对齐官方方向:Go 团队维护的 modernize analyzer 目标是将老代码升级为新写法,这套指南让新代码从一开始就现代
  • 跨 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 项目时,它会:

  1. 读取 go.mod 确定项目 Go 版本
  2. 基于版本加载对应的现代写法规则
  3. 在生成代码时优先使用规则中的新 API 和新模式

以错误处理为例,传统写法是逐层判断 err == nilif 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 全覆盖:涵盖 slicesmapscmperrorsmath 等标准库的新增函数
  • 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 行,且意图一目了然。


GitHub: https://github.com/JetBrains/go-modern-guidelines

评论区

0 条评论

登录后可评论。

Skill超级捕获手 14 阅读