Best for
- BUILD mode — generating new Go code: follow the rules as defaults, not
- AUDIT mode — reviewing existing Go code: hunt violations using the audit
martinholovsky/SOTA-skills/skills/sota-golang/SKILL.md
State-of-the-art Go engineering rules (2026 baseline, Go 1.25+) 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 BOT
Decision brief
Expert-level rules for producing and auditing production Go. Baseline language version: Go 1.25+, the oldest release still in security support (Go fixes the last two majors; 1.24 left support with 1.26's release, 2026-02). Feature notes: loop-var scoping from 1.22, b.Loop/os.Roo…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/martinholovsky/SOTA-skills --skill "skills/sota-golang"Inspect the Agent Skill "sota-golang" from https://github.com/martinholovsky/SOTA-skills/blob/7c8ae3e03ba5c8ec3292c581d92d458035240f4c/skills/sota-golang/SKILL.md at commit 7c8ae3e03ba5c8ec3292c581d92d458035240f4c. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Two consumers, one source of truth:
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 p…
Work through each relevant rules file's audit checklist against the target repo. Run the listed grep/vet/lint commands; confirm each hit manually before reporting (greps are recall-oriented, expect false positives).
Review the “Severity conventions” section in the pinned source before continuing.
Group findings by severity, CRITICAL first. End the audit with: counts per severity, the three highest-leverage fixes, and which checklists were run.
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 86/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 10 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Expert-level rules for producing and auditing production Go. Baseline language
version: Go 1.25+, the oldest release still in security support (Go fixes the
last two majors; 1.24 left support with 1.26's release, 2026-02). 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 — noted where
relevant. Every rule states the why; every rules file
ends with an audit checklist of grep/vet/lint patterns.
Two consumers, one source of truth:
03, 04, 05.go mod init with a real module path; since 1.26 it writes
the previous minor as the go directive (e.g. go 1.25.0) for ecosystem
compatibility — keep that unless you need newer language features; pin the
toolchain directive to the current patch release. Add golangci-lint
config and a CI step
running go vet, golangci-lint run, go test -race ./...,
govulncheck ./... from day one (see rules/07).rules/05 supply
chain section).-race test; parsers get a fuzz target.sync.Pool complexity, unsafe), leave a // NOTE(sota): comment
explaining the trade-off so auditors don't flag it blind.Work through each relevant rules file's audit checklist against the target repo. Run the listed grep/vet/lint commands; confirm each hit manually before reporting (greps are recall-oriented, expect false positives).
| Severity | Meaning | Examples |
|---|---|---|
| CRITICAL | Exploitable or guaranteed-incorrect in production | SQL built with fmt.Sprintf, command injection via sh -c, unbounded goroutine leak on hot path, InsecureSkipVerify: true, data race confirmed by -race |
| HIGH | Likely production incident or security weakness | Missing http.Server timeouts, no ctx cancellation on blocking goroutine, unchecked integer truncation on attacker input (G115), resp.Body never closed, panic for control flow in a server |
| MEDIUM | Correctness/maintainability hazard, latent bug | Error strings compared with strings.Contains, context stored in struct, time.After in a loop, map writes without lock under suspected concurrency, missing errors.Is/As |
| LOW | Idiom/perf debt, works but wrong shape | Returning interfaces, util package dumps, missing preallocation on hot path, non-table tests, no t.Parallel |
| INFO | Style, doc, or hygiene note | Naming, missing doc comments, gofumpt drift |
[SEVERITY] file.go:LINE — short title
Rule: rules/NN-name.md § section
Evidence: the offending line(s), verbatim
Impact: one sentence — what goes wrong, under what conditions
Fix: concrete replacement code or action
Effort: trivial | small | medium | large
Group findings by severity, CRITICAL first. End the audit with: counts per severity, the three highest-leverage fixes, and which checklists were run.
| File | Read this when... |
|---|---|
rules/01-errors.md | Writing/reviewing any error path: wrapping with %w, errors.Is/As, sentinel vs typed errors, panic/recover policy, error API design for libraries vs apps |
rules/02-design.md | Designing packages or APIs: interface placement and size, package layout and internal/, naming, zero values, generics restraint, embedding, functional options, context.Context discipline |
rules/03-concurrency.md | Anything with go, chan, sync, or select: goroutine lifecycle ownership, leak catalog, errgroup fan-out, channels-vs-mutex decision, race patterns, worker pools, semaphores, time.After traps |
rules/04-http-services.md | Building or auditing HTTP servers/clients: all five server timeouts, client timeouts and body hygiene, connection reuse, graceful shutdown, middleware, slog structured logging, request-scoped values |
rules/05-security.md | Any input crossing a trust boundary: SQL parameterization, os/exec safety, path traversal and os.Root, integer overflow (G115), output encoding (html/template), CSPRNG (crypto/rand vs math/rand), TLS config, unsafe/cgo policy, govulncheck, supply chain and go.sum |
rules/06-performance.md | Latency/memory work: pprof workflow, testing.B + b.Loop, allocation reduction, strings.Builder, sync.Pool criteria, escape analysis, GOGC/GOMEMLIMIT, PGO |
rules/07-tooling-ci.md | Setting up or auditing CI and tests: golangci-lint curated config, staticcheck/gofumpt/vet, table tests, t.Parallel correctness, testcontainers, golden files, fuzzing, go.mod hygiene and tool directives. Test strategy — suite shape, TDD, doubles, test data, flake policy — lives in sota-testing; load it for any build that writes logic. This file owns Go runner mechanics only. |
%w and context — never
discarded with _, never logged-and-ignored on a path that must abort.
Compare with errors.Is/errors.As, never string matching. (rules/01)panic is for unreachable programmer
errors only; servers recover at goroutine boundaries and log. (rules/01)context.Context, a closed channel, or a WaitGroup/errgroup join. If
you can't say how it stops, don't start it. (rules/03)go test -race ./... in CI, always. A race detector failure is a
CRITICAL finding, not flaky-test noise. (rules/03, rules/07)http.Server sets ReadHeaderTimeout, ReadTimeout, WriteTimeout,
IdleTimeout; clients set timeouts and defer resp.Body.Close() with
drain. Default zero timeouts are a DoS. (rules/04)database/sql placeholders, pgx,
or sqlc-generated code). String-built SQL is CRITICAL, no exceptions for
"internal" values. (rules/05)os/exec with argv lists, never sh -c with interpolated input;
file paths validated against a root (os.Root on 1.24+, else
filepath.Clean + prefix check after resolving symlinks). (rules/05)context.Context is the first parameter, flows down, is never stored in
a struct, and carries only request-scoped metadata — never dependencies.
(rules/02)rules/02)govulncheck ./... and golangci-lint gate CI; go.sum committed;
dependencies minimal and justified. (rules/05, rules/07)Alternatives
JasonColapietro/suede-creator-skills
Suede-owned experimentation discipline for hypotheses, sample sizing, test duration, significance, and repeatable experiment programs. Use when comparing variants, deciding whether a result is reliable, or building an experiment backlog and cadence. NOT FOR: analytics instrumentation (use suede-analytics), post-click conversion diagnosis (use suede-site-alchemy), or writing the variant copy itself (use suede-copy).
narrative-io/narrative-skills-marketplace
Translate a fuzzy analytical question into a rigorous investigation plan. Interrogates the ask, grounds the plan in the available data dictionary, applies analytical best practices, and produces a structured brief of query specifications for a downstream query-writing skill. Plans, does not write SQL. Use when: "why did X drop", "is there a relationship between A and B", "who are our highest-value customers", "what's driving the change in Y", "investigate this trend", "design an analysis for", "
alirezarezvani/claude-skills
When the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "conversion experiment," "statistical significance," or "test this." For tracking implementation, see analytics-tracking.
aAAaqwq/AGI-Super-Team
When the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "conversion experiment," "statistical significance," or "test this." For tracking implementation, see analytics-tracking.