Agent docs

Common requests

What the kit provides for the things owners ask for in their own words.

Owners rarely name a component. They say "a refresh button" or "chips for the client", and an agent that greps for those words finds nothing. This page maps the phrases that came up in review rounds to the kit's answer, so a first-run agent looks here before it builds anything by hand. It is hand-kept on purpose: the phrasing is the owner's, and a generator would only have the kit's names.

Read the State column before you rely on a row. "Live" means the kit does it today. A row that names a pending unit describes a ruled change that has not landed, so check the installed version (npx kit-inventory --find <noun>) before promising the behaviour, and record the gap in CANON-NOTES when the kit cannot yet give it.

A curator adds a row whenever a review uses a phrase twice. Search this file with npx kit-inventory --find and the owner's noun.

The owner saysThe kit's answerState
refresh buttonButton with presets="refresh": an icon-only circle whose tooltip reads "Refresh"live in the repo, ships with the next kit bump
add button next to an inputButton with presets="add": an icon-only circle with a "Add" tooltiplive in the repo, ships with the next kit bump
sheets, files or modules as tabsTabs, every item with an icon; never a stack of peer cardslive; kit-standard fails a tab without an icon
chips for client, env or typeTag: a borderless descriptive fact with a leading iconlive in the repo, ships with the next kit bump; an older pin records the gap in CANON-NOTES
status badge or pillStatusPill, with the app's states declared once in defineStatusMap; no copy button beside itlive in the repo, ships with the next kit bump
a pagerthe DataTable footer pager, which is absent at one page (pager="auto")live in the repo, ships with the next kit bump
filters or search above a tableFacetBar, with Toolbar.Search first in the row; one search per tablelive
side panel, drawer or peekSidePanel (in the page flow) and the claimable peek panel pattern; no overlay drawer yetlive, with the overlay gap known
delete confirmationConfirmModal for every destructive actionlive
toast or notificationpushAlert with Toasts mounted oncelive
loading or spinnerPageSkeleton drawn in the page frame, ListState with a loadingState; a skeleton, never a spinnerlive
empty, or nothing matchesEmptyState; a filtered-empty state quotes the query and offers Clearlive
upload or drop filesthe compact dropzone pattern, on a surface with no border of its ownlive
key facts about a recordthe attribute and spec grid patternlive
actions on each rowthe row actions pattern: icon buttons for the common case, then a kebablive
pick one of a few modesOptionCardslive in the repo, ships with the next kit bump
dark mode togglethe theme boot script and toggle shown in the app shell docsdocumented; the export is a pending unit
a run or submit screenno recipe yet; compose from the compact dropzone, module settings and the workflow steppergap, recorded as such

When a request is not here, run npx kit-inventory --find <noun> with the owner's own word, then with a synonym, before concluding the kit lacks it.

@versable-git/ui · reference, canon, and method, read in place