algorithmic-color-pale…
Derive a full UI colour palette algorithmically from one or two brand colours. Darker and lighter variants for interactive states, desaturated greys from the…
Keep status and error colours minimal and consistent — too many semantic colours confuse users. Each colour must mean exactly one thing. Errors should be recoverable, large failures must be prevented, and the UI should always give the user a path forward. Use when designing
$ npx -y skills add dembrandt/dembrandt-skills --skill status-colors-and-errors --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/status-colors-and-errorsContext preview
The summary Claude sees to decide when to auto-load this skill.
Keep status and error colours minimal and consistent — too many semantic colours confuse users. Each colour must mean exactly one thing. Errors should be recoverable, large failures must be prevented, and the UI should always give the user a path forward. Use when designing
name: status-colors-and-errors
description: Keep status and error colours minimal and consistent — too many semantic colours confuse users. Each colour must mean exactly one thing. Errors should be recoverable, large failures must be prevented, and the UI should always give the user a path forward. Use when designing status indicators, error states, form validation, alerts, or any feedback system.
metadata:
priority: 8
pathPatterns:
- "**/*.css"
- "**/*.scss"
- "**/tokens/**"
- "**/theme/**"
- "tailwind.config.*"
- "design-system/**"
- "components/**"
- "**/*.tsx"
- "**/*.jsx"
promptSignals:
phrases:
- "error"
- "warning"
- "success"
- "alert"
- "status"
- "validation"
- "feedback"
- "toast"
- "notification"
retrieval:
aliases:
- error states
- status colours
- semantic colours
- alerts
- form validation
- error recovery
- feedback system
intents:
- design error states
- set up semantic colours
- handle errors gracefully
- show validation feedback
- communicate status to users
examples:
- what colours should I use for errors and warnings
- how should I handle a failed API call
- design the error state for this formEvery status colour added to a system is a cognitive burden on the user. They must learn what each colour means, remember it, and interpret it correctly under stress — which is exactly when errors occur.
**The minimal set that covers almost everything:**
| Colour | Semantic meaning | Always means | |---|---|---| | **Red** | Error / failure / destructive | Something went wrong, or this action cannot be undone | | **Orange / Amber** | Warning | Something needs attention before proceeding | | **Green** | Success / positive | Action completed, state is healthy | | **Blue** | Info / neutral status | Informational, no action required |
**Rule: each colour maps to exactly one meaning across the entire product.** If orange means "warning" in one component and "pending" in another, the system breaks down.
When in doubt, cut the colour — neutral grey communicates status without semantic weight, and neutral is better than a misused semantic colour.
Orange (amber) carries a specific signal: pay attention, something may go wrong. Do not use it for:
If orange appears in the UI, the user should immediately know it requires their attention.
**The worst error is one the user cannot recover from.** Design every error state with a path forward.
Every error should answer three questions: 1. **What went wrong?** — plain language, no error codes 2. **Why did it happen?** — if useful and known 3. **What should the user do next?** — specific, actionable
❌ "Error 500" ❌ "Something went wrong" ✓ "We couldn't save your changes. Check your connection and try again." ✓ "This email is already in use. Sign in instead, or use a different email."
The most damaging errors — data loss, irreversible actions, broken state — should be prevented at the design level, not handled after the fact.
**State the consequences *before* the user acts, not after.** Fear comes from not knowing what a control will do. Make the outcome legible ahead of the action so the user commits with confidence:
Not every problem is equal. Match the visual weight of the feedback to the severity.
| Severity | Pattern | When to use | |---|---|---| | **Blocking error** | Full-page error state or modal | App cannot continue, user must act | | **Inline error** | Red text below a field | Form field validation failure | | **Toast / snackbar** | Temporary notification, bottom of screen | Transient failure the user should know about but can dismiss | | **Alert banner** | Persistent bar at top of section | Ongoing issue affecting the current context | | **Empty state** | Illustrated or descriptive empty screen | No data yet — use as an opportunity for guidance, not just a blank |
Avoid showing multiple simultaneous error types at once — one clear message is more useful than three overlapping alerts.
UX and design-system skills for AI agents. Install once, and your agent knows how to design. --all installs every skill at once. They load only when a prompt needs them, so there is no runtime cost to having them all. Want to pick by hand?
Repo: dembrandt/dembrandt-skills
Derive a full UI colour palette algorithmically from one or two brand colours. Darker and lighter variants for interactive states, desaturated greys from the…
The persistent shell around an application — the top bar, the app launcher, the tenant and environment cue, and in heavy tools a status bar. In an estate of…
Product visuals — hero shots, demos, screenshots, landing-page panels — must reproduce the real product, not a stylised poster of it. Design with real content…
A brand's visual tone — playful or serious, rounded or angular — should be consistent across all UI elements. Shape language in typography, border-radius, and…
Every interactive element needs a complete set of visual states — rest, hover, active/pressed, focus, disabled, and loading. States should be derived…
Rebuild an existing web page 1:1 from measurement instead of by eye — into Figma, Penpot, or code. Captures the rendered page, the raw source and the computed…