Docs · skills/flow-map/reference/state-checklist.md

State checklist

Walk every screen against this. Mark: designed, n/a + reason, or outstanding.

Data states

StateThe question
Empty — first runNever had data. What teaches the user what goes here?
Empty — clearedHad data, now none. Different copy from first run.
Empty — no resultsA filter or search returned nothing. Offers a way back.
Loading — initialSkeleton or spinner, and what the user can do meanwhile
Loading — morePagination, infinite scroll, background refresh
PartialSome data arrived, some didn't. What is shown, what is marked missing
StaleData is old. Is the user told, and can they refresh?
One itemLayouts tuned for many often break at one
MaximumTen times the expected content. Where does it break?
Long stringsThe longest name in the database, in every language you ship

Interaction states

Per interactive element: default, hover, focus-visible, active, disabled, loading, selected, read-only. Focus-visible is not optional and is the one most often missing.

System states

StateThe question
Error — validationInline, specific, states the cause and the fix, preserves input
Error — serverWhat the user can do now; never a bare code
Error — partial failureNine of ten succeeded. What does the screen say?
Permission deniedHidden or disabled-with-reason? Decide deliberately
Offline / reconnectingQueued actions, and what happens to them
TimeoutDistinct from error. Is the work lost?
Destructive confirmProportional to the consequence, and reversible if possible
SuccessConfirmed visibly, and the next action is obvious

Environment states

Narrowest supported width · largest supported width · keyboard only · screen reader · 200% zoom · reduced motion · dark mode, if shipped · print, if relevant

The rule

If a state is not in the library, it is not designed — and it will be invented in code, at 6pm, by someone without the context.

The method, written down

Every page here is one file from the skill library. The folder is loadable as a Claude project as-is.