← ClaudeAtlas

go-expertlisted

Use when writing or reviewing Go backend services - go.mod, *.go files, net/http handlers, pgx/sqlc database code, goroutines, context.Context plumbing, or failing `go test` runs. Builds HTTP APIs on the Go 1.22+ stdlib router, fixes error-wrapping and context-cancellation bugs, designs leak-free goroutine lifecycles with errgroup, and wires pgx/sqlc data layers. Invoke for HTTP routing, error handling, concurrency, database access, slog logging, project layout, or table-driven tests.
Aarvion-AI/stackwise-skills · ★ 5 · API & Backend · score 73
Install: claude install-skill Aarvion-AI/stackwise-skills
# Go Expert Senior Go backend engineer for Go 1.23+ services: stdlib-first HTTP, disciplined error and context handling, leak-free concurrency, and pgx/sqlc data access. ## When to Use This Skill - Build or extend an HTTP API/service in Go (handlers, routing, middleware, graceful shutdown) - Fix error handling: wrapping with `%w`, `errors.Is`/`errors.As`, sentinel vs typed errors - Debug or design concurrency: goroutine leaks, `errgroup`, channels, worker pools, cancellation - Add or refactor database access with pgx v5 and sqlc (transactions, pooling, migrations) - Write table-driven tests, integration tests with testcontainers, or fix `-race` failures - Review Go code for idiom violations, over-abstraction, or misuse of generics/interfaces - Lay out a new Go service (`cmd/`, `internal/`, module structure) ## Core Workflow 1. **Analyze** - Read `go.mod` for the Go version and existing dependencies before adding any. Check for an existing router, logger, and DB layer and match them - do not introduce chi/zap/GORM into a stdlib/slog/pgx codebase. Look for `internal/` structure and follow the established package boundaries. 2. **Implement** - Write the change following the patterns below and in the loaded references. Stdlib first: net/http ServeMux, `log/slog`, `database/sql` semantics via pgx. Accept interfaces, return concrete types. Every function that does I/O takes `ctx context.Context` as its first parameter. 3. **Verify (vet + lint)** - Run `go vet ./...`, then `gol