algorithmic-color-pale…
Derive a full UI palette from one or two brand colours — state variants, brand-tinted greys, semantic colours. Use when building…
Toasts, inline errors, banners and recovery paths. Use when designing error states, success confirmations, async feedback or in-place editing.
Claude Code
$ npx -y skills add dembrandt/dembrandt-skills --skill notifications-and-recovery --agent claude-code
Codex
$ npx skills add dembrandt/dembrandt-skills --skill notifications-and-recovery -a codex -y
Cursor
$ npx skills add dembrandt/dembrandt-skills --skill notifications-and-recovery -a cursor -y
Gemini CLI
$ npx skills add dembrandt/dembrandt-skills --skill notifications-and-recovery -a gemini-cli -y
GitHub Copilot
$ npx skills add dembrandt/dembrandt-skills --skill notifications-and-recovery -a github-copilot -y
OpenCode
$ npx skills add dembrandt/dembrandt-skills --skill notifications-and-recovery -a opencode -y
Windsurf
$ npx skills add dembrandt/dembrandt-skills --skill notifications-and-recovery -a windsurf -y
name: notifications-and-recovery
description: Toasts, inline errors, banners and recovery paths. Use when designing error states, success confirmations, async feedback or in-place editing.
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 | Replaced by the first item | | **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] ×"
#
Enterprise UX secrets, now built into your AI agent. Your agent writes the component in seconds. It does not know the modal should be a drawer, or that the grey it picked fails contrast. These skills carry that judgment: what to do, and what breaks otherwise.
Derive a full UI palette from one or two brand colours — state variants, brand-tinted greys, semantic colours. Use when building…
Top bar, sidebar rail, app launcher, tenant and environment cue, status bar. Use when designing the persistent shell, a…
Product visuals must show the real product with real data. Use when building landing pages, hero sections, screenshots or demo…
Shape language across type, radius and icons carries brand personality. Use when starting a design system, picking icons or…
Rest, hover, active, focus, disabled and loading states, derived from the base colour. Use when designing buttons, links, inputs…
Rebuild a live web page 1:1 from measurement into Figma, Penpot or code, then verify it. Use when reproducing a page or checking…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.