3,936
stars
+0+11+159
129
forks
24
watchers
–
prs
–
issues
0
releases
–
discussions
README
Modern Go Guidelines This repository contains guidelines for code agents that help them write modern Go code. For example, an agent with these guidelines uses max(a, b) instead of an if-else block, slices.Contains instead of a manual loop, cmp.Or(a, b, c) instead of a chain of nil checks. It also knows about recent additions like new(42) to get a pointer to a value and errors.AsTypeT for type-safe error matching—both from Go 1.26. The guidelines cover the most useful features from Go 1.0 through Go 1.27, including everything targeted by the modernize analyzer. See FEATURES.md for the complete list with detailed descriptions and examples. An agent will: - Detect the project's Go version from go.mod - Use language features and stdlib additions available up to and including that version - Prefer modern idioms over older patterns Motivation All coding agents tend to generate outdated Go. Two reasons: 1. Training data lag. Models don't know about features added after their training cutoff. They can't use errors.AsType[T] (Go 1.26) if they've never seen it. 2. Frequency bias. Even for features the model knows, it often picks older patterns. There's more for i := 0; i < n; i++ in the training data than for i := range n, so that's what comes out. These guidelines fix both problems by giving the agent an explicit reference. This aligns with the Go team's direction. The modernize analyzer exists to automatically update existing code to use newer idioms (see this talk from the Go team). These guidelines serve the same goal for new code: agents write modern Go from the start, so there's less to fix later. Requirements The marketplace integrations run a small CLI that is installed on first use with go install. Because of that, the Go toolchain must be installed and available on your PATH. The CLI is installed into a local cache (for example ~/.cache/go-modern-guidelines) and never modifies your project. It targets Go 1.25 or newer; on an older Go it still works as long as automatic toolchain switching is enabled (GOTOOLCHAIN=auto, the default), which lets Go fetch a compatible toolchain on first run. Instructions The guidelines are available for Junie, Claude Code, Codex, and Cursor, and for other agents via skills.sh. Junie Junie CLI Run the following commands inside a Junie CLI session. 1. Add this repository as a marketplace: /extensions marketplace add JetBrains/go-modern-guidelines 2. Install the extension: /extensions install modern-go-guidelines Junie invokes the skill automatically when it is relevant to a Go task. Updating Update the installed extension from inside a Junie CLI session: /extensions update modern-go-guidelines Claude Code Installation Run the following commands inside a Claude Code session. 1. Add this repository as a marketplace: /plugin marketplace add JetBrains/go-modern-guidelines 2. Install the plugin: /plugin install modern-go-guidelines@goland-claude-marketplace Usage Claude Code