Agent skill

go-patterns

This skill should be used for Go idioms, error handling, goroutines, interfaces, and testing, golang, Go language, Go modules, Go concurrency

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/testing/go-patterns

SKILL.md

Go Patterns

Idiomatic Go patterns for Go 1.21+.

Error Handling

go
if err != nil {
    return fmt.Errorf("failed to process %s: %w", id, err)
}

Interfaces

Small interfaces (1-3 methods). Accept interfaces, return structs.

go
type Reader interface {
    Read(p []byte) (n int, err error)
}

Table-Driven Tests

go
tests := []struct{
    name string
    input, want int
}{
    {"positive", 2, 3},
}
for _, tt := range tests {
    t.Run(tt.name, func(t *testing.T) {
        if got := Fn(tt.input); got != tt.want {
            t.Errorf("got %d, want %d", got, tt.want)
        }
    })
}

Concurrency

Always propagate context for cancellation:

go
func work(ctx context.Context) error {
    select {
    case <-ctx.Done():
        return ctx.Err()
    default:
        // do work
    }
}

Defer for Cleanup

go
f, err := os.Open(path)
if err != nil { return err }
defer f.Close()

Didn't find tool you were looking for?

Be as detailed as possible for better results