What problem does it solve? Wiring a Go application's object graph by hand leads to tangled constructors, hidden initialization order, and missing-dependency failures that surface only at runtime. This Skill guides correct use of uber-go/dig so the container is built once at the composition root, constructors are registered and validated, and errors fail fast at boot instead of at first request. ## Core Features & Use Cases - Graph construction and registration: Create the container in main(), register constructors with Provide, and resolve the graph with Invoke, including dig.In/dig.Out parameter and result structs. - Advanced wiring patterns: Named values for same-type collisions, value groups for many-to-one wiring, dig.As to expose interfaces, optional dependencies, Decorate, and child scopes. - Review and testing workflows: Audit containers for service-locator anti-patterns and ignored errors, validate graphs in CI with DryRun, and override dependencies per test with Decorate. - Use Case: You are building an HTTP server where many handlers each contribute a route. Register each handler with a group:"routes" tag, consume the collected slice in the server constructor, and validate the whole graph in a CI test using dig.DryRun(true). ## Quick Start Ask the assistant to wire your Go application's dependencies with uber-go/dig, registering constructors in main and validating the graph with a dry-run Invoke.