new-feature-go
Do not open any file for editing until all 6 steps are completed.
Step 1 — Define the surface
Write the surface in plain text first:
Feature name: credits
Public types: *Service (concrete), Repository (interface, lives next to Service)
Methods: Charge(ctx, userID, amount, idem) (string, error)
Confirm(ctx, holdID) error
Refund(ctx, holdID) error
Errors: ErrInsufficientFunds (sentinel), *ValidationError (typed)
Single-writer for: Repository.Hold
[Description truncada. Veja o README completo no GitHub.]