unslop

Unslop the vibecoded UI.

An agent skill that measures before it touches anything, fixes spacing, surfaces, icons, type and data in five passes, and stops when its own audit comes back clean.

$npx skills add arjunkshah12345-hash/unslop
Live, not a video. Shipyard, a made-up deploy dashboard, goes through the five passes. Click it, then space to pause and ← → to step.
398 → 0audit errors across the four demos
5 passesalways in the same order
17 checksautomated, the rest by eye

Five passes, in order

Spacing first, because it is structural and hard to see once colour changes. Data last, because it depends on every type and colour decision before it.

01

Spacing: measure, then snap

Guessed spacing is almost consistent. Nobody sees 3px; everybody feels it.

  • Measure rendered gaps, not the CSS you think applies.
  • Every value from one scale: 4, 8, 12, 16, 24, 32, 48.
  • Repeated siblings sit at identical gaps. Use gap, not margins.
  • At most four corner radii.
Before
9 · 3 · 14 · 6
After
4 · 4 · 4 · 4 ✓
02

Surfaces: calm the colour

When everything glows, nothing is important.

  • One neutral ramp and one accent, for the one primary action.
  • No gradient chrome, no gradient text, no glow.
  • Status colours only mean status.
  • Muted text still clears 4.5:1.
Before Deploy now
After Deploy
03

Icons: real icons, not emoji

Emoji change per platform, ignore your colours and read as a toy.

  • No emoji in nav, labels, buttons or status.
  • One icon set, one 1.5px stroke, currentColor.
  • Status is a dot plus a word.
  • Delete icons that repeat their label.
Before
🏠🚀📁🌐⚙️
After
04

Type: honest type

Slop copy performs excitement. Honest type says what the thing is.

  • Names, not hype. No exclamation marks.
  • Sentence case, two or three weights, at most eight sizes.
  • Numbers get precision, units, context and tabular figures.
  • Monospace for hashes, branches and IDs.
Before 42s blazing fast!! ⚡⚡
After 42.1s −3.4s this week
05

Data: data that reads

A spinning five-slice donut looks like data and says nothing.

  • Chart the question: trend, history, or part of a whole.
  • Animate in once, then hold still.
  • Every number gets a range, a comparison or a target.
  • Label directly; legends only when labels collide.
Before
94%!!
After 99.982%

The audit

One read-only script finds the measurable tells: off-grid spacing, uneven siblings, emoji, glow, gradient text, hype copy, failing contrast, looping charts. The skill runs it before the first pass and after every pass.

  1. From Node

    Loads the page in headless Chromium and exits 1 while errors remain, so it can gate CI.

  2. From any agent

    Evaluate audit.js with whatever browser tool the agent has. The result is the report.

  3. From DevTools

    Paste the file into the console for a table of every issue.

  4. On this page

    This site was built with the skill. Check it yourself.

$ node scripts/audit-url.mjs demo/?stage=1&hold

106 errors · 76 warnings · 175 visible elements

icons/emoji  (60)
  error div#brand > span.pro · ✨ in "PRO ✨"
  error div#n1 > span.ico > span.e · 🏠 in "🏠"
spacing/off-grid  (37)
  error div#navlabel · margin-top 31px, margin-bottom 10px
  error div#search · margin-top 22px
surface/colored-glow  (31)
  warn  div#n1 · rgba(255, 70, 200, 0.7) blur 28px
type/hype  (5)
  warn  p#sub · crushing in "Your deploys are absolutely CRUSHING…"
spacing/uneven-siblings  (3)
  error aside#side > nav · vertical gaps 11, 4, 17, 7, 13px

$ node scripts/audit-url.mjs demo/?stage=7&hold

0 errors · 0 warnings · 0 info · 236 visible elements
Clean. Nothing measurable left to unslop.
CheckSeverityCatches
spacing/off-gridErrorPadding, margin or gap outside the 4pt scale
spacing/uneven-siblingsErrorRepeated items sitting at different rendered gaps
icons/emojiErrorEmoji in interface text
surface/gradient-textErrorGradient-filled text
contrast/textErrorText under 4.5:1, or 3:1 for large text
surface/colored-glow, surface/text-glowWarningColoured shadows and glowing text
surface/vivid-gradient, surface/too-many-accentsWarningSaturated multi-hue gradients; more than three accent hues
type/exclamation, type/hypeWarningExclamation marks and hype words in UI copy
type/too-many-weights, type/too-many-sizesWarningMore than three weights or eight sizes
radius/no-scaleWarningMore than four corner radii
motion/infiniteWarningAnimations that loop forever on content
surface/glass, type/proportional-figuresInfoBackdrop blur; big numbers without tabular figures

Install

A plain folder: SKILL.md, the rulebook, the audit and four demos to use as film templates. It works with Claude Code and any agent that reads skills.

Skills CLI

Installs into every agent it finds.

npx skills add arjunkshah12345-hash/unslop

Claude Code

Clone it and link the folder.

git clone https://github.com/arjunkshah12345-hash/unslop
ln -s "$PWD/unslop/skills/unslop" ~/.claude/skills/unslop

Any other agent

Copy skills/unslop to wherever it loads skills, or point it at SKILL.md.

cp -r unslop/skills/unslop ~/.agents/skills/

Then ask: unslop this dashboard