What problem does it solve? Go services often accumulate hidden dependencies through global variables, init() functions, and concrete-type coupling, making them hard to test and refactor. This Skill provides a structured method to design or refactor dependency injection so every service declares what it needs and wiring lives in one composition root. ## Core Features & Use Cases - Design new wiring: Map the dependency graph, classify singletons vs transients, and choose between manual constructors, google/wire, uber-go/dig+fx, or samber/do using a decision table. - Refactor coupled code: Locate globals, init() setup, and service-locator patterns, then migrate incrementally to constructor injection. - Library deep dives: Reference guides cover manual DI layering, wire code generation, dig/fx lifecycle hooks and modules, and samber/do generics-based containers. - Use Case: When a Go service grows past 15 components and main() wiring becomes fragile, use this Skill to justify adopting a DI library and migrate services step by step while keeping tests mockable. ## Quick Start Ask the AI to design dependency injection wiring for your Go service graph or to refactor init()-heavy code into constructor-injected services.