Help us improve
Share bugs, ideas, or general feedback.
Provides patterns for SaaS error states including validation errors, 403 permissions, session expiry, offline handling, concurrent conflicts, rate limits, and 500 recovery.
npx claudepluginhub oborchers/fractional-cto --plugin saas-design-principlesHow this skill is triggered — by the user, by Claude, or both
Slash command
/saas-design-principles:error-handlingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Error handling in SaaS extends far beyond "something went wrong" modals. A production-ready application must account for every failure mode with specific, actionable responses.
Designs error prevention, detection, communication, and recovery UX for forms, pages, network issues, empty states, and permissions.
Writes clear, actionable error messages for forms, system errors, and API responses using a three-part pattern: what went wrong, why, and how to fix it.
Hardens designs for real-world use by systematically identifying and designing for edge cases, error states, empty states, loading patterns, first-run experiences, and offline mode.
Share bugs, ideas, or general feedback.
Error handling in SaaS extends far beyond "something went wrong" modals. A production-ready application must account for every failure mode with specific, actionable responses.
Surface inline, below the specific field, with red borders and actionable text.
Never use toasts for validation errors. Toasts stack, auto-dismiss before reading, and force users to hunt for the relevant field.
Must explain what the user can't do, why, and what they can do about it.
| Bad | Good |
|---|---|
| "Access denied" | "Only workspace admins can manage billing. Request access from @admin-name" |
| "Contact your administrator" | Show who has the required permission + a "Request Access" button |
| "Forbidden" | Suggest alternative actions the user CAN take |
Three response options to offer:
Special care required. Jared Spool documented a case where a user completed a purchase, opened another tab, returned to find "Your session expired" — with no clarity on whether the purchase completed.
The principle: Always clearly communicate what was saved and what was lost.
Requirements:
For additional session management guidance (adaptive MFA, auth flows), see the authentication skill.
The deepest technical-UX intersection. Figma's approach: model documents as property-level maps.
Resolution strategy:
UI requirements:
Graceful degradation is mandatory.
Rules:
Working implementations in examples/:
examples/error-states.md — Permission denied (403), offline banner with action queue, server error (500) with retry, and rate limiting (429)When reviewing or building error handling: