reviewing-design-system
Skill2 starsChanged 3 months agoMITView on GitHub
Use when reviewing or judging a finished design-system document — a product's reusable visual + interaction language — deciding whether an engineer can build a consistent, accessible UI from it. Reviews an AMEND delta-scoped. A gate, not authoring. Judges against a single-sourced usability/consistency/accessibility bar: tokens DTCG-typed and referenced by intent, not raw values; components fully specced in one API vocabulary; the catalog covers the screens' components plus an archetype-sized standard set; accessibility numeric (WCAG 2.2 contrast, focus appearance, target size, keyboard); i18n addressed or scoped out; governance present above its threshold; nothing fabricated. Emits exactly `VERDICT: approve|revise` plus actionable findings, and does not false-revise a proportionally-sized system. Not for authoring it, not per-screen layout, not navigation paths, not engineering design docs.
In this repository77 other files it gives its agents.
- alembicSkill
- atlassian-rest-opsSkill
- authoring-api-referenceSkill
- authoring-api-specSkill
- authoring-architecture-docSkill
- authoring-data-modelSkill
- authoring-design-systemSkill
- authoring-developer-guideSkill
- authoring-feature-specSkill
- authoring-hi-fiSkill
- authoring-prdSkill
- authoring-release-runbookSkill
- authoring-technical-designSkill
- authoring-test-planSkill
- authoring-user-flowsSkill
- authoring-user-guideSkill
- authoring-wireframesSkill
- biomeSkill
- cloudflare-pages-opsSkill
- code-prior-art-surveySkill
- content-template-gatewaySkill
- design-reviewSkill
- external-content-sanitizerSkill
- github-cli-opsSkill
- integrations-prior-art-surveySkill
- jenkins-rest-opsSkill
- market-competitive-prior-art-surveySkill
- ml-prior-art-surveySkill
- motion-reactSkill
- netlify-opsSkill
- openapi-ts-clientSkill
- platform-ecosystem-prior-art-surveySkill
- polyglot-git-hooksSkill
- project-document-discoverySkill
- pydantic-v2Skill
- python-monorepo-architectureSkill
- react-component-testingSkill
- regulatory-prior-art-surveySkill
- rest-api-designSkill
- reviewing-api-referenceSkill
- reviewing-api-specSkill
- reviewing-architecture-docSkill
- reviewing-code-prior-art-surveySkill
- reviewing-data-modelSkill
- reviewing-developer-guideSkill
- reviewing-document-discoverySkill
- reviewing-document-setSkill
- reviewing-feature-specSkill
- reviewing-hi-fiSkill
- reviewing-integrations-prior-art-surveySkill
- reviewing-market-competitive-prior-art-surveySkill
- reviewing-ml-prior-art-surveySkill
- reviewing-platform-ecosystem-prior-art-surveySkill
- reviewing-prdSkill
- reviewing-regulatory-prior-art-surveySkill
- reviewing-release-runbookSkill
- reviewing-scale-prior-art-surveySkill
- reviewing-security-prior-art-surveySkill
- reviewing-technical-designSkill
- reviewing-test-planSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 5 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 62
Component completeness (per component): Every catalogued component carries all five: anatomy, states, variants, usage do/don't, …
- Distinctive: line 76
When judging a versioned delta against a prior version, the bar is delta-scoped:
- Distinctive: line 90
Do not revise to signal effort or request nice-to-haves.
- Distinctive: line 130
Keep approve-notes few and clearly non-blocking.
- Distinctive: line 134
Approving for completeness instead of buildability: Every section present yet un-buildable (raw values in specs, a component missing …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
reviewing-design-system — SKILL.md
Variant: standard · When to use: judging a finished design-system document (or an amend delta) as an acceptance gate — checking a designer/engineer can build a consistent, accessible UI from it, then emitting
VERDICT: approve|revisewith actionable findings.
Overview
This skill is the review half of a producing/judging design-system pair. Loaded by a reviewer who holds a finished design-system document (or an amend delta against a prior version), it judges against one question: can a designer build a consistent UI and an engineer implement it from this document, without asking the author, and does the catalog cover the components the product's screens need? It applies a fixed usability + consistency + accessibility checklist — the same bar the author produces to (authoring-design-system), so produce-bar and review-bar do not drift — then emits a single machine-parseable verdict plus findings the author can act on in one revision pass. It judges the textual markdown artifact (tokens as values + DTCG-shaped + spec tables), not a rendered design file. It is an acceptance gate — it does not author, fix, or rewrite the document.
When to activate
- A finished design-system document needs an accept/revise decision before wireframing / hi-fi / UI engineering builds from it.
- An amend (a versioned delta to an existing system) needs a delta-scoped accept/revise decision.
- Re-judging a revised design system after a prior
revise.
Do NOT activate when:
- Authoring or repairing a design system → use
authoring-design-system. - Reviewing a wireframes / per-screen layout doc → use a wireframe-review skill (this judges the reusable vocabulary one layer up).
- Reviewing a user-flows doc → use a user-flow-review skill.
- Reviewing an engineering design doc (architecture/ADR/RFC) → use a design-review skill.
- Checking template/section conformance → a template concern; this judges quality against the bar.
- Grading a coded component library → this judges the document.
Workflow
Step 1: Read the whole document with fresh, independent eyes
Read end to end without the author's framing. Your stance is a gatekeeper for the next steps (wireframing + hi-fi + UI engineering): a finding carries weight only when it shows a designer/engineer cannot build a consistent, accessible UI as written. Identify the product archetype (thin CLI/utility vs content app vs full UI product) and, where available, the flows/screen list — the coverage + proportionality conditions calibrate to it. If the artifact is an amend delta, also read the prior version and the change scope (Step 2b).
Step 2: Run the checklist — judge each condition
For each, decide pass or gap. A condition fails only on a real, named deficiency — "I'd have chosen a different palette" is not a gap. Capture the exact location for each gap. These conditions are the single-sourced bar (the (reviewing+both) angles the author produces to); do not add private ones. Each names its proportionality collapse — when it legitimately doesn't apply.
- Principles stated. 3–6 actionable principles (not platitudes). Gap when absent or platitudes.
- Tokens defined, DTCG, intent-named, consistently applied. Color (incl. semantic role tokens), type scale, spacing, elevation, motion defined as named tokens with concrete values; expressed in the W3C DTCG format (typed
$value+ aliasing) — required at any size, no values-table exception; components reference semantic tokens, never raw values (#1A73E8,16px). Gap when a token family is missing/valueless, tokens are a flat hex list with no DTCG structure, or a component spec references a raw value. Collapse: none for DTCG (universal); modern color spaces (Oklch/P3) are proportional — sRGB-only is not a gap. - Foundations breadth. Grid/layout + density, iconography (grid/stroke/sizes/style), and elevation/motion are present where the archetype needs them. Gap when a UI product omits a grid or an icon foundation it clearly uses. Collapse: a thin/utility product with no icons or complex layout legitimately omits these.
- Theming via alias-swap. Light/dark and (where present) multi-brand re-point semantic aliases over one fixed tier — not forked components. Gap when a theme is implemented by duplicating/forking components. Collapse: single-brand single-theme need not belabor it.
- Component completeness (per component). Every catalogued component carries all five: anatomy, states, variants, usage do/don't, accessibility. Gap when any component is missing one (e.g. variants but no states / no a11y).
- Component API consistency. One property/option/default vocabulary across the catalog (the same variation axis named the same — not
typehere,modethere); shared values compose. Gap on API drift across components. Collapse: a tiny catalog trivially holds. - Catalog coverage — both floors. Covers every component the product's flows/screens use (the hard floor, fully specced) AND the archetype-sized standard set. Gap when a real screen needs a component the catalog omits/under-specs. Collapse: the standard set scales with the archetype (no maximalism).
- Patterns present. The recurring multi-component scenarios the flows need (form validation, empty state, destructive-confirm, …). Gap when a needed pattern is absent.
- Layout + internationalization. Breakpoints/grid/focus-order stated; for a localized product, i18n/RTL addressed (text-expansion, logical properties, RTL/bidi, locale fonts). Gap when a localized product ignores i18n, or a screen that reflows says nothing. Collapse: a stated single-locale tool may scope i18n out explicitly (the explicit scope-out is not a gap; a silent omission is).
- Accessibility numeric, WCAG 2.2 AA. A stated WCAG 2.2 AA target + checkable thresholds: text ≥4.5:1 (large/UI ≥3:1); a visible, not-obscured focus indicator (SC 2.4.7 + 2.4.11, AA) plus the AAA Focus Appearance ≥2px/3:1 vs unfocused + adjacent (SC 2.4.13) adopted as a house rule; target size 24×24 (+ spacing exception); keyboard; reduced-motion; no color-only; per-component role/name/state. Gap when accessibility is aspirational/non-numeric, or misses the 2.2-specific criteria. Collapse: none — a11y is non-negotiable (but a static info screen needn't belabor states it lacks).
- Voice/content present. Voice + a tone spectrum (clarity over brand voice in high-stakes moments), terminology (one term per concept), component copy rules (button = verb-first; error = cause + fix; empty = guide-to-action). Gap when absent for a product with user-facing copy, or error/empty rules lack cause+fix / guide-to-action. Collapse: a product with no user-facing copy is light.
- Lifecycle & governance (above the threshold). For a system with >1 consumer/team or a versioned external release: versioning + changelog, deprecation/migration policy, contribution model, ownership, adoption, and an audience recorded as a decision (not an assumed persona). Gap above the threshold when governance/versioning is absent, or an assumed audience drives the vocabulary. Collapse: fully omittable below the threshold (single-maintainer + single-consumer + non-versioned-external) — manufacturing a governance gap there is a false-revise.
- Grounded, not boilerplate + usable downstream. Tokens/components reflect this product (archetype-sized); gaps surfaced as assumptions/open-questions, not fabricated; wireframing/hi-fi can reference real components/tokens and engineering can build without asking the author. Gap on generic fill, a fabricated brand/contrast answer, or a dangling reference.
Proportionality. "Build a consistent UI from it" scales with the product. A thin product's system legitimately collapses the conditions marked above; the hard floor (cond. 7a), DTCG (cond. 2), and numeric a11y (cond. 10) still hold at any size. Judge completeness-of-decisions, not row count. Do not manufacture a gap from brevity.
Step 2b: If the artifact is an amend (delta) — review the diff, not the whole doc
When judging a versioned delta against a prior version, the bar is delta-scoped:
- Scope-confinement — only the stated tokens/components changed; no unrelated re-naming, palette churn, or re-tiering. An out-of-scope change is scope-creep →
revise(or split). - Ripple / regression — every component still references a real semantic token (none orphaned by a rename/remove); the alias layer resolves; theme variants still cohere (no silent dark-mode/brand break).
- Versioning + changelog accuracy — the semver bump matches the change class (rename/remove/retype ⇒ MAJOR; additive ⇒ MINOR; fix ⇒ PATCH); the changelog matches the diff.
- Deprecation-safe — a breaking change carries a deprecation + migration path; no silent removal.
- Coherence — the change fits the existing tiering/intent-naming/catalog API; the delta still satisfies the relevant Step-2 conditions locally.
- Re-review proportionality — judge the delta; do not re-litigate settled, untouched tokens/components.
Step 3: Decide the verdict
- approve — every applicable condition (or, for a delta, every delta-scoped check) passes; a designer/engineer can build from it as written. Approve even if you can imagine stylistic improvements; the bar is usability + consistency + accessibility, not perfection or maximalism.
- revise — one or more real, named gaps block building (undefined/inconsistent/non-DTCG tokens, a raw value in a spec, a component missing a part, API drift, non-numeric or non-2.2 a11y, a coverage hole, a silent i18n omission on a localized product, missing governance above the threshold, an out-of-scope or un-versioned delta, fabricated content).
Do not revise to signal effort or request nice-to-haves.
Step 4: Emit the verdict + actionable findings
Emit the verdict as a single line — the literal VERDICT: approve or VERDICT: revise, on its own line, no fences/quotes/extra words:
VERDICT: approveThen list findings. On revise, each is actionable — the failed condition + exact location + how to fix — so the author resolves it in one pass. On approve, findings are optional non-blocking notes.
Good finding:
revise — Tokens (cond. 2), "Button" spec:
background: #1A73E8is a raw hex. Fix: reference the semantic tokencolor.action.primary(define it in the color section), expressed in DTCG.
Bad finding: "The tokens could be better." (Which? Why? What fixes it?)
Rules
Hard rules (never violate):
- Emit exactly one verdict line,
VERDICT: approveorVERDICT: revise— that literal token, on its own line. - Judge, never author. Return findings; do not rewrite/fix the document.
- Single-sourced bar. Judge against the Step 2 conditions (+ Step 2b for a delta) — the same bar the author produces to. No private extra conditions.
- No false-revise. A system meeting every applicable condition is approved, even a thin one; proportional sizing that still covers the surface area is not a defect.
- No false-approve. A real gap is a
revise. - A raw value or non-DTCG token is a consistency gap (cond. 2). A component missing one of five parts is a gap (cond. 5). API drift is a gap (cond. 6).
- Accessibility must be numeric to WCAG 2.2 AA (cond. 10) — incl. visible + not-obscured focus (AA), the AAA Focus Appearance ≥2px/3:1 house rule, and target-size 24px.
- The surface-area floor + DTCG + numeric a11y hold at any size — they never collapse.
- Governance is omittable below its threshold; required above it (cond. 12) — don't manufacture a governance gap on a thin internal system.
- On a delta, review the diff (Step 2b) — scope-confinement + ripple + semver + deprecation; don't re-litigate untouched parts.
- Fabrication is a gap, not grounding (cond. 13).
- Judge against the upstreams the document was given. A not-produced upstream is never a revise trigger; a document that ignored a produced upstream it should have drawn on is a fair finding.
- Every revise finding is actionable — failed condition + location + concrete fix.
Preferences (override-able):
- Order findings by severity — blocking gaps first.
- Reference the condition number/name in each finding.
- Keep approve-notes few and clearly non-blocking.
Gotchas
- Approving for completeness instead of buildability. Every section present yet un-buildable (raw values in specs, a component missing states/a11y, non-numeric contrast). Judge buildability, not template-filled.
- The raw value / non-DTCG token hiding in a spec. A token section can look right while a "Button" hard-codes
#1A73E8, or the tokens are a flat hex list with no DTCG structure — both fail cond. 2. - The half-specced component. Anatomy + variants + usage but no states / no a11y reads complete but isn't (cond. 5).
- Missing the 2.2-specific a11y. Generic "≥3:1 focus" without not-obscured (AA, SC 2.4.11) / the ≥2px Focus-Appearance house rule (SC 2.4.13) / 24px target-size misses the bar (cond. 10).
- False-revise on a thin system. A thin product's system is correctly small — collapsed sections it doesn't need, i18n scoped out, governance omitted below the threshold. That is right-sizing, not under-specification.
- Manufacturing a governance gap below the threshold — a single-maintainer single-consumer system legitimately omits the lifecycle/governance section entirely (cond. 12).
- Re-litigating the whole doc on a delta — review the diff (Step 2b); re-opening settled untouched tokens is the delta false-revise.
- Letting a breaking delta through as a MINOR with no deprecation — Step 2b version + deprecation checks.
- Verdict token drift. "Approved", "LGTM", a buried verdict won't parse. Emit the literal
VERDICT: approve|reviseon its own line.
Anti-patterns
- Rubber-stamp approve. Skimming and approving to avoid a revise loop.
- Nit-pick revise. Blocking on palette taste / nice-to-haves dressed as gaps.
- Silent rewrite. Authoring inside a review.
- Inventing conditions (a Figma link, dark-mode where unneeded) — drifts the bar off the produce-bar.
- Maximalism. Demanding the full broad standard set / full governance from a thin product.
- Regenerate-on-delta review. Grading a delta as if it were a fresh full doc.
- Hedged verdict. "Mostly approve but…" or two verdict lines.
Output
A single review result:
- One verdict line —
VERDICT: approveorVERDICT: revise, verbatim, on its own line. - Findings — on
revise, one actionable finding per blocking gap (failed condition + location + fix); onapprove, optional non-blocking notes.
The abstract consumer is whatever orchestrates the produce→review loop: approve accepts the system for the next phase (wireframing / hi-fi / UI engineering); revise returns findings for a bounded revision pass.
Related
authoring-design-system— the produce half; writes to the same bar this judges. Pairing single-sources the bar.- A wireframe-review skill — the gate for per-screen layout (one layer down).
- A user-flow-review skill — the gate for navigation paths.
- A design-review skill — the gate for engineering design docs.
- A design-system template / content-template tool — owns section structure; this judges quality against the bar.
Progressive disclosure
references/buildability-bar.md— the conditions expanded with per-condition pass/gap signals + worked finding examples + the delta-review checks.references/sources.md— research provenance for the method + the single-sourced bar (shared with theauthoring-design-systemsibling).
Body budget
description≤ 1,024 chars (agentskills.io cap).- Body ≤ ~500 lines / 5,000 tokens.
- Per reference file: warn >10k tokens, error >25k. Total references: warn >25k tokens, error >50k.
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.

