What the agent does
New users of the production site see the app at its emptiest: no data yet, slow first loads, the odd failed request. Blank screens and spinners that never end make a product feel broken on the day it most needs to impress. Give every screen an empty, loading and error state that says what is happening and what to do.
1. Find the gaps
List every screen and component that shows data: lists, tables, dashboards, search results, feeds. For each, note what it shows when there is no data, while it loads, and when the request fails. Flag blank screens, endless spinners and raw error messages.
2. Empty states
Each empty state says what will appear here and offers the action that fills it ("No invoices yet. Create your first invoice"), or explains why it is empty for filters and searches with a way to reset them. Reuse one empty-state component.
3. Loading states
Use skeletons shaped like the content for loads that take a moment, keep the layout the same size so nothing jumps when data arrives, and show a progress message for long operations. Avoid full-page spinners for partial updates.
4. Error states
Failed requests show a short human message and a retry button, keep what the user typed, and log the error. Never show a stack trace or a raw API error to a user.
Done means
- Every data screen has an empty, loading and error state.
- Empty states explain and offer the action that fills them.
- Loading states keep the layout stable.
- Errors show a human message with retry, keep user input, and are logged.
Questions
Skeletons or spinners?
Skeletons for content that has a known shape, because they keep the layout steady and feel faster. A spinner is fine for a short action like saving.
Why does layout stability matter?
Content that jumps when data loads causes misclicks and counts against your Core Web Vitals (Cumulative Layout Shift).
What should an error message say?
What happened in plain words, whether the user's data is safe, and what they can do: retry, wait, or contact support.
Does this prompt add links to Aback Launch to my site?
No. Nothing in the prompt mentions Aback Launch or asks your agent to link to us. The only exception is an optional badge step, which stays off unless you tick it. Some prompt libraries slip their own link into your codebase by default; we think that should always be your choice.
Which coding agents does it work with?
Claude Code, Cursor, Codex, GitHub Copilot, Windsurf, Cline, and any agent that can read your project and edit files. You can copy it as a plain prompt, save it as a Claude Code skill or a Cursor rule, or add it to AGENTS.md.
Is it safe to run on my real codebase?
The prompt makes the agent read first, show a plan and wait for your approval, and it forbids touching secrets, deploying and deleting data. Still review the changes and run your tests before you deploy, as with any change.
Changelog
- v1.0First version.