golang-pro
Implements concurrent Go patterns using goroutines and channels, designs and builds microservices with gRPC or REST, optimizes Go application performance with pprof, and enforces idiomatic Go with generics, interfaces, and robust error handling. Use when building Go applications requiring concurrent
By jeffallan · 17,571 installs
npx skills add jeffallan/claude-skills --skill golang-pro
Source repository · Upstream listing
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:
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.Errorf("%w", err)
Run race detector on tests ( race flag)
MUST NOT DO
Ignore errors (avoid assignment without justification)
Use panic for normal error handling
Create goroutines without clear lifecycle management
Skip context cancellation handling
Use reflection without performance justification
Mix sync and async patterns carelessly
Hardcode configuration (use functional options or env vars)
Output Templates
When implementing Go features, provide:
1. Interface definitions (contracts first)
2. Implementation files with proper package structure
3. Test file with table driven tests
4. Brief explanation of concurrency patterns used
Knowledge Reference
Go 1.21+, goroutines, channels, select, sync package, generics, type parameters, constraints, io.Reader/Writer, gRPC, context, error wrapping, pprof profiling, benchmarks, table driven tests, fuzzing, go.mod, internal packages, functional options
[Documentation](https://jeffallan.github.io/claude skills/skills/language/golang pro/)