Loading skill
Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Add appropriate user feedback states (loading, success, error, empty) to a component or page
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -11% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 1% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -31% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -18% | 0% |
/ss-copy/ss-a11y/ss-componentTarget: $ARGUMENTS
DESIGN-LANGUAGE.md sections on Loading States (Skeleton), Empty States, Error Statestsx// 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:
animate-pulse (1.5s cycle)tsx<EmptyState icon={PackageIcon} title="No activity yet" description="Create your first project to get started." action={<Button>Create Project</Button>} />
Rules:
text-text-tertiarytext-text-secondarytsx<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:
tsx// Toast notification for action confirmations toast("Changes saved") // With undo for destructive actions toast("Item deleted", { action: { label: "Undo", onClick: handleUndo } })
Rules:
tsxfunction 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} /> }
prefers-reduced-motion — disable animate-pulse when reduced motion is preferred.Other measured skills in the registry, with their headline benchmark lift.