# Go Rules Essential rules for Go development. Detailed patterns in `.kilo/skills/go-*`. ## Checklist - [ ] `gofmt` + `go vet` + `golangci-lint` before commit - [ ] Handle all errors; wrap with `fmt.Errorf("%w", err)` - [ ] `context.Context` as first param; never store in structs - [ ] Table-driven tests; `t.Parallel()` where safe; `go test -race ./...` - [ ] Accept interfaces, return concrete types; keep interfaces small - [ ] Parameterized queries; validate inputs; env vars for secrets - [ ] Thin HTTP handlers; middleware for cross-cutting concerns - [ ] Structured logging (zap/zerolog); never log sensitive data - [ ] `go mod tidy` regularly; `govulncheck ./...` for CVEs ## Project Structure ``` cmd/server/main.go → internal/{config,handlers,services,repositories,models} → pkg/public ```