What problem does it solve? Manually wiring Go application dependencies is error-prone and runtime DI containers hide errors until startup. This Skill guides you through google/wire so the compiler catches missing dependencies and generates plain Go constructor calls with no runtime reflection. ## Core Features & Use Cases - Provider Sets and Injectors: Organize providers with wire.NewSet per package and declare injectors with wire.Build under the //go:build wireinject tag. - Interface Bindings and Struct Injection: Map interfaces to concrete types with wire.Bind, fill struct fields with wire.Struct, and promote config fields with wire.FieldsOf. - Cleanup Chains: Return (T, func(), error) from providers so wire generates reverse-order shutdown logic for databases, caches, and exporters. - Use Case: You are building an HTTP service with Postgres and Redis. Define per-package provider sets, write one injector, run wire ./..., and get a committed wire_gen.go that fails CI if the graph breaks. ## Quick Start Ask the AI to set up google/wire dependency injection for your Go service with per-package provider sets and a cleanup-aware injector.