What problem does it solve? Wiring a Go application's object graph by hand leads to tangled constructors, duplicated initialization logic, and missing-dependency failures that only surface at runtime. This Skill guides an AI agent to wire applications correctly with uber-go/dig, covering Provide/Invoke, parameter and result objects, named values, value groups, scopes, and decorators. ## Core Features & Use Cases - Container Wiring Patterns: Register lazy, memoized constructors with Provide and resolve graphs with Invoke, using dig.In/dig.Out structs, named values, value groups with flatten, and dig.As to expose interfaces. - Advanced Graph Management: Apply Decorate for cross-cutting changes, child Scopes for request-local dependencies, optional dependencies, DryRun graph validation, and DOT visualization of failed wiring. - Testing and Validation: Build per-test containers, override providers with Decorate, and validate the production graph in CI without running real constructors. - Use Case: You have two *sql.DB connections (primary and read replica) and several HTTP handlers. The Skill shows how to disambiguate the databases with dig.Name and collect all handlers into a router with a value group, with no manual slice assembly in main(). ## Quick Start Ask the agent to wire your Go service's constructors with uber-go/dig using parameter objects and value groups, then validate the graph with a DryRun test.