What problem does it solve? Manually wiring Go application dependencies is error-prone, and runtime DI containers hide misconfigurations until startup. This Skill guides you through google/wire so the dependency graph is resolved at compile time, with errors surfaced by wire ./... instead of at first request. ## Core Features & Use Cases - Provider Sets and Injectors: Organize constructors into per-package wire.NewSet groups and declare injectors with wire.Build behind the //go:build wireinject tag. - Interface Bindings and Struct Injection: Use wire.Bind, wire.Struct, wire.Value, wire.InterfaceValue, and wire.FieldsOf to map interfaces to concrete types and promote struct fields as graph nodes. - Cleanup Chains and Testing: Return (T, func(), error) from providers for reverse-order cleanup, and build test injectors that swap real providers for fakes. - Use Case: When your Go service grows and wire.Build accumulates dozens of providers, reorganize them into per-package sets like InfraSet, RepoSet, and ServiceSet, then regenerate wire_gen.go with wire ./.... ## Quick Start Ask the AI to set up google/wire dependency injection for your Go project with per-package provider sets and a wireinject-tagged injector.