Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

golang-pro — Claude Code skill: Go and installation

A Go skill for concurrent code, microservices, performance profiling, and idiomatic interfaces. Use it for goroutines, gRPC, benchmarks, and table-driven tests.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add Jeffallan/claude-skills --skill golang-pro -a claude-code
Open on GitHub

What golang-pro does

golang-pro reviews Go module structure, interfaces, and concurrency patterns before helping implement the feature. It covers goroutines, channels, generics, gRPC and REST microservices, CLI tools, benchmarks, and table-driven tests. Error wrapping and context propagation are part of the workflow.

The skill uses gofmt, runs go vet ./..., and validates code with golangci-lint run. Testing guidance includes the -race flag and fuzzing, while pprof is used for performance profiling. Topic-specific material is loaded from references/concurrency.md, references/interfaces.md, references/generics.md, references/testing.md, and references/project-structure.md.

It targets Go 1.21+ and expects goroutines to have a clear lifecycle, blocking work to accept context.Context, and errors to be handled explicitly. Check the Go version and golangci-lint before relying on the full workflow.

What it helps with

  • trace goroutine and channel behavior
  • design interfaces and Go module structure
  • build a gRPC or REST microservice
  • profile allocations and hot paths with pprof
  • validate table-driven tests with the race detector

Example prompts for the agent

  • Review this Go code for goroutine leaks and add cancellation with `context.Context`.
  • Design a gRPC microservice with focused interfaces and table-driven tests, then run `go vet ./...`.
  • Profile this application with pprof, add a benchmark, and run the tests with the `-race` flag.

How to install golang-pro

1Skills CLI (Vercel)

npx skills add Jeffallan/claude-skills --skill golang-pro -a claude-code

2Manually: put the files in place

~/.claude/skills/golang-pro/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/golang-pro/

From the same set5

The whole set →

Similar

python-code-style Seth Hobson A skill for Python style rules, linting, formatting, naming, and documentation. Use it when writing code, reviewing changes, or setting project standards. Claude Code CX Codex Cursor 16,456installs ccxt-python ccxt Helps Python developers integrate cryptocurrency exchanges using CCXT. Covers REST and WebSocket endpoints in both synchronous and asyncio modes. Claude Code CX Codex Cursor +1 2,000installs golang-code-style samber A skill for writing clear Go code: line breaking, variable declarations, control flow, when comments help. Use it when writing or reviewing Go, discussing style, or setting project standards. Claude Code CX Codex Cursor +1 44,000installs uv-package-manager Seth Hobson This skill helps an agent manage Python projects with uv: dependencies, virtual environments, and Python versions. Use it for new projects or migrations from pip. Claude Code CX Codex Cursor 15,210installs golang-design-patterns samber This skill guides idiomatic Go design for APIs, resource lifecycles, graceful shutdown, and architecture. Use it when designing or reviewing Go code. Claude Code CX Codex Cursor +1 41,900installs golang-performance samber Guides AI coding agents through profiling, memory allocation cuts, and CPU optimization in Go projects using a strict measurement-first cycle. Claude Code CX Codex Cursor +1 41,800installs migrate-to-shoehorn Matt Pocock Replaces as type assertions in tests with helpers from @total-typescript/shoehorn. Use it when tests need partial objects or deliberately invalid data. Claude Code 475,388installs write-swift emilkowalski This skill guides Swift coding, reviews, and migrations using the language’s current practices. Use it to investigate concurrency errors, hangs, data races, or retain cycles. Claude Code CX Codex Cursor +1 117,500installs

Questions about golang-pro

How do I install golang-pro in Claude Code?

Run npx skills add Jeffallan/claude-skills --skill golang-pro -a claude-code, run the same command once more, then check ~/.claude/skills/golang-pro/SKILL.md.

What does golang-pro do?

It guides Go implementation around goroutines, channels, generics, interfaces, and explicit error handling. It also covers gRPC or REST microservices, pprof, benchmarks, fuzzing, and tests with -race.

Which Go versions does golang-pro target?

The skill targets Go 1.21+. Its generics guidance uses constraints available from Go 1.18 onward.

Source text

SKILL.md · MIT
---
name: golang-pro
description: 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 programming, microservices architecture, or high-performance systems. Invoke for goroutines, channels, Go generics, gRPC integration, CLI tools, benchmarks, or table-driven testing.
license: MIT
metadata:
  author: https://github.com/Jeffallan
  company: https://synergetic.solutions
  version: "1.1.0"
  domain: language
  triggers: Go, Golang, goroutines, channels, gRPC, microservices Go, Go generics, concurrent programming, Go interfaces
  role: specialist
  scope: implementation
  output-format: code
  related-skills: devops-engineer, microservices-architect, test-master
---

# 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.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

Maintained by [@jeffallan](https://github.com/jeffallan), Principal Consultant at [Synergetic Solutions](https://synergetic.solutions)

[Documentation](https://jeffallan.github.io/claude-skills/skills/language/golang-pro/)

© https://github.com/Jeffallan · MIT · Jeffallan/claude-skills

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor