Enterprise UI Design Skill
Build polished, professional interfaces for enterprise software, SaaS dashboards, admin panels,
and data-heavy applications. Every pixel intentional. No generic AI aesthetics.
When to use this skill: Dashboards, admin interfaces, SaaS products, data tables, settings
pages, internal tools, analytics views, multi-panel layouts, form-heavy interfaces.
Integration with PWDEV-CODE
This skill integrates into the PWDEV-CODE workflow at multiple phases:
In SPEC.md (DESIGN phase — agent-architect)
When this skill is active, the architect MUST add to SPEC.md:
Section 1 — Persona: Include "skill-frontend-design" in Active Skills.
Section 5 — Quality Criteria: Add:
Section 7 — Prohibitions: Add:
- No native form elements in styled UI
- No multiple accent colors in one interface
- No generic AI aesthetics (purple gradients, oversized corners, excessive shadows)
- No asymmetric padding without clear reason
In PLAN.md (PLAN phase — agent-planner)
When this skill is active, tasks that involve UI MUST include in "Required Context":
- Skill: skills/skill-frontend-design/SKILL.md — read before implementing UI components
- Skill: skills/skill-frontend-design/TEMPLATES.md — reference patterns for common components
In REVIEW (REVIEW phase — agent-code-reviewer + agent-qa)
The code reviewer MUST check:
- Design direction was committed to (not generic defaults)
- Spacing follows 4px grid
- Depth strategy is consistent
- Color is used for meaning only
In VERIFY.md (VERIFY phase — agent-verifier)
Add to verification checklist:
## Skill: frontend-design
| Item | Status | Evidence |
|------|:------:|----------|
| Design direction chosen | ✅/❌ | [which direction] |
| 4px grid spacing | ✅/❌ | [spot check 3 components] |
| Consistent radius | ✅/❌ | [all use same system] |
| ONE depth strategy | ✅/❌ | [borders-only / shadows / surface] |
| Monospace for data | ✅/❌ | [numbers, IDs, timestamps] |
| No anti-patterns | ✅/❌ | [checked AVOID list] |
Workflow (follow this order)
Step 1: Analyze Context
Before writing ANY code, read the project's CLAUDE.md and SPEC.md to understand:
| Question |
Why it matters |
| What does this product do? |
A finance tool ≠ a creative tool ≠ a dev tool |
| Who are the users? |
Power users want density. Casual users want guidance |
| What's the emotional job? |
Trust? Efficiency? Delight? Focus? |
| What data is primary? |
Tables, charts, KPIs, forms — drives layout choice |
| What stack is defined? |
Read SPEC.md section 1 for framework and conventions |
Step 2: Commit to a Design Direction
Pick ONE personality. Don't default — choose with intent:
- Precision & Density — Tight spacing, monochrome, information-forward. Think: Linear, Raycast.
- Warmth & Approachability — Generous spacing, soft shadows, friendly. Think: Notion, Coda.
- Sophistication & Trust — Cool tones, layered depth, financial gravitas. Think: Stripe, Mercury.
- Boldness & Clarity — High contrast, dramatic negative space, confident type. Think: Vercel.
- Utility & Function — Muted palette, functional density, clear hierarchy. Think: GitHub.
- Data & Analysis — Chart-optimized, technical but accessible. Think: Grafana, Metabase.
Then lock in these choices:
| Decision |
Options |
| Color foundation |
Warm (creams) · Cool (slate/blue-gray) · Pure neutral · Tinted |
| Light or dark? |
Light = open, approachable · Dark = focused, premium, technical |
| Accent color |
ONE color. Blue=trust, Green=growth, Orange=energy, Violet=creativity |
| Depth strategy |
Borders-only · Single shadow · Layered shadows · Surface color shifts |
| Corner radius |
Sharp (2-6px) · Soft (8-12px) — pick a system, stay consistent |
| Typography |
System fonts · Geometric sans (Geist, Inter) · Humanist (SF Pro, Satoshi) · Mono-influenced |
| Layout |
Dense grid · Generous spacing · Sidebar nav · Top nav · Split panels |
Record these decisions in CONTEXT.md during the DESIGN phase.
Step 3: Build with Craft
Implement the interface following the design rules below. Every component must feel intentional.
Step 4: Self-Validate
Before delivering, run through the Validation Checklist at the bottom of this file.
Design Rules
MUST (non-negotiable)
- 4px grid for all spacing. Values: 4, 8, 12, 16, 24, 32px. No arbitrary numbers.
- Symmetrical padding. If top is 16px, sides and bottom are 16px. Exception:
padding: 12px 16px when horizontal needs room.
- Consistent border-radius. Pick sharp (2-6px) or soft (8-12px). Never mix systems. Never 16px+ on small elements.
- ONE depth strategy. Borders-only OR single shadows OR layered shadows. Don't mix across the same interface.
- Monospace for data. Numbers, IDs, codes, timestamps get
font-family: monospace with font-variant-numeric: tabular-nums.
- Four-level contrast hierarchy. Foreground (primary) → Secondary → Muted → Faint. Use all four consistently:
--text-primary: #0f172a; /* headings, key data */
--text-secondary: #334155; /* body text */
--text-muted: #64748b; /* labels, secondary info */
--text-faint: #94a3b8; /* placeholders, disabled */
- Color = meaning only. Gray builds structure. Color only for: status, action, error, success. No decorative color.
- Navigation context. Never render a floating component — include sidebar/topnav, breadcrumbs/page title, and user context.
- No native form elements in styled UI. Build custom selects, date pickers, checkboxes. Native elements break visual consistency.
- Custom select triggers use
display: inline-flex + white-space: nowrap to keep text and chevron on same row.
SHOULD (strong recommendations)
- Typography scale: 11, 12, 13, 14 (base), 16, 18, 24, 32px. Headlines at 600 weight with
-0.02em letter-spacing.
- Icons from Lucide (
lucide-react or lucide-vue-next). Icons clarify, not decorate — if removing one loses no meaning, remove it.
- Animation: 150ms micro-interactions, 200-250ms transitions. Easing:
cubic-bezier(0.25, 1, 0.5, 1). No bounce/spring.
- Card layout variety. A metric card ≠ a plan card ≠ a settings card. Vary internal structure, but keep surface treatment consistent.
- Sidebar same background as content. Use a subtle border for separation, not different background colors.
- CSS variables for all design tokens. Colors, spacing, shadows, radii — all as variables for easy theming.
AVOID (anti-patterns)
- Dramatic drop shadows (
box-shadow: 0 25px 50px...)
- Thick borders (2px+) for decoration
- Asymmetric padding without clear reason
- Pure white cards on colored backgrounds
- Excessive spacing (margins > 48px between sections)
- Spring/bouncy animations
- Gradients for decoration
- Multiple accent colors in one interface
- Color-coding everything — score bars, grade badges don't need traffic-light colors
- Generic AI aesthetics: purple gradients, oversized rounded corners, excessive card shadows
Dark Mode Rules
When building dark interfaces:
- Borders over shadows — Shadows are nearly invisible on dark backgrounds. Use borders at 10-15% white opacity.
- Desaturate semantic colors — Success/warning/error colors need lower saturation to avoid harshness.
- Same hierarchy, inverted values — The four-level contrast system still applies with inverted lightness values.
Validation Checklist
Run through before delivering:
Template Reference
See TEMPLATES.md for starter component patterns: metric cards, data tables, sidebar navigation,
filter bars, form layouts, and status badges — all following these design rules.
Templates are framework-agnostic references. Adapt to your project's stack (React, Vue, Svelte, etc.)
and component library as defined in SPEC.md section 1.
1---2name: skill-frontend-design3description: Design precise, production-grade enterprise UI — dashboards, admin panels, SaaS interfaces, and data-heavy applications. Use this skill for professional software interfaces that need Jony Ive-level craft: clean, minimal, functional, with intentional personality. Do NOT use for creative landing pages, marketing sites.4---56# Enterprise UI Design Skill78Build polished, professional interfaces for enterprise software, SaaS dashboards, admin panels,9and data-heavy applications. Every pixel intentional. No generic AI aesthetics.1011**When to use this skill:** Dashboards, admin interfaces, SaaS products, data tables, settings12pages, internal tools, analytics views, multi-panel layouts, form-heavy interfaces.1314---1516## Integration with PWDEV-CODE1718This skill integrates into the PWDEV-CODE workflow at multiple phases:1920### In SPEC.md (DESIGN phase — agent-architect)2122When this skill is active, the architect MUST add to SPEC.md:2324**Section 1 — Persona:** Include "skill-frontend-design" in Active Skills.2526**Section 5 — Quality Criteria:** Add:27- [ ] Design direction explicitly chosen (not defaulted)28- [ ] 4px grid for all spacing29- [ ] Consistent border-radius system30- [ ] ONE depth strategy throughout31- [ ] Four-level text contrast hierarchy32- [ ] Color used only for meaning (status, action, error)33- [ ] Navigation context present (sidebar/topnav, location, user)34- [ ] Monospace for all data values3536**Section 7 — Prohibitions:** Add:37- No native form elements in styled UI38- No multiple accent colors in one interface39- No generic AI aesthetics (purple gradients, oversized corners, excessive shadows)40- No asymmetric padding without clear reason4142### In PLAN.md (PLAN phase — agent-planner)4344When this skill is active, tasks that involve UI MUST include in "Required Context":45```46- Skill: skills/skill-frontend-design/SKILL.md — read before implementing UI components47- Skill: skills/skill-frontend-design/TEMPLATES.md — reference patterns for common components48```4950### In REVIEW (REVIEW phase — agent-code-reviewer + agent-qa)5152The code reviewer MUST check:53- Design direction was committed to (not generic defaults)54- Spacing follows 4px grid55- Depth strategy is consistent56- Color is used for meaning only5758### In VERIFY.md (VERIFY phase — agent-verifier)5960Add to verification checklist:61```markdown62## Skill: frontend-design63| Item | Status | Evidence |64|------|:------:|----------|65| Design direction chosen | ✅/❌ | [which direction] |66| 4px grid spacing | ✅/❌ | [spot check 3 components] |67| Consistent radius | ✅/❌ | [all use same system] |68| ONE depth strategy | ✅/❌ | [borders-only / shadows / surface] |69| Monospace for data | ✅/❌ | [numbers, IDs, timestamps] |70| No anti-patterns | ✅/❌ | [checked AVOID list] |71```7273---7475## Workflow (follow this order)7677### Step 1: Analyze Context7879Before writing ANY code, read the project's CLAUDE.md and SPEC.md to understand:8081| Question | Why it matters |82|----------------------------|-----------------------------------------------------|83| What does this product do? | A finance tool ≠ a creative tool ≠ a dev tool |84| Who are the users? | Power users want density. Casual users want guidance |85| What's the emotional job? | Trust? Efficiency? Delight? Focus? |86| What data is primary? | Tables, charts, KPIs, forms — drives layout choice |87| What stack is defined? | Read SPEC.md section 1 for framework and conventions |8889### Step 2: Commit to a Design Direction9091Pick ONE personality. Don't default — choose with intent:9293- **Precision & Density** — Tight spacing, monochrome, information-forward. _Think: Linear, Raycast._94- **Warmth & Approachability** — Generous spacing, soft shadows, friendly. _Think: Notion, Coda._95- **Sophistication & Trust** — Cool tones, layered depth, financial gravitas. _Think: Stripe, Mercury._96- **Boldness & Clarity** — High contrast, dramatic negative space, confident type. _Think: Vercel._97- **Utility & Function** — Muted palette, functional density, clear hierarchy. _Think: GitHub._98- **Data & Analysis** — Chart-optimized, technical but accessible. _Think: Grafana, Metabase._99100Then lock in these choices:101102| Decision | Options |103|--------------------|------------------------------------------------------------------------|104| **Color foundation** | Warm (creams) · Cool (slate/blue-gray) · Pure neutral · Tinted |105| **Light or dark?** | Light = open, approachable · Dark = focused, premium, technical |106| **Accent color** | ONE color. Blue=trust, Green=growth, Orange=energy, Violet=creativity |107| **Depth strategy** | Borders-only · Single shadow · Layered shadows · Surface color shifts |108| **Corner radius** | Sharp (2-6px) · Soft (8-12px) — pick a system, stay consistent |109| **Typography** | System fonts · Geometric sans (Geist, Inter) · Humanist (SF Pro, Satoshi) · Mono-influenced |110| **Layout** | Dense grid · Generous spacing · Sidebar nav · Top nav · Split panels |111112**Record these decisions in CONTEXT.md** during the DESIGN phase.113114### Step 3: Build with Craft115116Implement the interface following the design rules below. Every component must feel intentional.117118### Step 4: Self-Validate119120Before delivering, run through the **Validation Checklist** at the bottom of this file.121122---123124## Design Rules125126### MUST (non-negotiable)1271281. **4px grid for all spacing.** Values: 4, 8, 12, 16, 24, 32px. No arbitrary numbers.1292. **Symmetrical padding.** If top is 16px, sides and bottom are 16px. Exception: `padding: 12px 16px` when horizontal needs room.1303. **Consistent border-radius.** Pick sharp (2-6px) or soft (8-12px). Never mix systems. Never 16px+ on small elements.1314. **ONE depth strategy.** Borders-only OR single shadows OR layered shadows. Don't mix across the same interface.1325. **Monospace for data.** Numbers, IDs, codes, timestamps get `font-family: monospace` with `font-variant-numeric: tabular-nums`.1336. **Four-level contrast hierarchy.** Foreground (primary) → Secondary → Muted → Faint. Use all four consistently:134 ```css135 --text-primary: #0f172a; /* headings, key data */136 --text-secondary: #334155; /* body text */137 --text-muted: #64748b; /* labels, secondary info */138 --text-faint: #94a3b8; /* placeholders, disabled */139 ```1407. **Color = meaning only.** Gray builds structure. Color only for: status, action, error, success. No decorative color.1418. **Navigation context.** Never render a floating component — include sidebar/topnav, breadcrumbs/page title, and user context.1429. **No native form elements in styled UI.** Build custom selects, date pickers, checkboxes. Native elements break visual consistency.14310. **Custom select triggers use `display: inline-flex` + `white-space: nowrap`** to keep text and chevron on same row.144145### SHOULD (strong recommendations)1461471. **Typography scale:** 11, 12, 13, 14 (base), 16, 18, 24, 32px. Headlines at 600 weight with `-0.02em` letter-spacing.1482. **Icons from Lucide** (`lucide-react` or `lucide-vue-next`). Icons clarify, not decorate — if removing one loses no meaning, remove it.1493. **Animation:** 150ms micro-interactions, 200-250ms transitions. Easing: `cubic-bezier(0.25, 1, 0.5, 1)`. No bounce/spring.1504. **Card layout variety.** A metric card ≠ a plan card ≠ a settings card. Vary internal structure, but keep surface treatment consistent.1515. **Sidebar same background as content.** Use a subtle border for separation, not different background colors.1526. **CSS variables for all design tokens.** Colors, spacing, shadows, radii — all as variables for easy theming.153154### AVOID (anti-patterns)155156- Dramatic drop shadows (`box-shadow: 0 25px 50px...`)157- Thick borders (2px+) for decoration158- Asymmetric padding without clear reason159- Pure white cards on colored backgrounds160- Excessive spacing (margins > 48px between sections)161- Spring/bouncy animations162- Gradients for decoration163- Multiple accent colors in one interface164- Color-coding everything — score bars, grade badges don't need traffic-light colors165- Generic AI aesthetics: purple gradients, oversized rounded corners, excessive card shadows166167---168169## Dark Mode Rules170171When building dark interfaces:172173- **Borders over shadows** — Shadows are nearly invisible on dark backgrounds. Use borders at 10-15% white opacity.174- **Desaturate semantic colors** — Success/warning/error colors need lower saturation to avoid harshness.175- **Same hierarchy, inverted values** — The four-level contrast system still applies with inverted lightness values.176177---178179## Validation Checklist180181Run through before delivering:182183- [ ] Design direction was explicitly chosen (not defaulted)184- [ ] All spacing aligns to 4px grid185- [ ] Padding is symmetrical on all containers186- [ ] Border-radius is consistent across all components187- [ ] ONE depth strategy used throughout188- [ ] Monospace applied to all data values189- [ ] Color only used for meaning (status, action, error)190- [ ] Four-level text contrast hierarchy applied191- [ ] Navigation context present (sidebar/topnav, location, user)192- [ ] No native form elements — all custom-styled193- [ ] No anti-patterns from AVOID list194- [ ] Card layouts vary by content type, surface treatment stays consistent195- [ ] Dark mode adjustments applied (if applicable)196- [ ] Animations use correct timing and easing197- [ ] Interface feels designed for its specific product context198199---200201## Template Reference202203See `TEMPLATES.md` for starter component patterns: metric cards, data tables, sidebar navigation,204filter bars, form layouts, and status badges — all following these design rules.205206Templates are framework-agnostic references. Adapt to your project's stack (React, Vue, Svelte, etc.)207and component library as defined in SPEC.md section 1.