ui-ux-loading-states
Skill0 starsChanged 3 months agoApache-2.0View on GitHub
Generate, implement, or review loading feedback and its transition into empty, partial-data, success, error, offline, permission, cancellation, and recovery states. Use whenever UI work adds or changes skeletons, spinners, progress bars, pending actions, slow-operation messaging, timeouts, retries, or loading accessibility.
In this repository46 other files it gives its agents.
- AGENTS.mdAGENTS.md
- academixSkill
- agent-browserSkill
- ai-engineering-platformSkill
- apocalypseSkill
- aria-apg-reviewSkill
- context-budgetSkill
- crawler-readiness-auditSkill
- data-protection-gateSkill
- decision-criticality-gateSkill
- fact-checkerSkill
- find-skillsSkill
- focus-friendly-outputSkill
- frontend-designSkill
- grill-meSkill
- grill-with-docsSkill
- humanizerSkill
- improve-codebase-architectureSkill
- microsoft-foundrySkill
- output-templatesSkill
- pre-launch-security-gateSkill
- prompt-preflightSkill
- quick-recapSkill
- rag-retrieval-qualitySkill
- rest-api-best-practicesSkill
- rigorous-responseSkill
- security-checklistSkill
- shepherdSkill
- skill-optimizerSkill
- sql-query-correctnessSkill
- system-design-scaleSkill
- tddSkill
- ui-ux-color-contrastSkill
- ui-ux-component-qualitySkill
- ui-ux-design-systemsSkill
- ui-ux-dropdownsSkill
- ui-ux-form-validationSkill
- ui-ux-generationSkill
- ui-ux-mobile-cssSkill
- ui-ux-typographySkill
- ux-logic-loopSkill
- ux-pattern-reviewSkill
- vercel-react-best-practicesSkill
- visual-flow-storyboardSkill
- visual-pr-reviewSkill
- web-design-guidelinesSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
15 rules. About 0 are common, 14 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈14
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 29
Prefer observed product timings over guesses.
- Distinctive: line 33
Use a skeleton only when the final structure, dimensions, and hierarchy are known and the expected wait is reliably under about 3 seconds.
- Distinctive: line 34
Treat the skeleton as a layout promise.
- Distinctive: line 36
Use a subtle, slow, steady shimmer from left to right.
- Very specific: line 37
Stop the shimmer for prefers-reduced-motion.
- Distinctive: line 40
Do not use a skeleton for long, unknown, or structurally unpredictable work.
- Distinctive: line 46
Use a spinner for a short indeterminate action when previewing the final layout adds no value.
- Distinctive: line 48
Avoid flashing a spinner for near-instant results.
- Distinctive: line 52
Use determinate progress only when real completion can be measured.
- Distinctive: line 53
When exact progress is unavailable but the wait is long, show an indeterminate progress state plus the current operation or completed steps.
- Distinctive: line 59
Never leave a skeleton or spinner running indefinitely.
- Distinctive: line 62
Keep focus stable during transitions.
- Distinctive: line 67
Do not use a loader as a substitute for an empty result, permission denial, read-only state, or unsaved-changes warning.
- Distinctive: line 68
Keep usable partial data visible, identify what is missing, and expose safe retry or continuation.
- Distinctive: line 74
Leave one runnable loading-state check using controlled latency and failure responses.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
UI/UX Loading States
Choose loading feedback from observed or credibly expected wait time, final-layout knowledge, and measurable progress.
Selection matrix
| Situation | Feedback |
| Result is nearly instant | Show no loader; avoid a flash that makes the interaction feel slower. |
| Reliably under about 3 seconds and final layout is known | Show a layout-accurate skeleton. |
| Short, indeterminate action with no useful layout preview | Show a labelled spinner near the affected action or region. |
| Progress is measurable or the operation takes more than a few seconds | Show progress plus the current operation. |
| Wait is long or unpredictable | Show the operation, credible duration or completed steps, and cancel or retry when supported. |
Prefer observed product timings over guesses. Keep existing content visible when it remains useful and stale data is safer than an empty screen.
Skeleton rules
- Use a skeleton only when the final structure, dimensions, and hierarchy are known and the expected wait is reliably under about 3 seconds.
- Treat the skeleton as a layout promise. Reserve final text lines, media aspect ratios, spacing, and container sizes so replacement causes no unexpected movement or resizing.
- Match the actual content instead of drawing generic gray rectangles.
- Use a subtle, slow, steady shimmer from left to right. Avoid fast motion, pulsing fades, and high-contrast flashes.
- Stop the shimmer for
prefers-reduced-motion. Keep a clear non-animated placeholder and text status rather than forcing motion. - Hide decorative skeleton shapes from the accessibility tree. Mark the loading region busy and expose one concise status instead of announcing every placeholder.
Do not use a skeleton for long, unknown, or structurally unpredictable work. It communicates layout, not remaining time.
Other indicators
Spinner
- Use a spinner for a short indeterminate action when previewing the final layout adds no value.
- Label the pending action, keep the indicator local to the affected region, and prevent duplicate activation.
- Avoid flashing a spinner for near-instant results. Reuse the product's established display delay when one exists.
Progress
- Use determinate progress only when real completion can be measured. Never invent percentages or move backward without explaining why.
- When exact progress is unavailable but the wait is long, show an indeterminate progress state plus the current operation or completed steps.
- Provide a credible estimate only when the system can support it. Prefer honest stages over a fake countdown.
- Offer cancel, safe retry, background continuation, or navigation away when the operation permits it.
Slow, adaptive, and failed states
- Never leave a skeleton or spinner running indefinitely. Define a slow state, timeout, retry, error, or alternative progress message.
- Preserve completed work and entered data across failure and retry.
- Transition from a skeleton to more informative feedback only when the application can detect the delay reliably and already supports the extra state complexity.
- Keep focus stable during transitions. Use restrained live-region announcements for meaningful state changes, not animation frames.
Complete adjacent system states
- Define the transition from initial and loading into empty, partial-data, success, error, offline, and recovery states for every affected view.
- Do not use a loader as a substitute for an empty result, permission denial, read-only state, or unsaved-changes warning.
- Keep usable partial data visible, identify what is missing, and expose safe retry or continuation.
- Distinguish disabled, read-only, permission-denied, destructive-confirmation, and pending states through behavior, semantics, copy, and persistent non-color cues.
- Preserve entered data and completed work through offline, permission, timeout, cancellation, and retry paths whenever technically possible.
Verification
Leave one runnable loading-state check using controlled latency and failure responses. Verify:
- Near-instant results do not flash an indicator.
- A fast known-layout response uses an accurate skeleton and swaps with no load-induced layout shift.
- A short action with unknown structure uses a labelled spinner.
- Measurable or long work exposes honest progress, current work, and supported cancel or retry behavior.
- Empty, partial-data, success, error, offline, and recovery states replace loading with an accurate next state.
- Slow, timeout, permission, cancellation, and server-failure paths never strand the user in an indefinite or ambiguous state.
- Reduced-motion mode removes shimmer while retaining understandable status.
- Assistive technology receives one useful busy or status update and can safely continue after success, cancellation, or failure.
Exercise durations around the product's real boundaries, including just below and above 3 seconds when skeleton selection depends on that threshold. If telemetry, runtime, layout-shift, or assistive-technology verification is unavailable, state that limitation explicitly.
Output
Return the selected loading pattern and implementation first, then timing evidence, tested slow and failure states, and remaining runtime limits.
Shared output profile
Compose the execution profile from output-templates.
Preserve the selection and timeout rules above, omit empty components, and never present an indeterminate wait as measured progress.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

