What problem does it solve? Standard Go errors lack context — you see "connection failed" but not which user triggered it, what query was running, or the full call stack. This Skill guides you to build structured errors with samber/oops that carry domain, attributes, trace IDs, and stack traces so on-call engineers can diagnose failures without asking the developer. ## Core Features & Use Cases - Fluent Error Builder: Chain methods like .In(), .Tags(), .Code(), .With(), .User(), and .Tenant() to attach structured context, then terminate with .Errorf(), .Wrap(), or .Wrapf(). - Low-Cardinality Messages: Keep variable data in .With() attributes instead of interpolating into message strings, so APM tools like Datadog, Loki, and Sentry group errors correctly. - Panic Recovery & Context Propagation: Convert panics to structured errors with .Recover() at goroutine boundaries, and propagate pre-configured builders through Go contexts using oops.WithBuilder and oops.FromContext. - Use Case: In a multi-tenant SaaS API, wrap errors at each layer (repository, service, HTTP handler) with layer-specific context, set a .Public() user-safe message, and retrieve it with oops.GetPublic(err, fallback) for the response. ## Quick Start Ask the AI to refactor your Go service's error handling to use samber/oops with structured attributes, error codes, and layered wrapping.