New to Claude Skills? Learn how to install them →

jeffallan on GitHub

Golang Pro

Free

Master concurrent programming and microservices in Go.

Get this skill

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 source

1. Install with the skills CLI

npx skills add jeffallan/claude-skills/golang-pro --agent claude-code

2. 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 jeffallan

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:

TopicReferenceLoad When
Concurrencyreferences/concurrency.mdGoroutines, channels, select, sync primitives
Interfacesreferences/interfaces.mdInterface design, io.Reader/Writer, composition
Genericsreferences/generics.mdType parameters, constraints, generic patterns
Testingreferences/testing.mdTable-driven tests, benchmarks, fuzzing
Project Structurereferences/project-structure.mdModule 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 | 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

Frequently asked questions about Golang Pro

Similar skills