← ClaudeAtlas

sota-golanglisted

State-of-the-art Go engineering rules (supported Go releases) that Claude applies when writing new Go code or auditing existing Go code. Covers error handling, interface/package design, goroutine and channel correctness, net/http hardening, security (SQL, exec, path traversal, CSPRNG, TLS, supply chain), performance (pprof, allocations, GC, PGO), and tooling/CI. Trigger keywords - Go, golang, goroutine, channel, go.mod, errgroup, context.Context, pprof, govulncheck, net/http, slog. Use for BOTH building Go services/libraries/CLIs and reviewing or auditing Go codebases.
martinholovsky/SOTA-skills · ★ 23 · AI & Automation · score 78
Install: claude install-skill martinholovsky/SOTA-skills
# SOTA Go (2026) Expert-level rules for producing and auditing production Go. Target a supported Go release: Go supports the two latest majors (1.25 left support when 1.27 shipped, 2026-08) — verify the supported pair at go.dev/doc/devel/release. Feature notes: loop-var scoping from 1.22, `b.Loop`/`os.Root`/tool directives from 1.24, `testing/synctest` and container-aware GOMAXPROCS from 1.25, `errors.AsType` and the default-on Green Tea GC from 1.26, the GA `goroutineleak` profile and `encoding/json` backed by v2 from 1.27 — noted where relevant. Every rule states the *why*; every rules file ends with an audit checklist of grep/vet/lint patterns. ## Purpose Two consumers, one source of truth: - **BUILD mode** — generating new Go code: follow the rules as defaults, not suggestions. Deviate only with an explicit comment justifying it. - **AUDIT mode** — reviewing existing Go code: hunt violations using the audit checklists, classify by severity, report in the finding format below. ## BUILD mode 1. Before writing code, read the rules files relevant to the task (see index). A service touching HTTP + DB + goroutines needs `03`, `04`, `05`. 2. Apply the **top-10 non-negotiables** (below) unconditionally. 3. New modules: `go mod init` with a real module path; since 1.26 it writes the previous minor as the `go` directive (`go 1.(N-1).0` under toolchain 1.N) for ecosystem compatibility — keep that unless you need newer language features; pin the `toolchain` dire