Loading...
Loading...
Create a complete, actionable design system for any project (website, app, product) grounded in physical/sensory anchoring rather than design trends. Delivers CSS tokens, typography scale, component patterns, accessibility checklist, and absolute rules as a single developer-ready markdown document. Use this skill whenever the user asks to create a design system, theme, color palette, visual identity, CSS tokens, theme variables, or propose an art direction. Also triggers on "style guide", "site colors", "choose fonts", "look and feel", "visual branding", "charte graphique", "identite visuelle", "direction artistique", "refonte visuelle", or any new project where design isn't yet defined — propose this skill proactively.
npx skill4agent add b3ngous/agents-skills design-system-creator--color-[semantic-name]: #hex;--font-display: 'Font Name', category;
--font-body: 'Font Name', category;clamp()--space-xs to --space-5xl--transition-fast: 0.2s ease; /* hover, focus */
--transition-medium: 0.4s ease; /* open/close */
--transition-slow: 0.6s ease; /* scroll reveal */mobile / tablet / desktop / wide:root# [Project Name] — Design System "[System Name]"
## Philosophy
[The anchoring in 3-4 sentences. Why these choices, where they come from.]
## Colors — Tokens
### Foundation
[Tokens --color-xxx: #hex; + 1 sentence explaining each color's role]
### [Accent family 1 — e.g., Copper]
[3 stops (default/hover/pressed) as tokens + unique functional role]
### [Accent family 2 if applicable — e.g., Zinc]
[3 stops as tokens + unique functional role]
### [Accent family 3 if applicable — e.g., Brass]
[3 stops as tokens + unique functional role — justify why a 3rd family is necessary]
### Semantics
[Error/success/warning/info tokens — may reuse existing families]
### Contrast Table
[Table validating EVERY text/background combination used on the site.
Format:
| Combination | Ratio | Status |
| --color-texte on --color-fond | X.X:1 | AA Pass / Fail |
Minimum: all pairs listed in accessibility-checklist.md section 1.]
### Application Rules
[How to use colors depending on dark/light background context.
Which colors change between the two contexts, which stay the same.]
## Typography
### Fonts
[Names + copy-pasteable @import line:
@import url('https://fonts.googleapis.com/css2?family=...');
Include fallback: --font-display: 'Name', category;]
### Typographic Scale
[Tokens with clamp() for each level:
display, h1, h2, h3, body, small, label
Each level with: font-size, line-height, font-weight, letter-spacing if applicable]
### Application Rules
[Which font for what (display = headings only, body = everything else).
Allowed weights (max 3). Italic: if yes, under what conditions.
Display NEVER goes to body. Body NEVER goes to headings.]
## Spacing
[Complete scale xs -> 5xl with values.
+ Usage summary:
- Micro (xs-sm): inside components
- Small (md): between elements within a block
- Medium (lg-xl): component padding
- Large (2xl-3xl): between sections
- Very large (4xl-5xl): structural breathing room]
## Components
### Buttons
[Complete CSS: primary, secondary, text link.
Each variant with :hover, :active, :focus-visible, :disabled.
Padding, typography, radius justified by the anchoring.]
### Cards
[Complete CSS: background, border, radius, padding, interactive states if applicable.
Variant on dark background AND on light background.]
### Navigation
[Complete CSS: desktop and mobile.
Scroll behavior (sticky, fixed, transparent -> opaque).
Mobile menu: structure, open animation, close on click.]
### Forms
[Complete CSS: field, label, placeholder, focus, error.
If the project has no forms, write "Not applicable" and justify.]
### Images
[Default treatment: radius, recommended aspect-ratio.
Overlay if text on top: gradient direction + opacity.
CSS filters: yes/no, justified by the anchoring.
Rule: photos of real content = never filtered.]
### Iconography
[Single chosen source (Lucide, Phosphor, Tabler, Heroicons...) + justification.
Single style: outline / filled / duotone.
Stroke width if outline.
Sizes on grid: --icon-sm (16px), --icon-md (20px), --icon-lg (24px), --icon-xl (32px).
Color by context: in a button = button color, standalone = muted text, interactive = action.]
## Animations
### Principles
[What gets animated and why. The three jobs: guide, confirm, create continuity.]
### Speed Tokens
[--transition-fast, --transition-medium, --transition-slow with duration + easing]
### Patterns
[Ready CSS for:
- Hover/focus (fast)
- Menu/modal open/close (medium)
- Scroll reveal (slow) — with JS IntersectionObserver
- Page load hero — staggered sequence
Each pattern justified by the anchoring: an artisan site does not move like a SaaS.]
## Responsive
### Breakpoints
[Exact values: mobile < 768px, tablet 768-1023px, desktop 1024-1439px, wide >= 1440px]
### Behavior per Breakpoint
[Summary table for each breakpoint: grid columns, section spacing, nav behavior, image sizing]
### Container
[--container-max, --container-padding (with clamp for mobile)]
## Accessibility
### Validated Contrasts
[Recap of the contrast table from the Colors section — or reference to it.
Confirmation that ALL pairs pass AA.]
### Focus
[CSS for global :focus-visible.
Variants if needed (dark background vs light background).]
### Reduced Motion
[CSS block @media (prefers-reduced-motion: reduce) — mandatory, copy-pasteable.]
### Touch Targets
[Reminder: min 44x44px on all clickable elements. List of at-risk elements in this specific project.]
## Complete CSS Tokens — Copy-Paste
[Single COMPLETE :root block. Everything above condensed into one copy-pasteable block.
Includes: colors, typography, spacing, radius, borders, shadows, transitions, layout, z-index, icons.
No superfluous comments — just tokens with a role comment per line.]
## Theme Switching (if applicable)
If the project requires both light and dark modes, structure tokens using `[data-theme]` attributes:
```css
:root, [data-theme="dark"] {
/* dark tokens (default) */
}
[data-theme="light"] {
/* light overrides */
}
@media (prefers-color-scheme: light) {
:root:not([data-theme]) {
/* auto-detect for users without explicit preference */
}
}
## Anti-Patterns — What This Skill NEVER Does
- **Start from a design trend** instead of the real subject. No "let's do brutalist" or "let's do glassmorphism" without the anchoring justifying it.
- **Propose colors without a functional role.** Every color has a job or it goes.
- **Use generic fonts** (Inter, Roboto, Arial) unless the project explicitly demands absolute neutrality.
- **Deliver a palette without usage rules.** Colors without rules are a Figma collecting dust.
- **Copy industry codes.** "Lawyer site = navy blue + gold" is a template, not design. The anchoring must be specific to the client, not their industry.
- **Mix temperatures without reason.** If the foundation is warm, cool accents must be justified (and vice versa).
- **Propose more than 3 accent families.** More colors = less coherence. Constraint is a tool.
## Creation Workflow
1. Collect inputs (ask questions if needed)
2. Propose the anchoring — validate it with the user before continuing
3. Propose 2-3 visual directions (moodboards via Visualizer if available) — the user picks one
4. Run through the 6 steps for the chosen direction
5. Deliver the complete markdown document
6. Iterate if the user wants adjustments
The moodboard in step 3 matters: show rather than describe. If a visualization tool is available (HTML widget, Visualizer, etc.), create a visual moodboard with the hero mockup, palette swatches, typography specimen, and guiding principles. The user must see before they validate.
If no visualization tool is available (no `visualize:show_widget` or similar), present the moodboard as:
- An HTML file written to disk that the user can open in their browser
- Or a structured comparison table in markdown showing: palette swatches (hex values), font names + specimen text, key rules, and a hero mockup description
## Specificity Test
Before delivering, run every design choice through this filter: can you replace the project name with a competitor's name and have the design system still work? If yes, the anchoring is too generic. Go back to Step 1.
## Reference Files
The `references/` folder contains support material. **Read the relevant file BEFORE the corresponding step**, not all at once at the start.
| File | When to read | Content |
|---|---|---|
| `references/anchoring-examples.md` | **Step 1** — before formulating the anchoring | 6 complete anchoring examples with thought process, red flags, and validation checklist |
| `references/font-pairings.md` | **Step 3** — before choosing typography | 20 pairs organized by universe (craft, architecture, gastronomy, tech, luxury, sport, wellness) with ready Google Fonts / Fontshare imports |
| `references/root-template.md` | **Step 4** — before setting tokens | Complete CSS `:root` skeleton with all categories (colors, typography, spacing, radius, shadows, transitions, layout, z-index) and completeness checklist |
| `references/moodboard-template.md` | **Step 3** — to create the visual moodboard | Ready HTML template for the Visualizer with variables to replace, showing palette + typography + hero + cards + rules in a single widget |
| `references/spacing-guide.md` | **Step 4** — after the root-template | When to use which spacing token. Mapping micro (xs-sm) -> structural (4xl-5xl) with concrete examples per context |
| `references/component-patterns.md` | **Step 5** — before deriving components | Complete CSS templates for buttons, cards, navigation, forms, images + iconography rules |
| `references/responsive-rules.md` | **Step 5** — in parallel with components | Behavior per breakpoint, grid patterns, calibrated clamp(), responsive navigation, touch targets |
| `references/motion-principles.md` | **Step 5** — after components | 5 motion patterns (hover, open, scroll reveal, page load, smooth scroll) with ready CSS. No tool prescribed. |
| `references/accessibility-checklist.md` | **All steps** — continuous verification | WCAG AA contrast, visible focus, touch targets, reduced motion, accessible typography, HTML semantics |