
Ss Feedback
- 247 installs
- 868 repo stars
- Updated August 3, 2026
- bitjaru/styleseed
ss-feedback is a Claude Code skill that adds loading, success, error, and empty feedback states to a component or page.
About
ss-feedback is a StyleSeed skill that adds the four user-feedback states (loading, empty, error, and success) to a component or page. A developer uses it to make every data-dependent area handle its full lifecycle instead of only the happy path. It generates skeleton loaders, empty states with a call to action, retry-enabled error views, and toast confirmations.
- Adds loading, empty, error, and success states to a component or page
- Provides ready skeleton, empty-state, error, and toast code patterns
- Respects prefers-reduced-motion for pulse animations
Ss Feedback by the numbers
- 247 all-time installs (skills.sh)
- Ranked #878 of 1,880 Design & UI/UX skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
ss-feedback capabilities & compatibility
- Capabilities
- feedback states · loading states · error states · component generator
- Use cases
- frontend · ui design
What ss-feedback says it does
Add appropriate user feedback states (loading, success, error, empty) to a component or page
For each data-dependent area, implement ALL 4 states:
Check `prefers-reduced-motion` — disable `animate-pulse` when reduced motion is preferred.
npx skills add https://github.com/bitjaru/styleseed --skill ss-feedbackAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 247 |
|---|---|
| repo stars | ★ 868 |
| Last updated | August 3, 2026 |
| Repository | bitjaru/styleseed ↗ |
What it does
Add loading, empty, error, and success states to a data-driven component or page.
Who is it for?
Wiring all four feedback states into data-dependent UI
Skip if: Only the words inside a state (use ss-copy), accessibility fixes (use ss-a11y), or analytics and error-logging plumbing
When should I use this skill?
A component fetches data but only handles the success path
What you get
Every data area handles loading, empty, error, and success with matching UI
- Skeleton loading component
- Empty state with action
- Error state with retry
By the numbers
- Implements all 4 feedback states per data area
- Delays skeleton display by 300ms
Files
UX Feedback States Generator
When NOT to use
- For only the words inside a state → use
/ss-copy - For accessibility issues in existing states → use
/ss-a11y - For brand-new component creation → use
/ss-component - For analytics or error-logging plumbing — UI presentation only
Target: $ARGUMENTS
Instructions
1. Read the target file and identify all data-dependent areas.
2. Read the design language reference:
DESIGN-LANGUAGE.mdsections on Loading States (Skeleton), Empty States, Error States
3. For each data-dependent area, implement ALL 4 states:
State 1: Loading (Skeleton)
// Skeleton must match the final layout shape
<div className="bg-card rounded-2xl p-6 shadow-[var(--shadow-card)]">
<div className="flex items-center gap-2 mb-3">
<div className="size-7 bg-surface-muted rounded-lg animate-pulse" />
<div className="h-3 w-16 bg-surface-muted rounded animate-pulse" />
</div>
<div className="h-9 w-24 bg-surface-muted rounded-lg animate-pulse mb-3" />
<div className="h-3 w-12 bg-surface-muted rounded animate-pulse" />
</div>Rules:
- Show skeleton for 300ms minimum (prevent flash)
- Delay skeleton display by 300ms (fast loads skip skeleton entirely)
- Use
animate-pulse(1.5s cycle) - Match skeleton shapes to real content dimensions
- Never use spinners inside cards
State 2: Empty (Zero Data)
<EmptyState
icon={PackageIcon}
title="No activity yet"
description="Create your first project to get started."
action={<Button>Create Project</Button>}
/>Rules:
- Center-aligned in the card
- Icon: 32px,
text-text-tertiary - Title: 14px,
text-text-secondary - Always suggest a next action
- Zero values show as "0" (don't hide or dash)
State 3: Error (Load Failed)
<div className="flex flex-col items-center justify-center py-8 text-center">
<AlertCircle className="size-8 text-destructive mb-3" />
<p className="text-[14px] text-text-secondary mb-4">Couldn't load the data</p>
<Button variant="brandGhost" size="sm" onClick={retry}>Try again</Button>
</div>Rules:
- Partial failure: only affected card shows error, rest loads normally
- Full page failure: full-screen EmptyState with retry
- Error message: plain language, blame the system
- Always provide retry button
State 4: Success (Action Feedback)
// Toast notification for action confirmations
toast("Changes saved")
// With undo for destructive actions
toast("Item deleted", { action: { label: "Undo", onClick: handleUndo } })Rules:
- Info toast: 3s display
- Action toast (with undo): 5s display
- Toast position: above BottomNav
- One toast at a time (new replaces old)
4. Implementation pattern:
function DataCard({ data, isLoading, error }) {
if (isLoading) return <DataCardSkeleton />
if (error) return <DataCardError onRetry={refetch} />
if (!data || data.length === 0) return <DataCardEmpty />
return <DataCardContent data={data} />
}5. Check prefers-reduced-motion — disable animate-pulse when reduced motion is preferred.
Related skills
FAQ
Which states does ss-feedback add?
Loading skeletons, empty states, error views with retry, and success toasts, for every data-dependent area.
Does it handle reduced motion?
Yes. It disables animate-pulse when the user prefers reduced motion.