Design systems
Skill nimadorostkar/Claude-Skills-collection/skills/frontend/design-systems
Use when building or maintaining a component library and design tokens. Covers token architecture, component API design, variants and states, documentation, and governing adoption across a codebase.From its SKILL.md
npx -y skills add nimadorostkar/Claude-Skills-collection --skill design-systemsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 26 days oldThe repository was created 26 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 23 stars23 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
5.1 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Design Systems
Purpose
Build a component library that teams actually adopt: tokens instead of hardcoded values, components with a small honest API, and documentation that answers "which one do I use" without a meeting.
When to Use
- Starting a design system or component library.
- Auditing a codebase for inconsistency (fourteen shades of grey, six button implementations).
- Designing the API of a shared component.
- Deciding whether a new pattern belongs in the system.
Capabilities
- Token architecture: primitive, semantic, and component layers.
- Component API design: variants, sizes, states, composition.
- Theming, including dark mode and per-brand overrides.
- Documentation with live examples and usage guidance.
- Adoption tracking and migration from ad-hoc components.
Inputs
- The existing visual language, however inconsistent.
- The consuming applications and their frameworks.
- The team's appetite for governance — a system nobody enforces will not hold.
Outputs
- A token set with three layers and no hardcoded values in components.
- Components with documented variants, states, and accessibility behavior.
- A contribution and deprecation process.
Workflow
- Audit first — Extract every colour, spacing value, font size, and radius currently in use. The count is always shocking, and it is the argument for the system.
- Build tokens in layers — Primitives (
blue-600) hold raw values. Semantic tokens (color-action-primary) reference primitives and carry meaning. Component tokens (button-bg-primary) reference semantic tokens. Only the primitive layer contains literal values. - Design the component API around variants —
variant,size,state. Not fifteen boolean props whose combinations are mostly invalid. - Cover the states — Default, hover, active, focus-visible, disabled, loading, error. A component missing focus-visible is inaccessible, not merely incomplete.
- Document with live examples — Show the correct usage and the incorrect one. "Do / Don't" prevents more misuse than prose.
- Govern adoption — A lint rule that forbids hardcoded colours is worth more than a style guide nobody reads.
Best Practices
- Semantic tokens are what let you re-theme. A component referencing
blue-600directly cannot be themed; one referencingcolor-action-primarycan. - Boolean props multiply:
isPrimary,isLarge,isDangerallowsisPrimary + isDanger, which is meaningless. Avariantunion makes invalid combinations unrepresentable. - Every interactive component needs a visible focus indicator. Removing the outline without replacing it is the most common accessibility failure in design systems.
- Provide an escape hatch (
className,style) but do not design around it. If every consumer overrides the same thing, the component's API is wrong. - Version and deprecate properly. Removing a prop without a deprecation cycle breaks consumers you do not know about.
- A component used by one team is not a design-system component. Promote on the second consumer, not on speculation.
Examples
Three-layer token architecture:
:root {
/* 1. Primitives — raw values, never used directly by components. */
--blue-600: #2563eb;
--blue-700: #1d4ed8;
--grey-100: #f3f4f6;
--grey-900: #111827;
/* 2. Semantic — meaning, referencing primitives. This layer is what themes swap. */
--color-action-primary: var(--blue-600);
--color-action-primary-hover: var(--blue-700);
--color-surface: #ffffff;
--color-text: var(--grey-900);
/* 3. Component — scoped to one component, referencing semantic tokens. */
--button-bg-primary: var(--color-action-primary);
--button-bg-primary-hover: var(--color-action-primary-hover);
}
[data-theme="dark"] {
/* Only the semantic layer is redefined. Components need no changes. */
--color-action-primary: #60a5fa;
--color-surface: var(--grey-900);
--color-text: var(--grey-100);
}
Component API: variants, not boolean soup:
type ButtonProps = {
variant?: "primary" | "secondary" | "ghost" | "danger";
size?: "sm" | "md" | "lg";
loading?: boolean;
disabled?: boolean;
} & ButtonHTMLAttributes<HTMLButtonElement>;
Four variants and three sizes yield twelve valid combinations. Four booleans would yield sixteen, of which most are nonsense.
Notes
- Enforce token usage with a lint rule (
stylelint-declaration-strict-valueor an ESLint rule for inline styles). Without enforcement, hardcoded values return within a month. - A design system's real adoption metric is the number of hardcoded values remaining in consuming applications, trending toward zero. Track it.
- Do not build a component until it has two real consumers with the same requirements. Building for a hypothetical second consumer produces an API that fits neither.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most architecture codebase skills give in ~1.1k tokens
Counted across 811 of the 1,134 authors here whose files we hold, read 2026-08-07
- Ask the user which candidate to explorein 45 of 811, across 15 files
- Apply the deletion test to suspected shallow modulesin 43 of 811, across 15 files
- Read any relevant architecture decision records firstin 31 of 811, across 8 files
- Use exact glossary terms in every suggestionin 30 of 811, across 10 files
- Accept dependencies instead of creating themin 24 of 811, across 5 files
- Include before and after visualisations for each candidatein 24 of 811, across 5 files
- Read the domain glossary before exploringin 24 of 811, across 6 files
- Return results instead of producing side effectsin 23 of 811, across 4 files
- Explore the codebase for shallow modules and frictionin 23 of 811, across 3 files
- Introduce seams only where things varyin 22 of 811, across 3 files
- Reduce the number of methodsin 21 of 811, across 2 files
- Design deep modules with small interfacesin 21 of 811, across 3 files
Said here and by no other author read
- audit all existing visual values first
- build tokens in three layers
- design component APIs around variant unions
- cover default hover active focus disabled loading error states
- document with live do and do not examples
- enforce token usage with lint rules
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.