Skip to content
Back to skills

Golang Patterns

ASecurity

Use when idiomatic Go patterns, best practices, and conventions for building robust, efficient, and maintainable Go applications. Only for Go — not for other languages. Triggers on \"golang-patterns\", \"golang patterns\", \"patterns\".

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 19, 2026
ai-agentspythonrustgokotlintestingrefactoringperformance

Security analysis

A100/100

Pro scans all 9 files and shows the line behind each finding

Scanned September 19, 2026

npx -y skills add majinmagros/magros.ai-skills --skill golang-patterns --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Golang Patterns?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Golang Patterns
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majinmagros-golang-patterns/badge)](https://www.skillsdirectory.com/skills/majinmagros-golang-patterns)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: golang-patterns
description: "Use when idiomatic Go patterns, best practices, and conventions for building robust, efficient, and maintainable Go applications. Only for Go — not for other languages. Triggers on \"golang-patterns\", \"golang patterns\", \"patterns\"."
metadata:
  origin: ECC
---

# Go Development Patterns

Idiomatic Go patterns and best practices for building robust, efficient, and maintainable applications.

## When to Activate

- Writing new Go code
- Reviewing Go code
- Refactoring existing Go code
- Designing Go packages/modules

## When NOT to Use

- Other languages (use `python-patterns`, `rust-patterns`, `kotlin-patterns`, etc.)
- Go test strategy specifically (use `golang-testing`)

## Contents

| Topic | Reference |
|---|---|
| Core principles (simplicity, zero value, interfaces) | `references/core-principles.md` |
| Error handling (wrapping, custom types, Is/As) | `references/error-handling.md` |
| Concurrency (worker pool, context, errgroup) | `references/concurrency.md` |
| Interface design | `references/interfaces.md` |
| Package organization | `references/packages.md` |
| Struct design (options, embedding) | `references/structs.md` |
| Memory and performance | `references/performance.md` |
| Tooling (commands, golangci) | `references/tooling.md` |

## Quick Reference: Go Idioms

| Idiom | Description |
|-------|-------------|
| Accept interfaces, return structs | Functions accept interface params, return concrete types |
| Errors are values | Treat errors as first-class values, not exceptions |
| Don't communicate by sharing memory | Use channels for coordination between goroutines |
| Make the zero value useful | Types should work without explicit initialization |
| A little copying is better than a little dependency | Avoid unnecessary external dependencies |
| Clear is better than clever | Prioritize readability over cleverness |
| gofmt is no one's favorite but everyone's friend | Always format with gofmt/goimports |
| Return early | Handle errors first, keep happy path unindented |

## Anti-Patterns to Avoid

```go
// Bad: Naked returns in long functions
func process() (result int, err error) {
    // ... 50 lines ...
    return // What is being returned?
}

// Bad: Using panic for control flow
func GetUser(id string) *User {
    user, err := db.Find(id)
    if err != nil {
        panic(err) // Don't do this
    }
    return user

Files in this skill

  • SKILL.md2.4 KB
  • references/concurrency.md2.6 KB
  • references/core-principles.md1.5 KB
  • references/error-handling.md1.7 KB
  • references/interfaces.md1.1 KB
  • references/packages.md1.2 KB
  • references/performance.md1.5 KB
  • references/structs.md1.2 KB
  • references/tooling.md718 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…