What problem does it solve? Go services often end up with global variables, init() setup, and hardcoded dependencies that make code untestable and tightly coupled. This Skill guides you to inject dependencies through constructors, define interfaces at consumption sites, and pick the right DI approach for your project size. ## Core Features & Use Cases - Manual Constructor Injection: Wire small projects (< 10 services) explicitly in main() with layered initialization order, no library required. - DI Library Decision Table: Compare google/wire, uber-go/dig, uber-go/fx, and samber/do across type safety, lifecycle management, lazy loading, and learning curve. - Refactor Mode: Detect global variables, concrete-type coupling, and service-locator anti-patterns in existing code, then produce a migration plan. - Use Case: You inherit a Go microservice where every service opens its own database connection via globals. The Skill maps the dependency graph, flags the anti-patterns, and generates constructor-based wiring with mockable interfaces for tests. ## Quick Start Ask the agent to review your Go service's dependency setup and recommend whether to use manual injection or a DI library like samber/do, wire, or fx.