What problem does it solve? Go applications often read configuration from flags, environment variables, files, and defaults simultaneously, and keys silently resolve from the wrong layer. This Skill guides correct use of spf13/viper so every key resolves predictably, missing config files do not crash the app, and tests stay isolated. ## Core Features & Use Cases - Precedence pipeline discipline: Walk the fixed order (Set > flag > env > file > KV > default) so you always know which layer supplies each key. - Env and flag binding: Wire SetEnvPrefix, SetEnvKeyReplacer, and AutomaticEnv together, and bind cobra flags with BindPFlag before Execute(). - Struct unmarshaling and reload: Decode into structs with mapstructure tags and DecodeHooks, and handle WatchConfig hot reload including the atomic-rename trap. - Use Case: You are building a CLI where --port, MYAPP_PORT, and config.yaml all define a port. This Skill shows how to bind all three so the flag wins when set, env wins otherwise, and a missing file never crashes startup. ## Quick Start Ask the assistant to wire viper configuration for a Go CLI with env prefix MYAPP, a YAML config file, and a bound port flag.