← ClaudeAtlas

go-lintinglisted

Use when setting up linting for a Go project, configuring golangci-lint, picking a linter set, suppressing findings with //nolint, or wiring lint checks into CI. Apply proactively whenever a project lacks .golangci.yml, when lint output is unclear, or when a new package needs the project's quality bar. Does not cover code review process (see go-code-review).
muratmirgun/gophers · ★ 5 · Code & Development · score 83
Install: claude install-skill muratmirgun/gophers
# Go Linting The single most important property of a linting setup is **consistency**: every contributor and every CI run uses the same rules. `golangci-lint` is the tool; a checked-in `.golangci.yml` is the contract. ## Core Rules 1. **Every Go project has a `.golangci.yml`** at the repository root. It is the source of truth for which linters run. 2. **Lint runs in CI on every PR.** A green build means lint is green. 3. **Lint runs locally before commit.** A pre-commit hook or `make lint` keeps the feedback loop fast. 4. **Suppress with reasons.** `//nolint:linter // why` — never bare `//nolint`. 5. **Fix the cause first.** A suppression should be the last resort, not the default reaction. 6. **Never silence security linters** (`gosec`, `bodyclose`, `sqlclosecheck`) without a strong, documented reason. ## Setup Procedure 1. Install: `go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest` (or `brew install golangci-lint`). 2. Drop a baseline [`.golangci.yml`](assets/.golangci.yml) at the repo root. 3. Run `golangci-lint run ./...`. 4. Fix the findings in order — formatting first, `govet` next, style last. 5. Re-run until clean. Commit `.golangci.yml` and any source fixes together. 6. Add the CI workflow (see [references/ci-integration.md](references/ci-integration.md)). ## Minimum Linter Set These five catch the most common issues and have the lowest noise rate. Start here: | Linter | Catches | |---|---| | `errcheck` | Unchecked error returns | | `g