What problem does it solve? Setting up dependency injection in Go often leads to tangled manual constructor wiring, wrong library versions (v1 vs v2), and anti-patterns like passing the container into business logic. This Skill guides correct adoption of samber/do v2 with type-safe generics-based registration, lifecycle management, and testing patterns. ## Core Features & Use Cases - Service Registration & Resolution: Register lazy, eager, transient, value, and named services, then invoke them by type or interface using implicit aliasing with InvokeAs. - Lifecycle & Scopes: Organize services with do.Package modules and child scopes, implement Healthchecker and Shutdowner interfaces, and handle graceful shutdown on OS signals. - Testing Support: Clone containers and override services with mocks for isolated unit tests. - Use Case: When refactoring a Go web app from manual constructor injection in main.go, use this Skill to restructure registrations into per-module packages with request-scoped services and signal-based graceful shutdown. ## Quick Start Ask the AI to set up dependency injection in your Go project using samber/do v2 with a container, a database service, and graceful shutdown.