gauge
Skill0 starsChanged 44 days agoMITView on GitHub
Measures a rendered interface against a fixed checklist (type, colour, accessibility, viewports, alignment, contrast, themes, components) and fixes every violation in place. Every answer comes from the render as written-down numbers, never from the stylesheet or eyeballing. Output is the edit list only. Use when the user says "/gauge", "measure this screen", "check the alignment", "are the gaps on the scale", "check the fonts", "do these fonts go together", "check the font pairing", "too many fonts", "check the colours", "do these colours match", "is the palette consistent", "check the contrast", "check dark mode", "is this accessible", "does this reflow", "check the focus rings", "audit this UI", or the Turkish "olc", "fontlar uyumlu mu", "yazi tipi kontrol", "renkler uyumlu mu", "renk paleti kontrol", "hizalamayi kontrol et", "kontrast kontrol", "karanlik mod kontrol", "erisilebilir mi". For code rules use lint; for the 73 UX patterns use muster; for redesigning a screen in scored rounds use compose.
3 other projects use a version of this.
Adopted by
Most recently taken up by
- simota/agent-skillstheir own version, first seen Oct 23, 2026
- matthewharrilal/claude-skillstheir own version, first seen Oct 13, 2026
- IamK77/Skilltheir own version, first seen Oct 12, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- simota/agent-skills★ 96same name
- IamK77/Skill★ 2same name
- matthewharrilal/claude-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 3 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 46
If the target genuinely cannot be rendered, say so in one line and stop.
- Very specific: line 60
If the repository root holds a .gauge.md, read it before measuring.
- Very specific: line 76
Every disabled or relaxed rule is listed once after the edits: overrides theme relaxed (.gauge.md).
- Very specific: line 131
After the edits, re-render and re-measure every rule a fix touched.
- Distinctive: line 144
After the last edit run what the project already has: type check or compile, the linter if configured, then tests (whole suite if fast, …
- Distinctive: line 156
Default: no commits. The one exception is the case the budget flagged — tree clean at the start, user chose to fix everything, edit count …
- Distinctive: line 161
Never amend, never rebase, never touch a commit the user made.
- Very specific: line 165
No report: No checklist or findings table, no verdict, no ReportFindings call.
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
gauge — the measurement gate
A fixed checklist, answered from the render. Every fail is fixed, not written up. It hands back a diff, not a review.
Levels
lite, full, ultra, as in lint; full is the default.
- lite — one viewport:
access,type,palette,contrast,alignment. Re-renders at that viewport are part of lite (web font blocked, reduced motion, greyscale, 200% zoom); clauses tagged· fullinrules/core.mdwait for full. - full — lite plus other viewports, modes and states:
responsive,theme,states. - ultra — full plus the component system:
reuse,variants. Touches files the target did not name; those come back asOUT OF TARGETunless the user pointed at the directory.
The floor runs at every level: access#1 (keyboard and focus ring), access#4 (never colour
alone), contrast#2 (text) and contrast#3 (control boundaries and focus rings). No override disables
or relaxes any of them.
No running one rule alone. The level picks the rules; .gauge.md may disable or relax non-floor
rules and clauses. The level word goes anywhere in the invocation: /gauge lite,
/gauge ultra src/Board.tsx.
Target
The argument is the target. With none, the uncommitted diff; if the tree is clean, ask one question. Read the whole target first, and for a diff the parent shell too (grid, breakpoint config, layout wrapper).
Render first (MUST)
Nothing is checked before the target is on screen. Launch it the way the project already runs (the
run skill covers this), then screenshot, tab, hover and measure the live render.
Measurements come from the render: a coordinate is getBoundingClientRect(), a gap is the
difference of two measured edges, a ratio is computed from the two resolved colours, a target size is
the measured box. The source is read to locate tokens, components and declared scales, never to stand
in for a measurement.
If the target genuinely cannot be rendered, say so in one line and stop; point to lint or
muster. Never guess a number.
Which rules apply
Always load rules/core.md — every rule, threshold and level tag. Never rename a rule: the output
addresses rules by name.
A rule with no subject in the target (variants on a lone leaf component, theme on a surface that is
one-mode by policy) does not fire. Say so in the notes line; a rule you did not look for is not
silently clean.
Project overrides
If the repository root holds a .gauge.md, read it before measuring. One directive per line:
keyword, rule name (or rule#clause), and a required reason.
relax theme the product ships light-only, there is no dark surface
disable responsive this is a fixed-size kiosk build at 1920x1080disable— not measured, no edits.relax— measured, but the exception named in the reason is accepted.- A directive with no reason is not honoured.
- The floor clauses (
access#1,access#4,contrast#2,contrast#3) can be neither disabled nor relaxed. Otheraccessandcontrastclauses (the 44px target included) relax clause by clause; neither rule is disabled whole, and any relaxation of either is printed on its own line every run.
Every disabled or relaxed rule is listed once after the edits: overrides theme relaxed (.gauge.md).
When two rules disagree
accessandcontrastbeat everything.alignmentbeatsreuse— a shared component that breaks the scale is fixed at the component with a variant, never left with a stray gap. This variant fix is allowed at any level.reusebeatsvariants— collapse the duplicate first, then decide variant axes.themebeatspaletteandcontraston ordering only — move the colour to a semantic token first, then judge and measure on the token, in both modes.contrastbeatspalette— the palette is re-derived around the readable value.typebeatsalignment— the type scale settles before the rhythm.reusebeatstypeandpalette— a face or colour the project already tokenised wins; never a second scale beside the existing one.- Otherwise, the rule that removes an element wins over the rule that restyles it.
Violation shape (MUST)
Rule by name, file:line, the measurement (the numbers, the ratio, the viewport), and the fix written
in. No number, no violation — "feels cramped" never becomes an edit; a 22px gap in a 4/8/16/24 scale
does.
Verify before fixing (MUST)
Re-measure every fail and try to kill it before touching anything. A fail that does not survive is dropped and never mentioned.
contrast is the exception: a pair you cannot compute (text on a photo, gradient, video) stays a
NEEDS DECISION, never an assumed pass.
Scope budget
At full and ultra, up to 20 edits or 8 files is fixed outright. At lite, 40 edits or 16 files.
Past the budget, print the count and the breakdown by rule in one or two lines, then ask one question: fix everything, drop a level, or narrow to a file or directory. If the tree was clean at the start, say in the same question that edits will be committed one rule at a time. A budget question is about how much, never whether.
Fix it — do not ask (MUST)
Every surviving fail is fixed in place, immediately. No "shall I apply these?". Smallest edit that
clears the rule — no drive-by restyle, no reach outside the target, nothing from a level above the one
asked for (the one exception: the alignment-over-reuse variant fix).
Fix order:
- Structure —
reuse,variants. - Reach —
access. - Colour —
theme, thenpalette, thencontrast. - Type —
type. - Geometry —
alignment, thenresponsive. - States —
states.
After the edits, re-render and re-measure every rule a fix touched; a fix that clears contrast and
breaks theme is not done.
Exactly two kinds of finding stay unfixed, both named out loud:
NEEDS DECISION— the fix turns on something only the user knows: what a contrast pair resolves to over an image, what the empty state should invite, which duplicate component is the real one, whether a stray offset is a deliberate optical correction. Ask that one question in its line.OUT OF TARGET— the violation's real home is a file the user did not point at (token file, sharedButton, grid config). One line.
Prove it still renders (MUST)
After the last edit run what the project already has: type check or compile, the linter if configured, then tests (whole suite if fast, else the files touching the target). Then render again and re-measure the fixed checks at every viewport and mode rendered at this level. Console errors count as red.
- Green — print the edit list and stop.
- Red, cause obvious — fix and re-run; part of the edit, not a new finding.
- Red, fix not obvious — revert that edit, keep the rest, report
NEEDS DECISIONwith the error.
Commits
Default: no commits. The one exception is the case the budget flagged — tree clean at the start,
user chose to fix everything, edit count past the threshold. Then one commit per rule, in fix
order. The message follows the repo's own convention (read recent git log), with the rule name as
scope.
Never amend, never rebase, never touch a commit the user made. Tree dirty at the start: no commits.
Output — the edits, nothing else
No report. No checklist or findings table, no verdict, no ReportFindings call. A header naming
the level, one line per edit (file:line, rule, measurement and change), then the render line, the
verification line, the overrides line if any, one notes line for what the rules ask to state
(pairing reason, measured lists, what was searched and found, rules that did not fire, clauses that
could not be measured, accepted passes), then the unfixed ones:
gauge · full
Button.tsx:31 access outline: none -> 2px ring at 2px offset, visible on Tab
CardGrid.css:20 alignment card gaps 22/24/24 -> 24 throughout, scale is 4/8/16/24
theme.css:31 contrast body text 3.9:1 -> 7.1:1 on surface, both modes
rendered 360 / 768 / 1440, light + dark, 24 screenshots
tsc --noEmit + vitest: green; no console errors
overrides alignment#7 relaxed (.gauge.md)
notes Inter + Source Serif: sans body vs serif display; gaps 8/16/24; variants: no siblings
NEEDS DECISION Hero.tsx:14 contrast caption sits on a photo — what is the intended backdrop?
OUT OF TARGET ui/tokens.css:3 theme the dark palette is literal here, outside the targetNothing beyond these lines — no praise, no summary, no "want me to also…", no passed rules. If every rule the level enables passed, say exactly that in one line, naming the level.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

