
Golang Pro
FreeMaster concurrent programming and microservices in Go.
Free · Opens the source repo
What Golang Pro does
Golang Pro is designed for developers looking to enhance their proficiency in Go 1.21+ with a focus on concurrent programming and microservices architecture. This skill guides users through the implementation of idiomatic Go patterns, leveraging goroutines and channels for efficient concurrency. It also emphasizes the design and construction of microservices using gRPC or REST, making it ideal for developers working on cloud-native applications.
The core workflow of Golang Pro includes analyzing project architecture, designing interfaces, implementing robust error handling, and optimizing application performance. Users are encouraged to follow best practices such as running go vet for code validation and using golangci-lint for linting to ensure code quality. Performance optimization is a key focus, with tools like pprof for profiling and benchmarking to identify and eliminate inefficiencies.
In addition to the core workflow, Golang Pro provides a comprehensive reference guide covering essential topics such as concurrency patterns, interface design, generics, and testing methodologies. This resource is particularly beneficial for developers who want to deepen their understanding of Go's capabilities and apply them effectively in their projects. The skill also emphasizes the importance of writing table-driven tests and maintaining high code coverage to ensure reliability and maintainability.
Overall, Golang Pro is an invaluable resource for Go developers aiming to build high-performance systems while adhering to best practices in concurrency and microservices development. It equips users with the knowledge and tools necessary to create production-grade applications efficiently and effectively.
When to use it
Use Golang Pro when developing Go applications that require efficient concurrency, microservices architecture, or performance optimization.
When not to use it
This skill may not be suitable for simple Go projects that do not require advanced concurrency patterns or microservices.
What you can build with it
Building a Microservice
Use Golang Pro to design and implement a microservice using gRPC, ensuring efficient communication and error handling.
Optimizing Performance
Leverage the profiling tools and benchmarks provided by Golang Pro to identify bottlenecks in your Go application.
Implementing Concurrency
Utilize the concurrency patterns outlined in Golang Pro to effectively manage goroutines and channels in your application.
How to install Golang Pro
View source1. Install with the skills CLI
npx skills add jeffallan/claude-skills/golang-pro --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by jeffallanGolang 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
- Analyze architecture — Review module structure, interfaces, and concurrency patterns
- Design interfaces — Create small, focused interfaces with composition
- Implement — Write idiomatic Go with proper error handling and context propagation; run
go vet ./...before proceeding - Lint & validate — Run
golangci-lint runand fix all reported issues before proceeding - Optimize — Profile with pprof, write benchmarks, eliminate allocations
- Test — Table-driven tests with
-raceflag, 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:
// 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 | Yunion 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:
- Interface definitions (contracts first)
- Implementation files with proper package structure
- Test file with table-driven tests
- 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
Frequently asked questions about Golang Pro
Similar skills
Python PyPI Package Builder
Streamline the process of creating and publishing Python packages.
Minecraft Plugin Development
Streamline your Minecraft server plugin creation.
MCP Server Builder
Easily build .NET MCP servers with the latest standards.
CommunityToolkit.Mvvm Messenger
Decoupled communication for ViewModels in .NET applications.
MVVM Toolkit DI
Streamline ViewModel integration with Dependency Injection in .NET.
MCP Apps Builder
Essential guidelines for MCP server development.
