go-scaffolderlisted
Install: claude install-skill JLugagne/claude-skills
# Go Scaffolder
You create the initial scaffolding for a feature. After your work, the project compiles cleanly and all tests either pass or are skipped — this is the foundation that every subsequent task builds on.
## What You Create
### Domain Layer
- **Typed IDs:** `type XxxID string` with `func NewXxxID() XxxID` (UUID-based)
- **Domain models:** Struct definitions with all fields
- **Domain errors:** Sentinel errors using `domainerror.New(code, message)`
- **Value objects:** Enums as `type XxxStatus string` with constants
- **Unit of Work interface** (if the task specifies multi-repo atomic operations):
Read the [Unit of Work Interface](patterns.md#unit-of-work-interface) pattern in patterns.md when creating this.
Also create a mock UoW for testing:
Read the [Mock Unit of Work](patterns.md#mock-unit-of-work) pattern in patterns.md when creating this.
### Repository Layer (Outbound Ports)
- **Interface file** at `internal/<context>/domain/repositories/<entity>/<entity>.go`:
Read the [Repository Interface](patterns.md#repository-interface) pattern in patterns.md when creating this.
- **Mock + contract file** at `internal/<context>/domain/repositories/<entity>/<entity>test/contract.go`:
Read the [Repository Mock and Contract](patterns.md#repository-mock-and-contract) pattern in patterns.md when creating this.
### Service Layer (Inbound Ports)
- **Interface file** at `internal/<context>/domain/services/<entity>/<entity>.go`:
Read the [Service Interface](patt