Production-grade Go development patterns for building resilient services...
interface{} (use any), sync.Map, scattered type assertions, reflection[T any], errors.AsType[T] (Go 1.26), concrete typesgo fix ./... after upgradesintegration, e2et.Parallel(), t.Helper(), table-driven subtestslog/slog directly -- never wrap it in custom Logger interfacesfmt.Errorf("failed to process: %w", err)Git hooks: ls lefthook.yml 2>/dev/null && lefthook install || echo "Add lefthook — see references/lefthook-template.md"
Load as needed:
| Reference | Purpose |
|---|---|
references/architecture.md |
Package structure, state mutation completeness |
references/logging.md |
Structured logging with log/slog, migration from logrus |
references/cron-scheduling.md |
go-cron patterns: named jobs, runtime updates, resilience |
references/resilience.md |
Pointer to go-cron's built-in retry/circuit-breaker/timeout wrappers |
references/docker.md |
Docker client patterns, buffer pooling |
references/ldap.md |
LDAP/Active Directory integration |
references/testing.md |
Build tags, resource isolation, race gotchas |
references/linting.md |
golangci-lint v2, staticcheck |
references/api-design.md |
Enum/status defensive handling |
references/fuzz-testing.md |
Go fuzzing patterns, security seeds |
references/contracts-and-invariants.md |
Contracts, invariants, property tests |
references/mutation-testing.md |
Gremlins configuration, test quality measurement |
references/makefile.md |
Standard Makefile interface for CI/CD |
references/modernization.md |
go fix modernizers and their build-tag trap, errors.AsType[T], b.Loop |
references/dependencies.md |
Upgrades: go get -u all, majors, build-set scoping |
references/lefthook-template.md |
Ready-to-use lefthook.yml for Go project git hooks |
references/branch-protection.md |
Ruleset watermark: three-ruleset gate, bypass modes |
references/reusable-workflows.md |
Reusable Actions workflow callers, permission propagation, release-gate outputs |
references/single-build-release.md |
Single-build release: cross-compile once, reuse for release+container |
references/awesome-go-submission.md |
awesome-go submission: CI-parsed PR body, name collisions |
Run before completing any review:
golangci-lint run --timeout 5m # Linting
go vet ./... # Static analysis
staticcheck ./... # Additional checks
govulncheck ./... # Vulnerability scan
go test -race ./... # Race detection
When govulncheck reports stdlib vulnerabilities: check fix version via vuln.go.dev, update go X.Y.Z in go.mod, run go mod tidy.
Contributing: Submit improvements to https://github.com/netresearch/go-development-skill