Skills and rules that make your coding agent build screens the way your project already builds them. Like superpowers, but for UI.
Before your agent builds or changes a screen, it reads the screens of that kind your project already has — the holder, the order of the regions, which component fills each role, the props most of them are written with — and writes that down as a pattern file in .ui-consistency/patterns/.
Then every screen is written from that file, one at a time, so the thirtieth matches the first. At the end, every screen touched is compared against it.
There is no built-in list of components, no framework it prefers, no API key and nothing to configure.
In Claude Code:
/plugin marketplace add kamenkurtev/ui-consistency /plugin install ui-consistency@kkurtev-plugins
Gemini CLI, Codex and Cursor have manifests too — see the README.
That is the whole setup. The agent picks up the skills on its own: it establishes the pattern first, then writes the screen from it. Where there is nothing to copy — the first screen of a kind — it asks you what the screen should look like, and writes down only what you answered.
> use ui-consistency:reach
It answers level by level, and there are only three answers:
No score and no grade.
The agent uses them on its own; you can also invoke any of them by name.
ui-consistency:patternwhat screens of this kind look like hereui-consistency:decidethe first screen of a kind, when there is nothing to copyui-consistency:screenwrite one against the patternui-consistency:rolloutapply it across many, one file per turnui-consistency:verifycompare the finished set, before a PRui-consistency:reviewa second opinion on one screenui-consistency:reachwhich of the three silences you are looking atKeep the numbers and drop the names. Rename every component, screen, route file and test-id prefix to a neutral equivalent of the same shape — OrdersGrid for a PascalCase grid, app-orders-grid for its selector form.
ui-consistency:reach said — it tells apart a quiet project from a blind plugin.