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 AI coding agents to write structured, diagnosable error handling with samber/oops so on-call engineers can diagnose failures without asking the developer. ## Core Features & Use Cases - Fluent error builders: Chain .In(), .Tags(), .Code(), .With(), .User(), and .Tenant() to attach domain, categorization, and structured attributes to every error. - Layered wrapping and panic recovery: Wrap errors at each architectural boundary with Wrapf, and convert panics to structured errors with oops.Recover at goroutine boundaries. - Public vs technical messages: Separate user-safe messages via .Public() from technical details, and retrieve them with oops.GetPublic for HTTP responses. - Use Case: In a multi-tenant SaaS API, build errors that carry tenant plan, user email, trace IDs, and low-cardinality messages so Datadog or Sentry can group and alert on them correctly. ## Quick Start Ask the agent to refactor your Go service's error handling to use samber/oops with structured attributes, error codes, and layered wrapping.