Less AI slop. Keyline holds your coding agent to real UI/UX guidelines, so what it ships looks designed.
- Claude Code
- Codex
- Cursor
- Gemini CLI
- Copilot
- Windsurf
A coding agent alone ships the page you've seen a hundred times: a dozen font sizes, a card around everything, gray text too faint to read. Keyline holds it to the laws a designer would, in your own names.
See it work
Five commands, one sample screen.
Pick one and watch it work on the same billing page a coding agent might ship.
/keyline critiqueThe three changes that would matter most- 1The main action is the faintest thing here
"Save changes" sits at 1.9:1 on white; the eye lands on the red button beside it instead.
- 2Every block is boxed, so nothing groups
Four bordered, shadowed boxes at equal weight; the plan and its seats read as strangers.
- 3Six sizes for one short page
A shouting all-caps title over 10px labels: the ladder has no rungs in between.
Six passes
One domain at a time, in the order that settles.
Type first, patterns last. Scroll, and watch them land on one screen.
01
/keyline typeEvery size gets a job
Thirteen sizes and four weights are a scale nobody chose; the type pass collapses them onto a short ladder of named roles.
- Sizes are assigned to roles, not read off a ratio
- Two weights, each with one job
- Labels in sentence case
Events this month
1.62M
of 2M on the Growth plan
↑ 12.4% vs October
- Page viewed812,406
- Sign-up started41,920
- Plan upgraded1,284
SubmitUpgrade planClick hereAll events02
/keyline colorMeasured, not eyeballed
Text tiers are solved from contrast targets on the surfaces they really land on; the brand color stays wherever it has a job.
- Every tier clears 4.5:1 on its worst surface
- Brand color kept where it has a job
- Color never carries a state alone
Events this month
1.62M
of 2M on the Growth plan
↑ 12.4% vs October
- Page viewed812,406
- Sign-up started41,920
- Plan upgraded1,284
SubmitUpgrade planClick hereAll events03
/keyline layoutSpace that groups
Space opens above a heading and closes below it, boxes around unlike content come off, and nested corners share a center.
- Space above a heading outweighs space below
- Inner radius is outer minus padding
- Boxes are the exception
Events this month
1.62M
of 2M on the Growth plan
↑ 12.4% vs October
- Page viewed812,406
- Sign-up started41,920
- Plan upgraded1,284
SubmitUpgrade planClick hereAll events04
/keyline depthOnly what floats casts a shadow
Depth decides what is flat, raised, floating or modal, and builds each level as one bundle of surface, edge and shadow.
- Elevation is a bundle, applied whole
- Edges say where a surface ends
- Translucency only with its fallbacks
Events this month
1.62M
of 2M on the Growth plan
↑ 12.4% vs October
- Page viewed812,406
- Sign-up started41,920
- Plan upgraded1,284
SubmitUpgrade planClick hereAll events05
/keyline motionTimed by how much changes
Durations come from a ladder sized by how much of the screen moves, on one curve; reduced motion gets a quieter version, not a switch.
- Duration scales with the change
- Press feedback in 0ms
- Reduced motion is a substitute, not a kill switch
Events this month
1.62M
of 2M on the Growth plan
↑ 12.4% vs October
- Page viewed812,406
- Sign-up started41,920
- Plan upgraded1,284
SubmitUpgrade planClick hereAll events06
/keyline patternsWords that do what they say
Every action is named for what it does and every link for where it goes, and each element keeps the promise its form makes.
- Labels name the action
- Links name where they go
- Every element keeps its promise
Events this month
1.62M
of 2M on the Growth plan
↑ 12.4% vs October
- Page viewed812,406
- Sign-up started41,920
- Plan upgraded1,284
SubmitUpgrade planClick hereAll events
- Type
- Color
- Layout
- Depth
- Motion
- Patterns
As a coding agent wrote it
Events this month
1.62M
of 2M on the Growth plan
↑ 12.4% vs October
- Page viewed812,406
- Sign-up started41,920
- Plan upgraded1,284
Why Keyline
Laws, not a look. Measured, here, on this page.
Four reasons, each a law this page keeps. The red marks are measured live, off the type you're reading.
Your names, your values
Written in the tokens you already have: in the dashboard,
--text-3went from 3.55 to 4.93:1 under its own name.Four presets, one set of laws
Editorial, Product, Expressive, Glass: the dials set for what your reader is doing, any of them movable with a reason.
A detector for the pull request
Reads CSS, Tailwind and CSS-in-JS in any framework, with no model and no API key; on this site it finds nothing.
11 commands, or just ask
4 read and change no code, 7 refine one domain each; or ask in plain words.
Install
One line, then /keyline init.
The installer asks which agent you use and copies the skill into its folder. Node 18 or later.
/plugin marketplace add Mihirmodi27/keyline/plugin install keyline@keylineOr copy the skill into the project: npx keyline install --tool claude-code
Then, in your agent:
/keyline initStill deciding?The short answers, then the source.
Keyline on GitHubDoes it restyle my product into someone else's?
No. Keyline works in your token names and keeps what your design already chose: its brand color, its corners, its navigation. It removes something only when a law requires it, and says which law.
Does the detector need a model or an API key?
Neither. It reads CSS, Tailwind classes, inline styles and CSS-in-JS from source, in React, Vue, Svelte, Astro and plain HTML, and exits non-zero on errors so it can gate a pull request.
What's DESIGN.md?
The contract between your codebase and the agent: your tokens mapped onto Keyline's roles, the preset, your motion and z-index ladders, and every decision made off the preset with its reason. Edit it by hand whenever you like.
Is it free?
Yes. Keyline is MIT-licensed and open source.
Something half-built in mind? Give your agent the laws it would get from a designer.
npx keyline install