What problem does it solve? Codebases often suffer from silent failures, swallowed exceptions, and errors that callers cannot distinguish, making debugging painful and failures invisible. This Skill provides a decision framework for designing error handling so failures are visible, distinguishable, and actionable. ## Core Features & Use Cases - Throw vs Return Decisions: Decide whether a failure should be thrown or returned based on whether it is part of normal business flow. - Distinguishable Error Design: Create structured error classes with codes and context instead of relying on fragile message-text matching. - Failure Safety Patterns: Preserve cause chains, clean up resources with finally blocks, and define clear partial-failure semantics for batch operations. - Use Case: When reviewing a service that catches a structured sandbox error and rethrows a generic SEARCH_FAILED, use this Skill to identify the information loss and redesign the error propagation so callers retain the original cause. ## Quick Start Review the error handling in my module and tell me which failures should be thrown versus returned and how to make them distinguishable.