ui-states
Helps your agent create all screens and states for an app. This includes empty, error, or loading screens, ensuring a good experience.
What it does
This tool helps create app screens that work well in all situations, not just when everything is perfect. It ensures screens show useful information even when there's no data, the internet is slow, or something goes wrong.
When to use it
- ✓When building a new screen that displays information.
- ✓When reviewing a screen to ensure it works in all scenarios.
- ✓When a screen only shows the 'happy path' (everything working perfectly).
Example of what to ask your AI
“Create the screen states for the product list, including when it's empty, loading, has an error, or is offline.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
It considers all possible problems a user might encounter (like having nothing to see or the internet dropping) and defines how the screen should look and behave in each of those cases.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add sickn33/agentic-awesome-skills --skill ui-statesOr download just the file:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/ui-states/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
UI states · by UXKIN
Real UI, not AI slop.
Most generated screens only show the happy path: perfect data, a fast connection, nothing failing. Real people meet everything else first: an empty list on day one, a spinner that never ends, an error with no way out, a name too long for its box. This skill finds those states for each screen and builds them properly.
It works on its own, with no account, token or server.
When to Use
- Use when building or reviewing a screen that loads, lists, searches, submits or saves data.
- Use when asked to make UI production-ready, handle edge cases or "finish" a screen.
- Use when a screen only shows the happy path.
Connect UXKIN (optional)
UXKIN (https://uxkin.com) is a library of 500,000+ real app screens, user journeys and 15k+ website design systems, each with a DESIGN.md. Connected, it lets you look at how real products solve what you are building. To connect it, the person:
- adds the MCP server
https://uxkin.com/mcp(name:uxkin) in this app's MCP settings, - signs in with their UXKIN account when the app asks (searches need a UXKIN plan),
- or follows the guide for their app: https://uxkin.com/ui-design-mcp
Only set this up when the person asks for it; never add servers or accounts on your own.
1. List the states for each screen
For every screen or component that shows, loads or changes data, go through this list and keep the ones that can happen:
| State | Ask |
|---|---|
| First use | What does someone see before they've added anything? |
| Empty | What if a list, search or filter has nothing to show? |
| Loading | What shows while data loads, and for how long? |
| Partial | What if some data loads and some doesn't? |
| Error | What if the request fails or times out? |
| Offline | What if there's no connection? |
| Validation | What if the input is wrong, missing or too long? |
| Permission | What if access, a permission or a plan is missing? |
| Success | How does someone know their action worked? |
| Edge content | Very long names, missing images, zero, huge numbers, many items |
| Busy action | What happens while a button's action is running? |
Write the list down before building, and confirm the important ones with the person if the right behavior isn't obvious.
2. Build each state properly
- First use and empty: say what this place is for and give the next step as a button ("Add your first invoice"), not just "No data". Empty because of a filter or search is different: say so and offer to clear it.
- Loading: keep the layout steady. Use placeholders shaped like the content for lists and cards, an inline spinner for small areas, and progress for long tasks. Don't block the whole screen for a part of it. If it takes more than a few seconds, say what's happening.
- Error: say what went wrong in plain words, what the person can do, and offer the action (Try again, Edit, Contact support). Keep what they typed. Never show raw error codes or stack traces.
- Offline: show that the connection is missing, keep what's already loaded visible, and retry automatically when it's back if that's safe.
- Validation: check at the right moment (on leaving a field or on submit, not on every keystroke), put the message next to the field, and say how to fix it.
- Permission or plan missing: explain what's missing and how to get it, and keep the rest of the screen usable.
- Success: confirm briefly and in place (a short message, the item appearing in the list); offer Undo for actions that remove things.
- Edge content: truncate long text with the full value available, give images a fallback, format big numbers, and paginate or virtualise long lists.
- Busy actions: disable the button and show progress while it runs so it can't be sent twice.
Use the project's existing components and copy style for every state; don't invent a new look for them.
3. Check each state
Make each state appear for real: empty data, a slow or failed request (through the browser's network tools, a mock or a test flag), offline mode, very long text. Look at each at a phone and a desktop width. Fix what's broken and check again.
Report which states you built, which you checked and how, and any that need a decision from the person (for example, what the error should say for their backend).
Optional: real examples
If the UXKIN MCP tools are connected, find_ui_references finds how
…
FAQ
What are 'UI states'?
These are the different appearances and behaviors of an app screen depending on what's happening, such as loading data, having no results, or encountering an error.
Why is it important to consider these states?
Because users frequently encounter these situations. A screen well-designed for all states improves user experience and prevents frustration.
Do I need to connect an account to use this?
No, the tool works on its own. Connecting an account is optional for accessing examples from other apps.
Details
Original description by the author
Design and build the UI states agents forget: first use, empty, loading, error, offline, no results, long content, permission denied and success.
Popularity
- GitHub stars
- 48k
- Ranking position
- #4433
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
00-andruia-consultant
Helps your agent start or improve AI projects. It analyzes code, suggests tools, and creates action plans in Spanish.
sickn33/agentic-awesome-skills
007
Lets your agent perform security audits and threat modeling. It's useful for protecting projects against attacks and vulnerabilities.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Helps your agent create or improve AI tools. It defines how tools work, writes documentation, and validates the structure.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Lets your agent create a summary about a specific industry. It's useful for understanding the context, rules, usage patterns, and risks of a project, using reliable sources.
sickn33/agentic-awesome-skills
Similar skills
accessibility
Helps your agent create interfaces that everyone can use. Ensures websites and apps work well for people with disabilities, like those who are blind or have reduced mobility.
affaan-m/ECC
design-system
Helps your agent create a design system from existing code. It extracts visual information and checks for consistency, generating a report and an interactive preview.
affaan-m/ECC
liquid-glass-design
Helps your agent create iOS user interfaces with a 'Liquid Glass' effect. Allows adding dynamic and interactive visual effects in SwiftUI and UIKit.
affaan-m/ECC