cd /news/developer-tools/skills-for-writing-modern-go-code · home topics developer-tools article
[ARTICLE · art-114040] src=github.com ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Skills for writing modern Go code

JetBrains released a set of guidelines for code agents to write modern Go code, covering features from Go 1.0 through 1.27, including Go 1.26 additions like `new(42)` and `errors.AsType[T]`. The guidelines, available for Junie, Claude Code, Codex, and Cursor, aim to counter training data lag and frequency bias that cause agents to generate outdated Go code. They align with the Go team's `modernize` analyzer and require Go 1.25 or newer.

read5 min views2 publishedAug 28, 2026
Skills for writing modern Go code
Image: Michielbdejong (auto-discovered)

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.AsType[T](err)

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. 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

All coding agents tend to generate outdated Go. Two reasons:

Training data lag. Models don't know about features added after their training cutoff. They can't useerrors.AsType[T]

(Go 1.26) if they've never seen it. - Frequency bias. Even for features the model knows, it often picks older patterns. There's morefor i := 0; i < n; i++

in the training data thanfor 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.

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.

The guidelines are available for Junie, Claude Code, Codex, and Cursor, and for other agents via skills.sh.

Run the following commands inside a Junie CLI session.

  • Add this repository as a marketplace:
/extensions marketplace add JetBrains/go-modern-guidelines
  • Install the extension:
/extensions install modern-go-guidelines

Junie invokes the skill automatically when it is relevant to a Go task.

Update the installed extension from inside a Junie CLI session:

/extensions update modern-go-guidelines

Run the following commands inside a Claude Code session.

  • Add this repository as a marketplace:
/plugin marketplace add JetBrains/go-modern-guidelines
  • Install the plugin:
/plugin install modern-go-guidelines@goland-claude-marketplace

Claude Code invokes the skill automatically when it is relevant to a Go task.

To invoke it explicitly:

/modern-go-guidelines:use-modern-go

Claude Code can update the marketplace and installed plugin automatically at startup. Automatic updates are disabled by default for third-party marketplaces, so enable them once:

  • Run /plugin

. - Open Marketplaces and selectgoland-claude-marketplace

. - Select Enable auto-update.

When Claude Code reports that the plugin was updated, apply the new version to the current session with:

/reload-plugins

To update it manually instead, run these commands in a terminal:

claude plugin marketplace update goland-claude-marketplace
claude plugin update modern-go-guidelines@goland-claude-marketplace

Run the following commands in a terminal.

  • Add this repository as a marketplace:
codex plugin marketplace add JetBrains/go-modern-guidelines
  • Install the plugin:
codex plugin add modern-go-guidelines@goland-codex-marketplace

Refresh the marketplace and reinstall the plugin so Codex replaces its cached copy:

codex plugin marketplace upgrade goland-codex-marketplace
codex plugin remove modern-go-guidelines@goland-codex-marketplace
codex plugin add modern-go-guidelines@goland-codex-marketplace

For convenience, the guidelines are distributed as a Cursor plugin.

  • Add this repository as a marketplace by running the following command in a terminal:
cursor-agent plugin marketplace add https://github.com/JetBrains/go-modern-guidelines
  • Install the plugin with the /plugins

command inside a Cursor session.

Refresh the marketplace from Git and reopen Cursor so it can pick up the new plugin version:

cursor-agent plugin marketplace update goland-cursor-marketplace

If the installed plugin is still on the previous version, reinstall it with the /plugins

command. Cursor does not currently provide a non-interactive CLI command for updating an installed plugin.

Other Agents (via skills.sh)

The same skill package works across other agents such as OpenCode. Install it with:

npx skills add JetBrains/go-modern-guidelines

(--skill use-modern-go

installs only this skill.)

Update the project-installed skill with:

npx skills update use-modern-go -p -y

For a globally installed skill, replace -p

with -g

.

To try changes to the CLI in your agent, build this checkout into the tool's cache:

make dev-install

Then set GO_MODERN_GUIDELINES_DEV=1

in the environment your agent runs in. With it set, any agent using the plugin runs your local build instead of the released version, the same way across Claude Code, Codex, and Cursor. Export it before launching the agent so the agent process inherits it:

export GO_MODERN_GUIDELINES_DEV=1

After editing the CLI, run make dev-install

again to rebuild; the next call picks it up. To go back to the released version, unset the variable (or run make dev-uninstall

to remove the build):

make dev-uninstall

This requires the Go toolchain. The dev build is stored in the tool's cache directory ($XDG_CACHE_HOME/go-modern-guidelines

or ~/.cache/go-modern-guidelines

).

The build is driven by scripts/dev-install.sh

, which is intentionally separate from the agent-facing wrapper so an agent can never trigger a build. Without make

(for example on Windows) you can run it directly:

sh scripts/dev-install.sh install       # or: uninstall
pwsh scripts/dev-install.ps1 install    # PowerShell equivalent
── more in #developer-tools 4 stories · sorted by recency
── more on @jetbrains 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/skills-for-writing-m…] indexed:0 read:5min 2026-08-28 ·