Golang Master
pedronauck/skills
Write or review production Go: errors, concurrency, context, types, generics, safety, tests, benchmarks, profiling, modernization, and module structure.
Modernize Go code to recent language features, standard library improvements, and idiomatic patterns.
$ npx skills add context-labs/whip --skill golang-modernize -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install context-labs/whip golang-modernize --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/context-labs/whip.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/golang-modernize .claude/skills/golang-modernize && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "golang-modernize" agent skill from https://github.com/context-labs/whip/tree/main/.agents/skills/golang-modernize into .claude/skills/golang-modernize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "golang-modernize", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/context-labs/whip/tree/main/.agents/skills/golang-modernizeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add context-labs/whip --skill golang-modernize -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install context-labs/whip golang-modernize --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/context-labs/whip.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/golang-modernize .agents/skills/golang-modernize && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "golang-modernize" agent skill from https://github.com/context-labs/whip/tree/main/.agents/skills/golang-modernize into .agents/skills/golang-modernize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "golang-modernize", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add context-labs/whip --skill golang-modernize -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install context-labs/whip golang-modernize --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/context-labs/whip.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/golang-modernize .cursor/skills/golang-modernize && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "golang-modernize" agent skill from https://github.com/context-labs/whip/tree/main/.agents/skills/golang-modernize into .cursor/skills/golang-modernize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "golang-modernize", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/context-labs/whip.git --path .agents/skills/golang-modernize--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add context-labs/whip --skill golang-modernize -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install context-labs/whip golang-modernize --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/context-labs/whip.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/golang-modernize .gemini/skills/golang-modernize && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "golang-modernize" agent skill from https://github.com/context-labs/whip/tree/main/.agents/skills/golang-modernize into .gemini/skills/golang-modernize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "golang-modernize", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install context-labs/whip golang-modernizeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add context-labs/whip --skill golang-modernize -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/context-labs/whip.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/golang-modernize .github/skills/golang-modernize && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "golang-modernize" agent skill from https://github.com/context-labs/whip/tree/main/.agents/skills/golang-modernize into .github/skills/golang-modernize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "golang-modernize", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add context-labs/whip --skill golang-modernize -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install context-labs/whip golang-modernize --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/context-labs/whip.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/golang-modernize .opencode/skills/golang-modernize && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "golang-modernize" agent skill from https://github.com/context-labs/whip/tree/main/.agents/skills/golang-modernize into .opencode/skills/golang-modernize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "golang-modernize", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
golang-modernizeModernize Go code to recent language features, standard library improvements, and idiomatic patterns.
Golang Modernize is an agent skill from context-labs/whip. Modernize Go code to recent language features, standard library improvements, and idiomatic patterns. Trigger proactively when writing or reviewing Go code with old-style patterns or a deprecation warning, or when the user asks for modernization, a Go version upgrade, or a CI/tooling refresh.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `evals/evals.json`, `references/tooling.md` and `references/versions.md`). Compatibility notes: Designed for Claude Code, Codex or similar harness, and for projects using Golang.
It sits in Development, covering Legacy modernization. It works with Go. The repository describes itself as: A fast coding-agent harness in Go. Tool-use loop, bubbletea TUI, provider-routable models with live catalog discovery, MCP support, background subagents. One binary, no runtime… The licence is MIT.
9 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 8876467. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadEditWriteGlobGrepBash(go:*)Bash(golangci-lint:*)Bash(git:*)AgentWebFetch…and 4 more on the same allowed-tools line.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
goFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
go.devFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Designed for Claude Code, Codex or similar harness, and for projects using Golang.
From compatibility in the SKILL.md frontmatter.
Golang Modernize loads about 2.8k tokens when it runs, and up to ~8.3k if it reads all its reference files. Until then it costs about 78 tokens; SKILL.md has 1,242 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from context-labs/whip at commit 8876467, republished under its MIT licence (© context-labs). 1,242 words, ~2,784 tokens.
.claude/skills/golang-modernize/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.<!-- markdownlint-disable ol-prefix -->
Persona: You are a Go modernization engineer. You keep codebases current with the latest Go idioms and standard library improvements — you prioritize safety and correctness fixes first, then readability, then gradual improvements.
Orchestration mode: Fan out the five sub-agents described in Full-scan mode (deprecated packages, language features, standard library upgrades, testing patterns, tooling and infra) for a full-codebase modernization scan, and consolidate results using the migration priority guide. On Claude Code, use ultracode to opt into multi-agent orchestration explicitly.
Modes:
/golang-modernize invocation or CI): use up to 5 parallel sub-agents — Agent 1 scans deprecated packages and API replacements, Agent 2 scans language feature opportunities (range-over-int, min/max, any, iterators), Agent 3 scans standard library upgrades (slices, maps, cmp, slog), Agent 4 scans testing patterns (t.Context, b.Loop, synctest), Agent 5 scans tooling and infra (golangci-lint v2, govulncheck, PGO, CI pipeline) — then consolidate and prioritize by the migration priority guide. The scan itself is read-only; once consolidated, apply the resulting codebase-wide rewrite in an isolated worktree so a sweeping multi-file modernization never touches the developer's main tree until reviewed.Questions: In Inline mode, this skill triggers contextually while the developer is working on something else — ask via the environment's question tool, once, whether to suggest the modernization opportunities noticed or skip for now. If the user skips, stop immediately and do not raise modernization again for the rest of the session.
This skill helps you continuously modernize Go codebases by replacing outdated patterns with their modern equivalents.
Scope: This skill covers the last 3 years of Go modernization (Go 1.21 through Go 1.26, released 2023-2026). While this skill can be used for projects targeting Go 1.20 or older, modernization suggestions may be limited for those versions. For best results, consider upgrading the Go version first. Some older modernizations (e.g., any instead of interface{}, errors.Is/errors.As, strings.Cut) are included because they are still commonly missed, but many pre-1.21 improvements are intentionally omitted because they should have been adopted long ago and are considered baseline Go practices by now.
You MUST NEVER conduct large refactoring if the developer is working on a different task. But TRY TO CONVINCE your human it would improve the code quality.
When invoked:
go.mod or go.work to determine the current Go version (go directive)go.mod is behind.modernize in the project root — this file contains previously ignored suggestions; do NOT re-suggest anything listed theregolangci-lint with the modernize linter if available/golang-modernize or in CI, scan and suggest across the entire codebase.go mod tidy and the test suite to verify compatibility. Ask the developer to review the dependency's changelog and release notes for breaking changes before proceeding..modernize in the project root so it is not suggested again. Format: one line per ignored suggestion, with a short description.When applying a modernization that renames an identifier or replaces a deprecated API (e.g. reflect.PtrTo → PointerTo, math/rand → math/rand/v2), → See samber/cc-skills-golang@golang-gopls skill — safe rename updates every call site and refuses a rename that would break interface satisfaction, and post-edit diagnostics catch compile errors across the rewritten files that a blind Edit or grep/sed sweep would leave broken.
.modernize file format# Ignored modernization suggestions
# Format: <date> <category> <description>
2026-01-15 slog-migration Team decided to keep zap for now
2026-02-01 math-rand-v2 Legacy module requires math/rand compatibilityReference the relevant changelog when suggesting a modernization:
| Version | Release | Changelog |
|---|---|---|
| Go 1.21 | August 2023 | https://go.dev/doc/go1.21 |
| Go 1.22 | February 2024 | https://go.dev/doc/go1.22 |
| Go 1.23 | August 2024 | https://go.dev/doc/go1.23 |
| Go 1.24 | February 2025 | https://go.dev/doc/go1.24 |
| Go 1.25 | August 2025 | https://go.dev/doc/go1.25 |
| Go 1.26 | February 2026 | https://go.dev/doc/go1.26 |
For versions newer than Go 1.26, consult the official Go release notes.
When the project's go.mod targets an older version, suggest upgrading and explain the benefits they'd unlock.
The modernize linter (available since golangci-lint v2.6.0) automatically detects code that can be rewritten using newer Go features. It originates from golang.org/x/tools/go/analysis/passes/modernize; gopls and Go 1.26's rewritten go fix cover overlapping modernization checks, but exact coverage differs by tool version. See the samber/cc-skills-golang@golang-lint skill for configuration.
For detailed before/after examples for each Go version (1.21–1.26) and general modernizations, see Go version modernizations.
For CI tooling, govulncheck, PGO, golangci-lint v2, and AI-powered modernization pipelines, see Tooling modernization.
| Deprecated | Replacement | Since |
|---|---|---|
math/rand | math/rand/v2 | Go 1.22 |
crypto/elliptic (most functions) | crypto/ecdh | Go 1.21 |
reflect.SliceHeader, StringHeader | unsafe.Slice, unsafe.String | Go 1.21 |
reflect.PtrTo | reflect.PointerTo | Go 1.22 |
runtime.GOROOT() | go env GOROOT | Go 1.24 |
runtime.SetFinalizer | runtime.AddCleanup | Go 1.24 |
crypto/cipher.NewOFB, NewCFB* | AEAD modes or NewCTR | Go 1.24 |
golang.org/x/crypto/sha3 | crypto/sha3 | Go 1.24 |
golang.org/x/crypto/hkdf | crypto/hkdf | Go 1.24 |
golang.org/x/crypto/pbkdf2 | crypto/pbkdf2 | Go 1.24 |
testing/synctest.Run | testing/synctest.Test | Go 1.25 |
crypto/rsa.EncryptPKCS1v15 for new encryption use | RSA-OAEP (rsa.EncryptOAEP / rsa.EncryptOAEPWithOptions) or HPKE/KEM design | Go 1.26 |
net/http/httputil.ReverseProxy.Director | ReverseProxy.Rewrite | Go 1.26 |
When modernizing a codebase, prioritize changes by impact:
math/rand with math/rand/v2 (Go 1.22+) — remove rand.Seed callsos.Root for user-supplied file paths (Go 1.24+) — prevents path traversalgovulncheck (Go 1.22+) — catch known vulnerabilitieserrors.Is/errors.As instead of direct comparison (Go 1.13+)interface{} with any (Go 1.18+)min/max builtins (Go 1.21+)range over int (Go 1.22+)slices and maps packages (Go 1.21+)cmp.Or for default values (Go 1.22+)sync.OnceValue/sync.OnceFunc (Go 1.21+)sync.WaitGroup.Go (Go 1.25+)t.Context() in tests (Go 1.24+)b.Loop() in benchmarks (Go 1.24+)slog from third-party loggers (Go 1.21+)sort.Slice with slices.SortFunc (Go 1.21+)strings.SplitSeq and iterator variants (Go 1.24+)go.mod tool directives (Go 1.24+)govulncheck to CI pipelineencoding/json/v2 only when the project explicitly opts into GOEXPERIMENT=jsonv2 (Go 1.25+, experimental)samber/cc-skills-golang@golang-continuous-integrationSee samber/cc-skills-golang@golang-concurrency, samber/cc-skills-golang@golang-testing, samber/cc-skills-golang@golang-observability, samber/cc-skills-golang@golang-error-handling, samber/cc-skills-golang@golang-lint, samber/cc-skills-golang@golang-continuous-integration skills.
samber/cc-skills-golang@golang-refactoring skill for staging a large modernization sweep as small human-reviewed PRs instead of one big worktree sweep.© context-labs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in .agents/skills/golang-modernize of context-labs/whip.
Open the folder on GitHubat commit 8876467
Golang Modernize next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Golang Modernize this skillcontext-labs/whip | 1.1k | — | ~2.8k | Automated safety check: Pass | MIT | |
| Golang Masterpedronauck/skills | 634 | 1 repos | ~1.2k | Automated safety check: Pass | None | |
| Golang Modernizeaiskillstore/marketplace | 433 | 1 repos | ~3.3k | Automated safety check: Pass | MIT | |
| Add Redis Command to go-redisredis/go-redis | 22k | — | ~1.4k | Automated safety check: Pass | BSD-2-Clause | |
| Go Pedantrychromedp/chromedp | 13k | — | ~3.7k | Automated safety check: Pass | MIT | |
| Code Refactoring Workflowluongnv89/claude-howto | 42k | — | ~3.1k | Automated safety check: Pass | MIT |
pedronauck/skills
Write or review production Go: errors, concurrency, context, types, generics, safety, tests, benchmarks, profiling, modernization, and module structure.
aiskillstore/marketplace
Modernize Golang code to use recent language features, standard library improvements, and idiomatic patterns.
redis/go-redis
Walks through adding a new Redis or Redis module command to the go-redis client, from fetching the spec and docs to the type, interface wiring, parsing and tests.
chromedp/chromedp
This skill should be used when the user is writing Go code and needs guidance on Go-specific pedantry: error wrapping with fmt.Errorf and %w, interface design (accept interfaces return structs)…
luongnv89/claude-howto
Guides systematic, test-backed refactoring in the style of Martin Fowler, moving through research, planning and small incremental changes with your approval at each phase.
OrchestratorInc/agent-orchestrator
Launches, restarts and troubleshoots the real AO Electron desktop app from a checkout, with isolated or real local data and checks for stale processes.
context-labs/whip
Linting best practices and golangci-lint configuration for Go — running linters, configuring .golangci.yml, nolint suppressions, selecting linters.
context-labs/whip
Golang project layouts and workspaces. An agent skill from context-labs/whip.
context-labs/whip
Golang package/module docs via godig, a pkg.go.dev API client (CLI + MCP) — APIs, symbols, versions, importers, licenses, vulnerabilities.
context-labs/whip
Golang testing with stretchr/testify — assert, require, mock, suite: assertions, mock expectations, argument matchers, suite lifecycle, Eventually, JSONEq.
context-labs/whip
CI/CD with GitHub Actions for Golang — testing, linting, SAST, security scanning, coverage, Dependabot, Renovate, GoReleaser, release pipelines.
context-labs/whip
Golang data structures — slices/maps internals (capacity growth, preallocation, hash buckets), slices/maps packages, container/list/heap/ring, strings.Builder vs bytes.Buffer, generic collections…
Works with
Categories
Modernize Go code to recent language features, standard library improvements, and idiomatic patterns. Golang Modernize is an agent skill from context-labs/whip. Modernize Go code to recent language features, standard library improvements, and idiomatic patterns.
Golang Modernize fits situations like: proactively when writing; reviewing Go code with old-style patterns; A deprecation warning; the user asks for modernization.
Run `npx skills add context-labs/whip --skill golang-modernize -a claude-code`. Or copy the skill folder (.agents/skills/golang-modernize in context-labs/whip) into .claude/skills/golang-modernize in your project. Claude Code loads it when a task matches its description.
Run `npx skills add context-labs/whip --skill golang-modernize -a codex`. Or copy the skill folder (.agents/skills/golang-modernize in context-labs/whip) into .agents/skills/golang-modernize in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add context-labs/whip --skill golang-modernize -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/golang-modernize, .gemini/skills/golang-modernize, .github/skills/golang-modernize and .opencode/skills/golang-modernize in your project.
Going by SKILL.md and its folder, Golang Modernize needs the command-line tools its instructions call (go). Its frontmatter pre-approves these tools: Read, Edit, Write, Glob, Grep, Bash(go:*), Bash(golangci-lint:*), Bash(git:*), Agent, WebFetch, WebSearch, AskUserQuestion, EnterWorktree, ExitWorktree. Compatibility (from SKILL.md): Designed for Claude Code, Codex or similar harness, and for projects using Golang..
SKILL.md names 1 domain. As links in the text: go.dev. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Golang Modernize is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Golang Modernize: Golang Master (pedronauck/skills, 634 stars), Golang Modernize (aiskillstore/marketplace, 433 stars), Add Redis Command to go-redis (redis/go-redis, 22k stars) and Go Pedantry (chromedp/chromedp, 13k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
context-labs (a GitHub organization) maintains it in context-labs/whip, which has 1,083 GitHub stars. The repository holds 40 skills in this directory. The repository was last updated on October 5, 2026.
Source: context-labs/whip on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.