Golang Tooling Standards
Priority: P1 (Operational)
Verification Workflow (Mandatory)
After writing or modifying Go code, run in order:
mcp__ide__getDiagnostics— gopls real-time errors and type warnings (requires gopls-lsp plugin)go vet ./...— catch printf mismatches, unreachable code, shadowed variablesgoimports -w .— organize imports and format in one passgolangci-lint run ./...— run full linter suite (if.golangci.ymlpresent)
Tool Overview
| Tool | Purpose | When to Use |
|------|---------|------------|
| gopls | LSP: diagnostics, completion, hover | Always (IDE integration) |
| go vet | Static analysis — correctness bugs | After every edit |
| goimports | Import sorting + gofmt | Before commit |
| golangci-lint | Aggregated linters (errcheck, staticcheck, etc.) | CI / pre-commit |
| staticcheck | Advanced static analysis | Large codebases |
golangci-lint Setup
Configure via .golangci.yml at repo root. Recommended linters:
errcheck— enforce error handlingstaticcheck— bug detection beyond go vetgovet— shadow, compositesrevive— style enforcementgosec— security issues
See golangci.yml example.
gopls Integration
gopls powers mcp__ide__getDiagnostics. Install:
go install golang.org/x/tools/gopls@latest
Anti-Patterns
- No
gofmtalone: Usegoimports— it does formatting AND imports. - No manual import sorting: Let
goimportsmanage the order. - No skipping go vet: Run it — catches real bugs
gofmtmisses. - No broad lint disable: Fix the root cause instead of
//nolintcomments.