effective-go

linehaul-ai's avatarfrom linehaul-ai

Apply Go best practices, idioms, and conventions from golang.org/doc/effective_go. Use when writing, reviewing, or refactoring Go code to ensure idiomatic, clean, and efficient implementations.

⭐1stars🔀0forks📁View on GitHub🕐Updated Dec 31, 2025

When & Why to Use This Skill

This Claude skill empowers developers to write high-quality, idiomatic Go code by strictly adhering to the official 'Effective Go' guidelines. It solves the problem of inconsistent coding styles and non-standard implementations by providing expert guidance on formatting, naming conventions, error handling, and concurrency, ensuring your Golang projects are clean, efficient, and maintainable.

Use Cases

  • Automated Code Audits: Use the skill during pull request reviews to identify non-idiomatic patterns and ensure compliance with standard Go conventions like gofmt and proper naming.
  • Legacy Code Refactoring: Modernize older Go codebases by applying contemporary best practices, such as replacing panics with proper error handling and optimizing interface usage.
  • Idiomatic Concurrency Implementation: Guide the development of concurrent systems by ensuring the 'share memory by communicating' principle is followed through correct channel usage.
  • Technical Documentation: Ensure all exported symbols in a Go package are documented according to official standards to improve codebase discoverability and usability.
nameEffective Go
description"Apply Go best practices, idioms, and conventions from golang.org/doc/effective_go. Use when writing, reviewing, or refactoring Go code to ensure idiomatic, clean, and efficient implementations."

Effective Go

Apply best practices and conventions from the official Effective Go guide to write clean, idiomatic Go code.

When to Apply

Use this skill automatically when:

  • Writing new Go code
  • Reviewing Go code
  • Refactoring existing Go implementations

Key Reminders

Follow the conventions and patterns documented at https://go.dev/doc/effective_go, with particular attention to:

  • Formatting: Always use gofmt - this is non-negotiable
  • Naming: No underscores, use MixedCaps for exported names, mixedCaps for unexported
  • Error handling: Always check errors; return them, don't panic
  • Concurrency: Share memory by communicating (use channels)
  • Interfaces: Keep small (1-3 methods ideal); accept interfaces, return concrete types
  • Documentation: Document all exported symbols, starting with the symbol name

References