Document and govern design system
Skill dineshrevunuru/SuperSkills/document-and-govern-design-system
Documents design-system components (variants, states, props, usage rules, content standards) and runs system governance — NN/g 6-dimension maturity assessment to pick the highest-leverage gap, contribution rules, review cycles with yes/no criteria, versioning and deprecation. Use when asked to 'document this component', 'write usage guidelines', 'audit our design system', 'set up a contribution process', 'people keep building one-offs', 'the system is drifting', or 'where should we invest in the design system next'. NOT for creating token values (build-token-system) or designing new component states (design-ui-states).From its SKILL.md
npx -y skills add dineshrevunuru/SuperSkills --skill document-and-govern-design-systemAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
15.4 KB, ~3.5k tokens by cl100k_base, as published. Nobody here has run it
Document & Govern a Design System
Turn a pile of components into a system people actually use: documentation that answers "which one, when, and how," plus governance that keeps the system trustworthy as it grows.
Documentation templates adapted from Anthropic's design-system plugin skill; maturity and governance layers grounded in NN/g research (see Sources).
When to use / when NOT to use
Use when:
- A component exists (in code or Figma) but has no written variants/states/usage doc
- Teams or future sessions keep rebuilding one-offs instead of using the system
- Someone asks where to invest next in the system, or whether a new pattern should enter it
- The system needs contribution rules, review cadence, or a deprecation policy
- Content rules (terminology, casing, error tone) need to live in the system
NOT for:
- Producing token values or token architecture →
build-token-systemowns canonical values, produced once. This skill references tokens by name only and never re-encodes a value. - Designing what a state looks like (empty/loading/error behavior) →
design-ui-states. This skill documents states that are already designed. - Writing the actual UI copy →
write-ux-microcopy. This skill owns the content standards the copy must follow. - Judging whether a contribution is good craft →
craft-critiqueowns verdict language; this skill's gate is mechanical yes/no criteria.
The method — route the ask first
What's the ask?
├─ "Where does the system stand?" / "what next?" → Step 1: Maturity scan → Step 2: pick the gap
├─ "Document component X" → Step 3: Documentation standard
├─ "One-offs everywhere / drift / detaching" → Step 4: Governance
├─ "What words / casing / tone in the system?" → Step 5: Content standards
└─ "Should this new pattern enter the system?" → Step 4: Acceptance criteria gate
First check: is this a design system or a style guide? A style guide is a static visual reference; a design system = standards + reusable components + a process that keeps them alive (NN/g distinction). If there's no reusable component library and no process, say so — documenting a style guide as if it were a system hides the real gap.
Step 1 — Maturity scan (NN/g 6 dimensions)
Score each dimension 0–3 using the signal questions. 15 minutes, honest answers, evidence per score — no aspirational scoring.
| Dimension (NN/g) | Signal questions | 0 looks like | 3 looks like |
|---|---|---|---|
| Organizational alignment | Is the system funded/mandated? Tied to a stated goal? | "Side project nobody asked for" | Leadership names it in planning |
| Team effectiveness | Named owner? Allocated time, or side-of-desk? | No owner | Owner with protected hours |
| Infrastructure | Tokens in code AND design tool? Versioned releases? Searchable docs? Changelog? | Values scattered, no docs | One source of truth, versioned, documented |
| Governance | Written contribution process? Yes/no acceptance criteria? Review SLA? | "Ask whoever built it" | Published criteria, decisions in days |
| Support | Onboarding path? Migration help? A channel that answers? | Silence | Office hours + fast answers |
| Adoption | What share of NEW UI uses the system? Are teams detaching/overriding? | Everyone forks | Default choice; overrides are rare and reported |
Step 2 — Pick the highest-leverage gap (one, not five)
- Lowest score wins by default — but apply the overrides below.
- Low adoption + decent infrastructure → the gap is governance or support, not more components. Teams detach when reviews are slow or criteria are fuzzy (NN/g enforcer finding: fast reviews + clear yes/no criteria are what drive adoption).
- Solo or two-person system (a freelance product, a portfolio): skip organizational-alignment ceremony. Leverage lives in infrastructure (docs + named tokens) and self-governance (a changelog and acceptance criteria you actually follow) — that's what lets a future session or collaborator continue the work.
- Never pick "build more components" as the gap. Coverage is an output, not a maturity dimension. An undocumented, ungoverned library of 60 components is less mature than 12 documented, governed ones.
Output one sentence: "Highest-leverage gap: [dimension] — because [evidence]. First move: [specific action, sized]."
Step 3 — Documentation standard (per component)
Fixed section order. A component is not in the system until this doc exists — undocumented components are one-offs with good intentions.
- One-line description — what it is + the job it does. Not its visual appearance.
- Use when / DON'T use when — the don't row must NAME the sibling component that owns the adjacent case ("For blocking confirmation, use
Modal"). This is the single highest-value line in the doc; it's the question people actually have. - Variants table — each variant with a distinct "use when." If you can't write a distinct use-when, the variant shouldn't exist — cut it (load
design-tastefirst; the cut-vs-keep call defers to it). - States table — every state the component renders: default, hover, focus, active, disabled, plus loading/error/empty where applicable. A missing focus-state row is an accessibility failure, not an omission. (Designing the states belongs to
design-ui-states; here you record the decisions.) - Props/API table — name, type, default, description. Defaults are load-bearing: they encode the recommended usage.
- Accessibility block — ARIA role, full keyboard map, what the screen reader announces. Never "TBD."
- Content rules inline — label casing, max length, error-message pattern for THIS component (see Step 5 for system-wide rules).
- Tokens by name only —
color.action.primary,space.4. A raw hex or px value in a doc is a bug; values live inbuild-token-system's output. - One code example — current API, copy-paste runnable, no deprecated props.
- Do/don't table — from real misuses you've seen or the likeliest ones. Generic rows ("do use it correctly") are filler; cut them.
Prioritize coverage over polish: a shallow doc (sections 1–2, 4, 6) for every component beats perfect docs for three. Mark shallow docs status: draft and log them as debt.
Step 4 — Governance
4a. Pick a contribution model by team size:
| Model | Who approves | Right when |
|---|---|---|
| Centralized | One owner approves everything | Solo–5 designers/engineers. Default for freelance/portfolio systems. |
| Federated | Trained contributors across teams share approval | Multiple product teams, dedicated system team |
| Hybrid | Core team approves; contributors propose + co-build | In between; system team is a bottleneck |
4b. Publish yes/no acceptance criteria for anything entering the system. All must pass — no judgment calls at the gate (judgment happens later, in review, per craft-critique):
- Needed in ≥3 places (or ≥2 products) — link them
- Cannot be achieved with an existing component + props (checked against the docs, not memory)
- All states specified, including focus, loading, error where applicable
- Accessibility block complete (role, keyboard, announcement)
- Uses tokens only — zero raw values
- Documentation (Step 3) written BEFORE merge, not after
- Changelog entry drafted
4c. Run a review cycle with an SLA. Intake via a template (what, where needed, which criteria it meets) → check against criteria → decision within a stated window (days, not weeks) → merge with changelog entry, or reject naming the specific criterion that failed. Slow or ambiguous review is the primary reason teams detach from a system — a fast "no with a reason" preserves trust better than a slow "maybe" (NN/g enforcer research).
4d. Name the enforcer. One person reviews new UI against the system — not to police style, but to catch one-offs early and route them: use existing / extend existing / propose new. If nobody holds this role, the acceptance criteria are decoration.
4e. Version and deprecate — never silently delete.
- Semver: breaking API/visual change = major; new variant/prop = minor; fix = patch.
- Every breaking change ships with a migration note (old → new, effort estimate).
- Deprecation = mark in docs with the replacement + removal date. Deleting a component someone still uses converts adoption into resentment.
Step 5 — Content standards (they live IN the system)
Content rules are system components too (NN/g: content design systems). Capture as decided rules, not suggestions:
- Terminology table — one term per concept, enforced ("Sign in," never "Login"; "Remove," never "Delete" — whatever THIS product decided). Include the banned synonyms.
- Casing — one rule for buttons/labels/headings (e.g., sentence case everywhere) stated once, referenced by every component doc.
- Error-message pattern — what happened + how to fix it, no blame, no codes-only. Each component's doc points here and adds only its specifics.
- Formats — dates, numbers, currency, truncation rules.
- Writing the actual strings →
write-ux-microcopy. This section is the contract those strings must satisfy.
Worked example 1 — maturity scan of a small two-product system
| Dimension | Score | Evidence |
|---|---|---|
| Organizational alignment | 2 | Client expects consistent UI across booking app + admin app; no formal mandate |
| Team effectiveness | 2 | One owner (the designer-engineer); time exists but unprotected |
| Infrastructure | 2 | Tokens in code and Figma; docs partial; no changelog |
| Governance | 0 | No written criteria; "new component whenever it feels needed" |
| Support | 1 | Owner answers own questions; nothing written for a collaborator or future session |
| Adoption | 1 | Admin app detached: 14 hardcoded colors, 3 duplicate button variants |
Highest-leverage gap: Governance (0) — adoption is low while infrastructure is decent, which per Step 2 rule 2 points at governance, not more components. First move: publish the 7 acceptance criteria + start a changelog; run a 30-minute self-review before any new component enters. Sized: 2 hours.
Worked example 2 — component doc (condensed)
## Toast
Transient, non-blocking confirmation of a completed action. Auto-dismisses.
**Use when:** confirming success/failure of an action the user just took, no response required.
**DON'T use when:** the user must act or acknowledge → use `Modal`. Persistent status → use `Banner`.
| Variant | Use when |
|---|---|
| success | Action completed as requested |
| error | Action failed; message says what to do next |
(No "info" toast: unprompted info is a Banner. Variant cut 2026-05.)
| State | Notes |
|---|---|
| Entering / visible / exiting | Durations + curves: see `design-taste` motion law |
| Focus (on action link) | Visible ring, token `focus.ring`; toast pauses auto-dismiss while focused |
| Prop | Type | Default | Description |
|---|---|---|---|
| variant | 'success' \| 'error' | — (required) | Semantic variant |
| duration | number (ms) | 5000 | Auto-dismiss; error variant ignores it and persists |
**Accessibility:** role="status" (success) / role="alert" (error); dismissible via Esc;
announced once, not on re-render. **Content:** ≤ 90 chars, sentence case, verb-first
("Booking saved"), error follows the system error pattern (what happened + fix).
**Tokens:** `surface.raised`, `space.4`, `radius.md` — names only.
| ✅ Do | ❌ Don't |
|---|---|
| One toast at a time; queue the rest | Stack three toasts and cover the nav |
| Persist errors until dismissed | Auto-dismiss an error the user needed to read |
Anti-patterns
| Red flag | Why it fails | Instead |
|---|---|---|
| Happy-path-only docs (no focus/error/loading rows) | The gaps get invented differently by every consumer | States table is mandatory; focus row is an a11y gate |
| Polishing 3 perfect docs while 30 components have none | Undocumented components are one-offs; drift wins | Shallow-doc everything, mark draft, deepen by usage |
| Style guide labeled "design system" | Static rules without components + process can't be adopted | Name it honestly; the gap is the system, not the docs |
| Governance doc with no enforcer | Criteria nobody applies are decoration | Name one person; route one-offs early |
| Slow/ambiguous contribution reviews | The #1 driver of teams detaching | SLA in days; reject fast, naming the failed criterion |
| Raw hex/px values in docs | Duplicates and drifts from the token source | Token names only; values live in build-token-system output |
| Variant sprawl ("secondary-alt-2") | No distinct use-when = no reason to exist | Cut the variant; record the cut in the changelog |
| Silent deletion of a used component | Breaks consumers, burns trust | Deprecate: replacement + removal date, then remove |
| Docs that restate the props file | Zero judgment added; nobody reads them | Lead with use-when/don't-use-when and the sibling pointer |
Output formats
Maturity audit → the 6-row scorecard (dimension, score 0–3, evidence) + one highest-leverage-gap sentence + one sized first move. Never a five-item improvement plan.
Component doc → the 10-section standard from Step 3, in that order.
Governance one-pager → contribution model + the yes/no criteria checklist + review SLA + enforcer name + versioning/deprecation rules. One page; if it's longer, it won't be followed.
Sources
- Design Systems 101 — https://www.nngroup.com/articles/design-systems-101/
- Design-System Maturity (6-dimension framework) — https://www.nngroup.com/articles/design-system-maturity/
- Your Design System Needs an Enforcer — https://www.nngroup.com/articles/design-system-enforcer/
- Design Systems vs. Style Guides — https://www.nngroup.com/articles/design-systems-vs-style-guides/
- Content Standards in Design Systems — https://www.nngroup.com/articles/content-design-systems/
Boundaries
- build-token-system produces canonical token values and architecture, once. This skill documents and governs the system that consumes them — token names appear here, values never do. (
apply-personal-brandlikewise consumes tokens as themes and never re-encodes values.) - design-ui-states designs empty/loading/error/partial states; this skill records the decisions in the states table.
- write-ux-microcopy writes the strings; this skill owns the content standards the strings must satisfy.
- craft-critique owns judgment and verdict language when reviewing a contribution's quality; this skill's acceptance gate is strictly mechanical yes/no.
- design-taste is loaded first whenever a new pattern is proposed for the system — variants and motion decisions defer to it.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.