What problem does it solve? Wiring a Go application's object graph by hand leads to tangled constructors, duplicated initialization code, and missing-dependency failures discovered only at runtime. This Skill guides correct use of uber-go/dig so constructors, named values, value groups, and scopes are wired declaratively at the composition root. ## Core Features & Use Cases - Container Wiring: Register lazy, memoized constructors with Provide and resolve graphs with Invoke, using dig.In/dig.Out parameter and result objects. - Advanced Graph Patterns: Disambiguate same-typed providers with dig.Name, fan in many providers with value groups and flatten, hide concrete types behind interfaces with dig.As, and isolate per-request state with scopes and Decorate. - Validation & Testing: Validate the production graph in CI with dig.DryRun, detect cycles, recover constructor panics as typed errors, and visualize failed graphs in DOT format. - Use Case: A Go HTTP service needs two *sql.DB connections (primary and read-only) plus a router consuming all registered handlers. Use named values for the databases and a value group for routes so main() never assembles slices manually. ## Quick Start Ask the AI to wire your Go application's constructors with uber-go/dig using Provide, Invoke, and dig.In parameter objects at the composition root.