Agent Skills: Golang Architecture

Structure Go projects with Clean Architecture and standard layout conventions. Use when structuring Go projects or applying Clean Architecture in Go. (triggers: go.mod, internal/**, architecture, structure, folder layout, clean arch, dependency injection)

UncategorizedID: hoangnguyen0403/agent-skills-standard/golang-architecture

Install this agent skill to your local

pnpm dlx add-skill https://github.com/HoangNguyen0403/agent-skills-standard/tree/HEAD/skills/golang/golang-architecture

Skill Files

Browse the full folder contents for golang-architecture.

Download Skill

Loading file tree…

skills/golang/golang-architecture/SKILL.md

Skill Metadata

Name
golang-architecture
Description
Structure Go code with package-first boundaries, `cmd/` and `internal/`, and explicit dependency wiring. Use when shaping project layout, package ownership, or service boundaries in Go.

Golang Architecture

Priority: P0 (CRITICAL)

Rules

  • Package-first design: organize by domain/capability before package-by-layer sprawl.
  • Layout: cmd/ for binaries, internal/ for private app code, pkg/ only for intentional reuse.
  • Wiring: compose dependencies in main or dedicated constructors, not via hidden globals.
  • Interfaces: define small interfaces on the consumer side.
  • Context: pass context.Context across I/O and request boundaries.

Recipe

  1. Place the entrypoint in cmd/<app>.
  2. Create domain-owned packages under internal/.
  3. Expose constructors for services, repositories, and handlers.
  4. Keep business rules out of transport packages.
  5. Wire logging, config, DB, and HTTP server at startup.

Verify

  • [ ] No package-level mutable singletons control runtime behavior.
  • [ ] Imports flow inward; transport and storage packages do not pull business rules outward.
  • [ ] Interfaces live with callers that need substitution.
  • [ ] main wires dependencies but does not hold business logic.
  • [ ] Request and DB paths accept context.Context.

Anti-Patterns

  • No package soup: avoid dumping unrelated code into internal/shared or pkg/utils.
  • No global singletons: use constructors; avoid package-level mutable variables.
  • No god services: split orchestration by capability.
  • No fake Clean Architecture theatre: package names must match real ownership.

References