Go Conventions

SkillDev tools

Carlos Becker's Go implementation and review conventions. Use when writing or reviewing Go in caarlos0, GoReleaser, nFPM, env, svu, fang, and related projects.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the Go Conventions skill

What this skill tells your AI

The instructions your AI receives, as published by caarlos0/dotfiles in skills/go-conventions/SKILL.md and read by ahel’s review.

Follow repository instructions first. Prefer idiomatic, unsurprising Go with a small public surface and few dependencies.

  • Use the standard library unless a dependency provides clear, necessary value. Every new require in go.mod needs justification.
  • Wrap errors with context using %w; use errors.Is and errors.As. Error messages are lowercase, have no trailing punctuation, and say what failed.
  • Put implementation details in internal/. Define interfaces at the consumer and add generics or functional options only when concrete callers need them.
  • For CLIs, follow existing Cobra and fang patterns rather than introducing a second framework.
  • Use struct tags for declarative configuration when the repository already follows that pattern.
  • Write surgical regression tests with testify/require. Use per-case t.Run; use tables only when cases genuinely share a shape. Keep decisive assertions at the failing test line rather than hiding them in helpers.
  • Discover and use repository make targets such as test, lint, build, and ci; do not assume they exist.
  • Keep release and container changes reproducible. Follow existing GoReleaser configuration and pin container images to digests when that is the repository convention.

Run gofmt and the repository's existing targeted tests and lint commands. Do not add retries, timeouts, abstractions, or compatibility layers without a demonstrated problem.

Signals

GitHub stars
220
Forks
11
Last commit
Sep 2026
Advanced
Item type
skill
Key
go-conventions-caarlos0
Source
github.com/caarlos0/dotfiles