From planning-plugin
Use when a new project needs a domain-specific design system (B2B Admin or Hotel/Travel) before specification and UI design work.
How this skill is triggered — by the user, by Claude, or both
Slash command
/planning-plugin:design-systemThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are executing the **design-system** skill for the Planning Plugin. Generate a comprehensive, domain-specific design system by reading curated CSV databases, applying domain filtering and industry reasoning rules, and writing Markdown output files.
You are executing the design-system skill for the Planning Plugin. Generate a comprehensive, domain-specific design system by reading curated CSV databases, applying domain filtering and industry reasoning rules, and writing Markdown output files.
.claude/planning-plugin.json⚠️ Planning plugin is not initialized. Run
/planning-plugin:initfirst to set up project configuration.
Parse the skill arguments. Expected format: [--domain=b2b-admin|hotel-travel] [--query="context"]
--domain (required): Must be b2b-admin or hotel-travel--query (optional): Additional context for prioritizing results (e.g., "hotel booking CRM")If --domain is not provided, ask the user to choose:
Which domain is this project for?
- b2b-admin — Admin panels, dashboards, data management, internal tools
- hotel-travel — Hotel booking, travel platforms, hospitality management
Gather project context automatically:
package.json → use name field. If not found, read CLAUDE.md or ask the user.docs/specs/ for any feature specs. If found, note them for context.design-system/ already exists.
A design system already exists at
design-system/. Do you want to regenerate it? This will overwrite existing files.
Read all 7 CSV files from ${CLAUDE_PLUGIN_ROOT}/data/design-system/ using the Read tool:
colors.csv — columns: id,domain,palette_name,role,hex,hsl,tailwind_name,contrast_ratio,description,tagstypography.csv — columns: id,domain,scale_name,element,font_family,font_size,line_height,font_weight,letter_spacing,tailwind_class,description,tagsstyles.csv — columns: id,domain,category,name,description,css_values,use_case,tagscomponents.csv — columns: id,domain,category,component_name,variant,use_case,props_config,companion_components,description,tagspatterns.csv — columns: id,domain,category,name,description,page_layout,components_used,user_flow,best_practices,tagsindustry-rules.csv — columns: id,domain,category,rule,rationale,priority,applies_to,tagsicons.csv — columns: id,domain,context,concept,lucide_name,alternatives,description,tagsRead all 7 files in parallel for efficiency.
For each CSV (except industry-rules.csv):
domain matches the selected domain OR domain is general--query was provided, prioritize rows whose tags, description, or name fields are more relevant to the queryFor industry-rules.csv:
domain matches OR domain is generalpriority = critical or recommendedApply reasoning rules to each page's data:
priority=critical): If a rule's applies_to field contains the CSV category name (e.g., colors, components) or is all, note matching items with [CRITICAL] {rule} reasoning notepriority=recommended): Note matching items with [RECOMMENDED] {rule} reasoning notepriority=optional): Note matching items with [OPTIONAL] {rule} reasoning noterule+tags fields and the row's text contentCreate 7 files using Write. The output directory is design-system/ at the project root (not inside the plugin).
Use the domain label mapping:
b2b-admin → B2B Admin / Dashboardhotel-travel → Hotel / TravelUse an ISO-8601 UTC timestamp for generation time.
design-system/MASTER.md# {project_name} — Design System
> **Domain**: {domain_label}
> **Generated**: {timestamp}
> **Generator**: planning-plugin:design-system
## Design Principles
### Critical
- **{rule}**
- _{rationale}_
### Recommended
- **{rule}**
- _{rationale}_
## Pages
| Page | Description |
|------|-------------|
| [Colors](pages/colors.md) | Color system with palettes, roles, and accessibility info |
| [Typography](pages/typography.md) | Type scale, font families, and text styles |
| [Spacing & Layout](pages/spacing-layout.md) | Spacing system, grid layouts, and page patterns |
| [Components](pages/components.md) | Component library recommendations with props and variants |
| [Patterns](pages/patterns.md) | UX patterns, page templates, and user flows |
| [Icons](pages/icons.md) | Icon guidelines with Lucide icon mappings |
## Integration Guide
This design system is intended to be used with:
- **`/planning-plugin:design`** — The `dsl-generator` agent reads `pages/components.md`, `pages/icons.md`, `pages/patterns.md`, and `MASTER.md` to inform component selection, icon mapping, layout validation, and design constraints. The `prototype-generator` agent reads `pages/colors.md`, `pages/typography.md`, and `pages/spacing-layout.md` to configure Tailwind theme.
### Tailwind Theme Config
Apply the color tokens from `pages/colors.md` to your `tailwind.config.js`:
\```js
// See pages/colors.md for full palette
module.exports = {
theme: {
extend: {
colors: {
// Import from design system color tokens
}
}
}
}
\```
---
_Generated by planning-plugin:design-system at {timestamp}_
design-system/pages/colors.md# Color System — {domain_label}
> Part of [{project_name} Design System](../MASTER.md)
## Color Palette
| Role | Name | Hex | HSL | Tailwind | Contrast | Description |
|------|------|-----|-----|----------|----------|-------------|
| {role} | {palette_name} | `{hex}` | `{hsl}` | `{tailwind_name}` | {contrast_ratio} | {description} |
## CSS Custom Properties
\```css
:root {
--color-{role}: {hex};
}
\```
## Tailwind Mapping
\```js
colors: {
'{role}': '{hex}', // {tailwind_name}
}
\```
## Reasoning Notes
> These notes explain why specific items were selected or prioritized.
- {deduplicated reasoning notes}
---
_Generated at {timestamp}_
design-system/pages/typography.md# Typography System — {domain_label}
> Part of [{project_name} Design System](../MASTER.md)
## Type Scale
| Element | Font Family | Size | Line Height | Weight | Letter Spacing | Tailwind Class |
|---------|-------------|------|-------------|--------|----------------|----------------|
| {element} | {font_family} | {font_size} | {line_height} | {font_weight} | {letter_spacing} | `{tailwind_class}` |
## Font Families
- `{unique_font_family}`
## CSS Custom Properties
\```css
:root {
--font-size-{element}: {font_size};
--line-height-{element}: {line_height};
--font-weight-{element}: {font_weight};
}
\```
## Reasoning Notes
> These notes explain why specific items were selected or prioritized.
- {deduplicated reasoning notes}
---
_Generated at {timestamp}_
design-system/pages/spacing-layout.md# Spacing & Layout — {domain_label}
> Part of [{project_name} Design System](../MASTER.md)
## Spacing Scale
| Token | Value | Usage |
|-------|-------|-------|
| `space-1` | 4px | Tight inline spacing |
| `space-2` | 8px | Default inline gap |
| `space-3` | 12px | Compact section gap |
| `space-4` | 16px | Default section gap |
| `space-5` | 20px | Comfortable padding |
| `space-6` | 24px | Card/panel padding |
| `space-8` | 32px | Section separation |
| `space-10` | 40px | Major section spacing |
| `space-12` | 48px | Page-level spacing |
## Layout Patterns
### {name}
**Category**: {category} | **Domain**: {domain}
{description}
\```css
{css_values}
\```
**Use case**: {use_case}
## Reasoning Notes
> These notes explain why specific items were selected or prioritized.
- {deduplicated reasoning notes}
---
_Generated at {timestamp}_
design-system/pages/components.md# Component Library — {domain_label}
> Part of [{project_name} Design System](../MASTER.md)
## Component Inventory
| Component | Variant | Category | Use Case | Companions |
|-----------|---------|----------|----------|------------|
| **{component_name}** | {variant} | {category} | {use_case} | {companion_components} |
## Component Details
### {component_name} ({variant})
{description}
**Category**: {category}
**Use case**: {use_case}
**Props config**:
\```json
{props_config}
\```
**Companion components**: {companion_components}
## Reasoning Notes
> These notes explain why specific items were selected or prioritized.
- {deduplicated reasoning notes}
---
_Generated at {timestamp}_
design-system/pages/patterns.md# UX Patterns — {domain_label}
> Part of [{project_name} Design System](../MASTER.md)
## Pattern Index
| Pattern | Category | Components Used |
|---------|----------|-----------------|
| **{name}** | {category} | {components_used} |
## Pattern Details
### {name}
**Category**: {category} | **Domain**: {domain}
{description}
**Page layout**:
> {page_layout}
**Components used**: {components_used}
**User flow**:
> {user_flow}
**Best practices**:
> {best_practices}
## Reasoning Notes
> These notes explain why specific items were selected or prioritized.
- {deduplicated reasoning notes}
---
_Generated at {timestamp}_
design-system/pages/icons.md# Icon Guidelines — {domain_label}
> Part of [{project_name} Design System](../MASTER.md)
## Icon Library: Lucide
This design system uses [Lucide](https://lucide.dev) icons via `lucide-react`.
\```bash
npm install lucide-react
\```
## Icon Mapping
| Context | Concept | Lucide Icon | Alternatives | Description |
|---------|---------|-------------|-------------|-------------|
| {context} | {concept} | `{lucide_name}` | {alternatives} | {description} |
## Usage Guidelines
- **Size**: Use `h-4 w-4` for inline icons, `h-5 w-5` for buttons, `h-6 w-6` for navigation
- **Color**: Icons inherit text color by default; use `text-muted-foreground` for secondary icons
- **Accessibility**: Add `aria-label` on icon-only buttons; use `aria-hidden="true"` on decorative icons
- **Consistency**: Use the primary Lucide name from the mapping above; fall back to alternatives only when context demands it
## Import Pattern
\```tsx
import { IconName } from "lucide-react";
// Inline usage
<IconName className="h-4 w-4" />
// Button with icon
<Button size="icon" aria-label="Description">
<IconName className="h-4 w-4" />
</Button>
\```
## Reasoning Notes
> These notes explain why specific items were selected or prioritized.
- {deduplicated reasoning notes}
---
_Generated at {timestamp}_
Present a summary to the user:
✅ Design System Generated
Project: {project_name} Domain: {domain_label} Output:
design-system/
Page Items Colors {count} tokens Typography {count} scales Spacing & Layout {count} patterns Components {count} recommendations UX Patterns {count} patterns Icons {count} mappings Would you like to customize any section?
If the user wants to customize, read the specific page file and offer to adjust:
If this skill was invoked from within a feature context (i.e., a feature progress file exists at docs/specs/{feature}/.progress/{feature}.json):
designSystem field:
{
"designSystem": {
"status": "generated",
"domain": "{domain}",
"outputDir": "design-system",
"generatedAt": "{ISO-8601 timestamp}"
}
}
Present next steps to the user:
Next Steps
- Review: Browse the generated pages in
design-system/and customize as needed- Spec → Design: Run
/planning-plugin:design {feature}— the DSL generator will referencedesign-system/pages/components.mdfor component selectionThe design system files are plain Markdown — feel free to edit them directly.
${CLAUDE_PLUGIN_ROOT} to reference plugin-relative paths for CSV data filesdesign-system/ directory is at the project root (not inside the plugin)b2b-admin and hotel-travel are currently supportednpx claudepluginhub ohmyhotelco/hare-cc-plugins --plugin planning-pluginSenior-level UI/UX design expert for building data-driven, premium production interfaces. Use when you need to: 1. Design complex applications (dashboards, SaaS, AI tools) from scratch 2. Generate comprehensive design systems (tokens, palettes, typography) 3. Audit existing UI for quality, accessibility, and "craft" 4. Search for proven real-world design patterns and implementation details Trigger: "design a...", "audit this...", "create a design system", "find icons", "fintech dashboard", "landing page"
Designs UI/UX systems with style guides, color palettes, typography, and component specs for new interfaces. Asks about product type, tech stack, and deliverables before producing design tokens, layouts, or style guides.
Translates I-Lang or plain English design briefs into DESIGN.md with CSS tokens for palette, accent, typography, display font, layout, mood, density, constraints. Optional HTML preview.