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…
When something goes wrong, the user must be able to recover or try again. Toasts, inline errors, banners, and notification patterns each have a specific role. Use when designing error states, success confirmations, async feedback, in-place editing, or any system that
$ npx -y skills add dembrandt/dembrandt-skills --skill notifications-and-recovery --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/notifications-and-recoveryContext preview
The summary Claude sees to decide when to auto-load this skill.
When something goes wrong, the user must be able to recover or try again. Toasts, inline errors, banners, and notification patterns each have a specific role. Use when designing error states, success confirmations, async feedback, in-place editing, or any system that
name: notifications-and-recovery
description: When something goes wrong, the user must be able to recover or try again. Toasts, inline errors, banners, and notification patterns each have a specific role. Use when designing error states, success confirmations, async feedback, in-place editing, or any system that communicates state changes to the user.
metadata:
priority: 8
pathPatterns:
- "components/**"
- "src/components/**"
- "**/*.tsx"
- "**/*.jsx"
- "design-system/**"
- "ui/**"
promptSignals:
phrases:
- "toast"
- "notification"
- "error message"
- "success message"
- "in-place editing"
- "inline error"
- "alert"
- "banner"
- "recovery"
- "retry"
- "notification center"
- "notification preferences"
- "notification settings"
retrieval:
aliases:
- toast notification
- error recovery
- inline error
- notification pattern
- in-place editing
- alert banner
- retry pattern
- notification center
- notification preferences
intents:
- show a success message
- handle an error gracefully
- design a toast notification
- add retry to a failed action
- design inline editing feedback
- design a notification center
- let users control which notifications they get
examples:
- show a toast when the form is saved
- what happens when the API call fails
- design the error state for this form
- add a retry button when network fails
- design a notification center for this app
- let users mute or filter notification categoriesWhen something changes — success, failure, or anything in between — the user must know. And when something goes wrong, they must always have a path forward. A notification without a recovery action is just an apology.
---
| Pattern | When to use | Dismissal | |---|---|---| | **Toast** | Transient result of a user action (saved, sent, deleted) | Auto-dismiss 4–6s, manual close | | **Inline error** | Field-level validation, form errors | Clears on correction | | **Alert banner** | Persistent issue affecting the current context | Manual dismiss or resolved state | | **Modal / dialog** | Blocking error requiring a decision before continuing | User action required | | **Empty state** | No data yet — guide the user to the first action | N/A | | **Skeleton / loading** | Async content pending | Replaced by content | | **In-place confirmation** | Inline edit saved, row updated, item toggled | Auto-clears after 2–3s |
---
Toasts confirm that a background action completed. They appear without interrupting the user's flow.
**Placement:** bottom-center or bottom-right. Never top-center — it competes with page content and navigation.
**Duration:** 4–6 seconds for information. Errors should persist until dismissed — the user needs time to read and act.
**Anatomy:**
[Icon] Message text [Action] [×]
✓ "Changes saved." ✓ "Message sent. [Undo]" ✗ "Could not save. Check your connection. [Retry]" ← persists until dismissed
**Never:** multiple simultaneous toasts. Queue them; show one at a time.
---
Inline errors appear adjacent to the element that caused them. They are the most contextual and actionable form of error feedback.
**Form validation:**
<label for="email">Email</label> <input id="email" aria-describedby="email-error" aria-invalid="true"> <p id="email-error" role="alert">Enter a valid email address.</p>
**In-place editing:**
---
Banners are persistent — they stay until the condition is resolved or the user dismisses them.
**Use for:**
**Placement:** top of the affected section, not the entire page unless the issue is truly global.
**Anatomy:**
[Icon] [Message — describes the issue and its scope] [Action] [×]
---
Every error state must have a path forward. Design the recovery action at the same time as the error message.
For transient failures (network, timeout, rate limit):
"Could not load results." [Try again]
For destructive or irreversible actions (delete, archive, send):
"Message sent. [Undo] ×"
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…