Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Design systems leadership across component libraries, design tokens, and design-dev collaboration. Use when architecting a token system, building a component library, defining governance, or generating cross-platform tokens.
.claude/skills/borghei-design-system-lead/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 213% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 304% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 187% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 157% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 161% | 0% |
The agent operates as a senior design system lead, delivering scalable component libraries, token architectures, governance processes, and adoption strategies for cross-functional product teams.
Before generating the design system, confirm these inputs. If any is unknown or vague, ASK — do not assume:
Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.
| Level | Characteristics | Focus | |-------|-----------------|-------| | 1: Emerging | Ad-hoc styles, no standards | Establish foundations | | 2: Defined | Documented guidelines | Component library | | 3: Managed | Shared component library | Adoption, governance | | 4: Optimized | Automated, measured | Continuous improvement |
Three-tier token system (primitive -> semantic -> component):
json{ "color": { "primitive": { "blue": { "50": {"value": "#eff6ff"}, "500": {"value": "#3b82f6"}, "600": {"value": "#2563eb"}, "900": {"value": "#1e3a8a"} } }, "semantic": { "primary": {"value": "{color.primitive.blue.600}"}, "primary-hover": {"value": "{color.primitive.blue.700}"}, "background": {"value": "{color.primitive.gray.50}"}, "text": {"value": "{color.primitive.gray.900}"} }, "component": { "button-primary-bg": {"value": "{color.semantic.primary}"}, "button-primary-text": {"value": "#ffffff"} } }, "spacing": { "primitive": {"1": {"value": "4px"}, "2": {"value": "8px"}, "4": {"value": "16px"}, "8": {"value": "32px"}}, "semantic": {"component-padding": {"value": "{spacing.primitive.4}"}, "section-gap": {"value": "{spacing.primitive.8}"}} }, "typography": { "fontFamily": {"sans": {"value": "Inter, system-ui, sans-serif"}, "mono": {"value": "JetBrains Mono, monospace"}}, "fontSize": {"sm": {"value": "14px"}, "base": {"value": "16px"}, "lg": {"value": "18px"}, "xl": {"value": "20px"}} } }
javascript// style-dictionary.config.js module.exports = { source: ['tokens/**/*.json'], platforms: { css: { transformGroup: 'css', buildPath: 'dist/css/', files: [{ destination: 'variables.css', format: 'css/variables' }] }, scss: { transformGroup: 'scss', buildPath: 'dist/scss/', files: [{ destination: '_variables.scss', format: 'scss/variables' }] }, ios: { transformGroup: 'ios', buildPath: 'dist/ios/', files: [{ destination: 'StyleDictionaryColor.swift', format: 'ios-swift/class.swift' }] }, android: { transformGroup: 'android', buildPath: 'dist/android/', files: [{ destination: 'colors.xml', format: 'android/colors' }] } } };
design-system/
+-- foundations/ (colors, typography, spacing, elevation, motion, grid)
+-- components/
| +-- primitives/ (Button, Input, Icon)
| +-- composites/ (Card, Modal, Dropdown)
| +-- patterns/ (Forms, Navigation, Tables)
+-- layouts/ (page templates, content layouts)
+-- documentation/ (getting-started, design guidelines, code guidelines)
+-- assets/ (icons, illustrations, logos)markdown## Variants - Primary: main action - Secondary: supporting action - Tertiary: low-emphasis action - Destructive: dangerous/irreversible action ## Sizes - Small: 32px height, 8px/12px padding - Medium: 40px height (default), 10px/16px padding - Large: 48px height, 12px/24px padding ## States Default -> Hover -> Active -> Focus -> Disabled -> Loading ## Props | Prop | Type | Default | Description | |-----------|-------------|-----------|------------------| | variant | string | 'primary' | Visual style | | size | string | 'medium' | Button size | | disabled | boolean | false | Disabled state | | loading | boolean | false | Loading state | | leftIcon | ReactNode | - | Leading icon | | onClick | function | - | Click handler | ## Accessibility - Minimum touch target: 44x44px - Visible focus ring on keyboard navigation - aria-label required for icon-only buttons - aria-busy="true" when loading
typescriptimport { cva, type VariantProps } from 'class-variance-authority'; const buttonVariants = cva( 'inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50', { variants: { variant: { primary: 'bg-primary text-primary-foreground hover:bg-primary/90', secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80', destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90', }, size: { sm: 'h-8 px-3 text-sm', md: 'h-10 px-4 text-sm', lg: 'h-12 px-6 text-base', }, }, defaultVariants: { variant: 'primary', size: 'md' }, } );
1. REQUEST - Create RFC describing problem and proposed component/change
2. REVIEW - Design review + engineering review + accessibility review
3. BUILD - Figma component + code implementation + unit tests + visual regression
4. DOCUMENT - API docs + usage guidelines + Storybook stories
5. RELEASE - SemVer bump + changelog + announcement| Change Type | Version Bump | Examples | |-------------|-------------|---------| | Breaking | MAJOR | Component API change, token rename | | New feature | MINOR | New component, new variant, new token | | Bug fix | PATCH | Style fix, docs update, perf improvement |
Design System Health
Adoption: 82% (12/15 products)
Component Usage: 78% (45 components)
Token Compliance: 95%
Overrides: 23 (down from 38)
Efficiency
Avg time to build new feature: 3.2 days (was 5.1)
Custom components created this quarter: 4 (was 12)bash# Token generator python scripts/token_gen.py --source tokens.json --output dist/ # Component scaffolder python scripts/component_scaffold.py --name DatePicker --category composite # Adoption analyzer python scripts/adoption_analyzer.py --repos repos.yaml # Visual regression test python scripts/visual_regression.py --baseline main --compare feature/new-button
references/token_architecture.md - Token system designreferences/component_patterns.md - Component best practicesreferences/governance.md - Contribution guidelinesreferences/figma_setup.md - Figma library managementGenerates a three-tier design token system (primitive, semantic, component) from a brand color. Supports CSS, SCSS, and JSON output. Includes WCAG contrast ratio checking.
| Flag | Type | Default | Description | |------|------|---------|-------------| | --color, -c | string | #0066CC | Brand color in hex | | --format, -f | choice | summary | Output format: json, css, scss, summary | | --tiers, -t | choice | all | Token tiers: all, primitive, semantic, component | | --output, -o | string | (stdout) | Output directory for generated files | | --json | flag | False | Shortcut for --format json |
bashpython scripts/token_gen.py --color "#0066CC" python scripts/token_gen.py --color "#0066CC" --format css --output dist/ python scripts/token_gen.py --color "#8B4513" --tiers primitive --json
Generates component documentation scaffolds with props tables, variants, states, accessibility requirements, anatomy, usage guidelines, and code examples.
| Flag | Type | Default | Description | |------|------|---------|-------------| | --name, -n | string | (required) | Component name in PascalCase | | --category, -c | choice | (required) | Category: primitive, composite, pattern | | --variants, -v | string | (category default) | Comma-separated variant names | | --sizes, -s | string | sm,md,lg | Comma-separated size names | | --json | flag | False | Output as JSON |
bashpython scripts/component_scaffold.py --name Button --category primitive python scripts/component_scaffold.py --name DataTable --category pattern --variants "default,compact,striped" python scripts/component_scaffold.py --name Modal --category composite --json
Analyzes design system adoption across products by evaluating component coverage, token compliance, custom overrides, and accessibility scores. Produces a health dashboard with per-product and portfolio-level analysis.
| Flag | Type | Default | Description | |------|------|---------|-------------| | input | positional | (required) | CSV file with adoption data or "sample" | | --threshold, -t | int | 75 | Health score threshold for flagging | | --json | flag | False | Output as JSON |
CSV columns: product, total_components, ds_components, total_tokens, ds_tokens, custom_overrides, a11y_score, last_audit
bashpython scripts/adoption_analyzer.py sample python scripts/adoption_analyzer.py adoption_data.csv python scripts/adoption_analyzer.py adoption_data.csv --threshold 80 --json
| Problem | Cause | Solution | |---------|-------|----------| | Token overrides in production | Teams bypassing design system | Run adoption_analyzer monthly; add lint rules for hardcoded values | | Inconsistent component behavior across products | Version drift | Enforce SemVer; automate DS dependency updates in CI | | Low adoption in older products | Migration cost perceived as too high | Prioritize high-traffic pages; create migration guides per product | | Token naming conflicts | No naming convention enforced | Adopt CTI (Category-Type-Item) naming; document in governance | | Component API breaking changes | Insufficient versioning discipline | Use codemods for migration; deprecation period of 2 minor versions | | Designers and developers out of sync | Figma/code token drift | Use Tokens Studio plugin; sync on every release | | Contribution bottleneck | RFC review queue backed up | Set SLA for reviews (48h); rotate reviewers weekly |
| Criterion | Target | How to Measure | |-----------|--------|----------------| | Component coverage | >80% across all products | adoption_analyzer component coverage metric | | Token compliance | >90% (no hardcoded values) | adoption_analyzer token compliance metric | | Custom overrides | Trending downward quarter-over-quarter | Track total overrides in adoption report | | Time to build new feature | 30%+ reduction vs pre-DS baseline | Compare sprint velocity before/after DS adoption | | Accessibility score | >85% across all products | adoption_analyzer a11y score | | Contribution rate | 2+ external contributions per quarter | Track merged RFCs from non-core-team members | | Design-dev handoff time | <1 day for standard components | Measure time from design approval to code PR |
In scope:
Out of scope:
| Tool / Platform | Integration Method | Use Case | |-----------------|-------------------|----------| | Figma / Tokens Studio | Import token_gen JSON output | Sync design tokens between design and code | | Style Dictionary | Use token_gen JSON as source | Build multi-platform tokens (iOS, Android, web) | | Storybook | component_scaffold output as stories template | Auto-generate component documentation | | Chromatic / Percy | Pair with component_scaffold test checklist | Visual regression testing pipeline | | CI/CD | adoption_analyzer --json in pipeline | Automated adoption health checks on PRs | | Tailwind / CSS-in-JS | token_gen CSS/JSON export | Theme configuration from design tokens |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 25,751 | 27,620 | +7% | 1 | 1 | 0% | 6,198 | 9,939 | +60% | 0 | 0 | — |
case-02 | fail→fail | 18,660 | 22,032 | +18% | 1 | 1 | 0% | 3,121 | 7,825 | +151% | 0 | 0 | — |
case-03 | pass→pass | 12,539 | 11,742 | -6% | 1 | 1 | 0% | 2,012 | 5,909 | +194% | 0 | 0 | — |
case-04 | fail→pass | 12,731 | 22,517 | +77% | 1 | 1 | 0% | 2,692 | 8,424 | +213% | 0 | 0 | — |
case-05 | fail→pass | 8,835 | 12,546 | +42% | 1 | 1 | 0% | 1,479 | 5,980 | +304% | 0 | 0 | — |
case-06 | fail→fail | 21,426 | 13,038 | -39% | 1 | 1 | 0% | 4,498 | 5,739 | +28% | 0 | 0 | — |
case-07 | fail→fail | 13,853 | 24,755 | +79% | 1 | 1 | 0% | 2,453 | 7,438 | +203% | 0 | 0 | — |
case-08 | fail→fail | 17,411 | 55,118 | +217% | 1 | 1 | 0% | 3,183 | 8,983 | +182% | 0 | 0 | — |
case-09 | fail→fail | 12,486 | 17,975 | +44% | 1 | 1 | 0% | 2,510 | 7,012 | +179% | 0 | 0 | — |
case-10 | fail→fail | 18,230 | 16,316 | -10% | 1 | 1 | 0% | 2,054 | 6,473 | +215% | 0 | 0 | — |
case-11 | fail→fail | 19,575 | 8,674 | -56% | 1 | 1 | 0% | 3,866 | 4,353 | +13% | 0 | 0 | — |
case-12 | pass→pass | 5,784 | 6,404 | +11% | 1 | 1 | 0% | 932 | 4,733 | +408% | 0 | 0 | — |
case-13 | pass→pass | 3,731 | 5,249 | +41% | 1 | 1 | 0% | 644 | 4,550 | +607% | 0 | 0 | — |
case-14 | pass→pass | 4,146 | 4,431 | +7% | 1 | 1 | 0% | 648 | 4,387 | +577% | 0 | 0 | — |
case-15 | pass→pass | 17,638 | 16,967 | -4% | 1 | 1 | 0% | 2,655 | 6,170 | +132% | 0 | 0 | — |
case-16 | pass→pass | 16,974 | 14,096 | -17% | 1 | 1 | 0% | 2,614 | 6,139 | +135% | 0 | 0 | — |
case-17 | fail→pass | 12,043 | 7,071 | -41% | 1 | 1 | 0% | 1,664 | 4,779 | +187% | 0 | 0 | — |
case-18 | fail→pass | 12,183 | 6,732 | -45% | 1 | 1 | 0% | 1,835 | 4,712 | +157% | 0 | 0 | — |
case-19 | fail→pass | 16,159 | 16,009 | -1% | 1 | 1 | 0% | 2,358 | 6,145 | +161% | 0 | 0 | — |
case-20 | fail→fail | 7,209 | 12,514 | +74% | 1 | 1 | 0% | 1,260 | 6,022 | +378% | 0 | 0 | — |
case-21 | fail→fail | 15,615 | 21,283 | +36% | 1 | 1 | 0% | 2,373 | 8,359 | +252% | 0 | 0 | — |
case-22 | fail→fail | 20,432 | 24,489 | +20% | 1 | 1 | 0% | 4,099 | 8,824 | +115% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +23 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.