Skip to content
Code Generation
Skill

/go-guidelines

Go best practices for performance, modern syntax, generics, patterns, testing, error handling, and concurrency. Use when writing or reviewing Go code.

From plugin
go-guidelines
1051 skill

Claude Code

$ npx -y skills add mhmtszr/go-guidelines --skill go-guidelines --agent claude-code

SKILL.md

go-guidelines.SKILL.md
name: go-guidelines
description: Go best practices for performance, modern syntax, generics, patterns, testing, error handling, and concurrency. Use when writing or reviewing Go code.

Go Guidelines

Detected Go Version

!`grep -rh "^go " --include="go.mod" . 2>/dev/null | cut -d' ' -f2 | sort | uniq -c | sort -nr | head -1 | xargs | cut -d' ' -f2 | grep . || echo unknown`

How to Use

DO NOT search for go.mod files or try to detect the version yourself. Use ONLY the version shown above.

**If version detected (not "unknown"):**

  • Say: "This project is using Go X.XX, so I'll follow Go best practices and modern syntax up to and including this version. If you'd prefer a different target version, just let me know."
  • Do NOT list features, do NOT ask for confirmation

**If version is "unknown":**

  • Say: "Could not detect Go version in this repository"
  • Use AskUserQuestion: "Which Go version should I target?" with options ... / [1.20] / [1.21] / [1.22] / [1.23] / [1.24] / [1.25] / [1.26] / [1.27] / ...

Reference Loading

**Read ONLY the reference file(s) relevant to your current task. Do NOT load all files at once.**

When reading reference files, **stop at the detected Go version boundary** — ignore features from newer versions.

| When you are... | Read this reference | |---|---| | Using version-specific Go syntax or idioms | [references/modern-syntax.md](references/modern-syntax.md) | | Optimizing performance, struct layout, escape analysis | [references/performance.md](references/performance.md) | | Working with goroutines, channels, sync, select, false sharing | [references/concurrency.md](references/concurrency.md) | | Writing HTTP servers, shutdown, health checks, middleware, interfaces, io.Reader | [references/patterns.md](references/patterns.md) | | Writing tests, mocks, benchmarks, fuzz tests | [references/testing.md](references/testing.md) | | Handling errors, wrapping, custom error types | [references/error-handling.md](references/error-handling.md) | | Working with slices, maps, append, memory leaks | [references/slices-and-maps.md](references/slices-and-maps.md) | | Using context.Context, values, cancellation, timeouts | [references/context-patterns.md](references/context-patterns.md) | | Using generics, type parameters, constraints | [references/generics.md](references/generics.md) | | Debugging subtle bugs, nil traps, shadowing, sync copying, defer, time | [references/pitfalls.md](references/pitfalls.md) |

**Multiple topics may apply.** For example, writing a concurrent function with tests: load `modern-syntax.md` + `concurrency.md` + `testing.md`.

---

After Making Changes

After making Go code changes, run static analysis and tests on the changed packages:

which golangci-lint >/dev/null 2>&1 && golangci-lint run ./path/to/changed/package/... || go vet ./path/to/changed/package/...
go test ./path/to/changed/package/... -race

**If the detected Go version is 1.26 or newer**, also run `go fix` on the changed packages ([Using go fix to modernize Go code](https://go.dev/blog/gofix)):

go fix ./path/to/changed/package/...
  • Prefer `golangci-lint` when available, fall back to `go vet`
  • Always run tests with the race detector
  • On Go 1.26+, always run `go fix` after changes (use `go fix -diff` to preview; run twice if needed until a fixed point)
  • Fix all reported issues in the changed code before finishing
  • Do not fix pre-existing issues in unrelated code
  • If neither linter is available, skip silently and continue
Read more
Stats
105
Stars
6
Forks
Maintained
Maintenance
JavaScript
Language
MIT
License
Last commit
Created
Added

Repo: mhmtszr/go-guidelines

@mhmtszr
Ships withgo-guidelines

Make your AI code agent write production-grade Go instead of tutorial-grade Go.

Stars on GitHub

Momentum

stars in total
105
Star history of mhmtszr/go-guidelines on GitHub, a chart by star-history.com

More skills from other plugins.

Questions about go-guidelines.

Which coding agents can use go-guidelines?
go-guidelines installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.