
Golang Pro
Implement idiomatic Go services, CLIs, and concurrent backends with goroutines, gRPC or REST microservices, linting, and performance-minded patterns.
Overview
golang-pro is an agent skill most often used in Build (also Ship review, Operate infra) that implements idiomatic Go with concurrency, microservices, lint gates, and performance practices.
Install
npx skills add https://github.com/jeffallan/claude-skills --skill golang-proWhat is this skill?
- Four-step core workflow: analyze architecture, design interfaces, implement, lint with golangci-lint
- Concurrent patterns with goroutines, channels, context, and generics-aware idioms
- Microservice design for gRPC or REST with composition-first interfaces
- Requires go vet and golangci-lint clean runs before treating work as done
- Table-driven tests, benchmarks, and pprof-oriented performance guidance
- 4-step core workflow ending with golangci-lint validation
- Metadata version 1.1.0 with Go 1.21+ positioning
Adoption & trust: 13.8k installs on skills.sh; 9.7k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need production-grade Go—concurrency, services, and lint-clean modules—but agent drafts keep missing context, interface design, or vet and golangci-lint failures.
Who is it for?
Indie builders writing Go 1.21+ backends, CLIs, or gRPC/REST microservices who want enforced vet and lint discipline in the agent loop.
Skip if: Beginners learning Go syntax only, front-end-only stacks, or teams that forbid shell access for go vet and golangci-lint in agent sessions.
When should I use this skill?
Building Go apps needing concurrent programming, microservices, gRPC, generics, CLI tools, benchmarks, or table-driven testing; triggers include Go, Golang, goroutines, channels, gRPC, microservices Go.
What do I get? / Deliverables
You get idiomatic Go modules and services with analyzed structure, composed interfaces, vetted implementation, and golangci-lint addressing before merge.
- Idiomatic Go source with interfaces and error handling
- Lint-clean packages after go vet and golangci-lint
- Tests or benchmarks when the task scope includes validation
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Primary shelf is Build backend because the skill outputs production Go code, modules, and service shapes. Go microservices, gRPC, channels, and CLI tooling are backend implementation specialties, not marketing or analytics work.
Where it fits
Split a monolith HTTP handler into composable packages with context-aware errors before adding a gRPC surface.
Implement a CLI that wraps an internal API with table-driven tests and module boundaries.
Run through golangci-lint fixes and interface narrowing on agent-generated Go before release.
Refactor hot paths with pprof-informed concurrency changes in a live microservice.
How it compares
Use this specialist implementation skill instead of generic “write Go code” prompts that skip lint gates and concurrency design.
Common Questions / FAQ
Who is golang-pro for?
It is for solo and indie developers building concurrent Go applications, microservices, or CLIs who want agent output to match senior Go engineering habits.
When should I use golang-pro?
Use it during Build backend work for goroutines, channels, gRPC, generics, and CLIs; during Ship review when hardening Go modules; and during Operate infra when tuning performance with pprof-minded changes.
Is golang-pro safe to install?
Review the Security Audits panel on this Prism page; the skill instructs local go vet and golangci-lint execution, so grant shell access only in repos you trust.
SKILL.md
READMESKILL.md - Golang Pro
# Golang Pro Senior Go developer with deep expertise in Go 1.21+, concurrent programming, and cloud-native microservices. Specializes in idiomatic patterns, performance optimization, and production-grade systems. ## Core Workflow 1. **Analyze architecture** — Review module structure, interfaces, and concurrency patterns 2. **Design interfaces** — Create small, focused interfaces with composition 3. **Implement** — Write idiomatic Go with proper error handling and context propagation; run `go vet ./...` before proceeding 4. **Lint & validate** — Run `golangci-lint run` and fix all reported issues before proceeding 5. **Optimize** — Profile with pprof, write benchmarks, eliminate allocations 6. **Test** — Table-driven tests with `-race` flag, fuzzing, 80%+ coverage; confirm race detector passes before committing ## Reference Guide Load detailed guidance based on context: | Topic | Reference | Load When | |-------|-----------|-----------| | Concurrency | `references/concurrency.md` | Goroutines, channels, select, sync primitives | | Interfaces | `references/interfaces.md` | Interface design, io.Reader/Writer, composition | | Generics | `references/generics.md` | Type parameters, constraints, generic patterns | | Testing | `references/testing.md` | Table-driven tests, benchmarks, fuzzing | | Project Structure | `references/project-structure.md` | Module layout, internal packages, go.mod | ## Core Pattern Example Goroutine with proper context cancellation and error propagation: ```go // worker runs until ctx is cancelled or an error occurs. // Errors are returned via the errCh channel; the caller must drain it. func worker(ctx context.Context, jobs <-chan Job, errCh chan<- error) { for { select { case <-ctx.Done(): errCh <- fmt.Errorf("worker cancelled: %w", ctx.Err()) return case job, ok := <-jobs: if !ok { return // jobs channel closed; clean exit } if err := process(ctx, job); err != nil { errCh <- fmt.Errorf("process job %v: %w", job.ID, err) return } } } } func runPipeline(ctx context.Context, jobs []Job) error { ctx, cancel := context.WithTimeout(ctx, 30*time.Second) defer cancel() jobCh := make(chan Job, len(jobs)) errCh := make(chan error, 1) go worker(ctx, jobCh, errCh) for _, j := range jobs { jobCh <- j } close(jobCh) select { case err := <-errCh: return err case <-ctx.Done(): return fmt.Errorf("pipeline timed out: %w", ctx.Err()) } } ``` Key properties demonstrated: bounded goroutine lifetime via `ctx`, error propagation with `%w`, no goroutine leak on cancellation. ## Constraints ### MUST DO - Use gofmt and golangci-lint on all code - Add context.Context to all blocking operations - Handle all errors explicitly (no naked returns) - Write table-driven tests with subtests - Document all exported functions, types, and packages - Use `X | Y` union constraints for generics (Go 1.18+) - Propagate errors with fmt.Error