design

Version: 1.0 Source: Design Standards

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "design" with this command: npx skills add alexanderstephenthompson/claude-hub/alexanderstephenthompson-claude-hub-design

Design Skill

Version: 1.0 Source: Design Standards

Non-negotiable design and user interface standards. These are not preferences—they are requirements.

Scope and Boundaries

This skill covers:

  • Design system philosophy and principles

  • Design token usage and enforcement

  • Semantic HTML patterns (element selection)

  • CSS formatting and quality rules

  • Component states (hover, focus, active, disabled)

  • Layout philosophy (Grid vs Flexbox selection)

  • Responsive design principles and breakpoints

  • Premium UI philosophy and anti-patterns

Defers to other skills:

  • web-accessibility : Deep WCAG compliance, screen reader patterns, ARIA usage, keyboard navigation

  • web-css : CSS architecture, file organization, naming conventions (BEM), dark mode implementation

Use this skill when: You need design principles, token enforcement, or semantic HTML guidance. Use web-accessibility when: You need WCAG compliance, screen reader support, or focus management. Use web-css when: You need CSS organization, variable architecture, or responsive implementation details.

Core Principles

  • Users First — Prioritize user needs, workflows, and ease of use

  • Meticulous Craft — Precision and polish in every UI element

  • Speed & Performance — Fast load times, snappy interactions

  • Simplicity & Clarity — Clean interface, unambiguous labels

  • Focus & Efficiency — Help users achieve goals quickly

  • Consistency — Uniform design language throughout

  • Accessibility (WCAG AA) — Inclusive design for all users

  • Opinionated Defaults — Thoughtful defaults reduce decision fatigue

Design System (Single Source of Truth)

Critical Rules

  • ALWAYS use design tokens — NEVER use hardcoded values

  • All values come from styles/global.css — Single source of truth for CSS variables

  • No magic numbers — Every color, spacing, size uses a CSS variable

Examples

/* ✅ Correct - Uses design tokens */ .button { padding: var(--space-sm) var(--space-md); font-size: var(--font-size-body); background: var(--color-primary); border-radius: var(--radius-sm); box-shadow: var(--shadow-sm); }

/* ❌ Wrong - Hardcoded values / .button { padding: 8px 16px; / Use var(--space-sm) var(--space-md) / font-size: 14px; / Use var(--font-size-body) / background: #3B82F6; / Use var(--color-primary) / border-radius: 4px; / Use var(--radius-sm) */ }

What the Design System Contains

  • Complete color palette (neutrals, semantic, dark mode)

  • Full typography scale (fonts, sizes, weights, line heights)

  • Spacing system (4px base)

  • Border radii

  • Shadows

  • Z-index layers

  • Animation durations and easings

  • Icon sizes

  • Breakpoint values

Semantic HTML

Required Practices

  • Use semantic tags: <header> , <nav> , <main> , <article> , <section> , <footer>

  • Buttons for actions (<button> ), links for navigation (<a> )

  • Forms use <form> , <label> , <input> , <select> , <textarea>

  • Lists use <ul> , <ol> , <li> (not divs with bullets)

  • Headings follow hierarchy: <h1> → <h2> → <h3> (no skipping)

  • Images have descriptive alt text

  • Tables use proper markup for tabular data

Examples

<!-- ✅ Good - Semantic HTML --> <article class="product-card"> <header> <h2>Product Name</h2> </header> <img src="..." alt="Product description"> <p>Product description goes here.</p> <footer> <button type="button">Add to Cart</button> </footer> </article>

<!-- ❌ Bad - Non-semantic divs --> <div class="prd-crd"> <div class="hdr"> <div class="ttl">Product Name</div> </div> <div class="img"></div> <div class="btn">Add to Cart</div> </div>

HTML Cleanliness

Headings Are for Structure

Headings (<h1> -<h6> ) define document structure, not visual styling.

<!-- ❌ Wrong - Using heading for font size --> <h3>Sale Price</h3> <!-- Not a section heading, just wants bold text -->

<!-- ✅ Right - Use a class for styling --> <p class="price-label">Sale Price</p>

No Class Bloat

Elements should have 1-3 classes. More than 4 is a smell — consolidate into a semantic class.

<!-- ❌ Bad - Class soup --> <button class="px-4 py-2 bg-blue-500 text-white rounded-md hover:bg-blue-600 focus:ring-2"> Submit </button>

<!-- ✅ Good - Semantic class (styling lives in CSS) --> <button class="btn btn--primary"> Submit </button>

No Inline Styles

HTML describes structure. CSS handles presentation. Keep them separated.

// ❌ Bad - Inline styles <div style={{ marginTop: '16px', padding: '8px' }}>

// ✅ Good - CSS class <div className="card-section">

Only exception: Truly dynamic values computed at runtime. Even then, prefer CSS custom properties.

CSS Quality

Formatting Rules

  • One property per line

  • Use design tokens (CSS variables), not hardcoded values

  • Logical property order: Positioning → Box Model → Typography → Visual → Animation

  • Descriptive class names (BEM or semantic naming)

  • Generous spacing between rule sets

  • Comments for complex sections

Example

/* ✅ Good - Human-readable */ .product-card { display: flex; flex-direction: column; gap: var(--space-md); padding: var(--space-lg); background-color: var(--color-neutral-50); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); }

.product-card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); transition: all var(--duration-fast) var(--easing-standard); }

Component States (Required)

All interactive components MUST have these five states:

State Requirement Example

Default Base appearance Normal button

Hover Visual feedback on mouse over Background darkens

Active Visual feedback when pressed Slight scale down

Focus Clear focus indicator (keyboard nav) outline: 2px solid var(--color-focus); outline-offset: 2px;

Disabled Visually distinct, non-interactive Grayed out, low opacity

Layout Philosophy

CSS Grid vs Flexbox

Layout Need Tool Example

Page structure Grid (named areas) Header, sidebar, main, footer

Section layout Grid (named areas) Two-column content, form layout

Component structure Grid (named areas) Card internals, modal layout

Navigation items Flexbox Top nav items, menu items

Gallery/flowing items Flexbox Image grid, card gallery, tag list

Default to Grid for structure. Use Flexbox when items need to flow, distribute, or wrap.

Grid with Named Areas (Primary Layout Method)

#app-layout { display: grid; grid-template-columns: 200px 1fr; grid-template-areas: "header header" "sidebar main" "footer footer"; gap: var(--space-md); }

#header { grid-area: header; } #sidebar { grid-area: sidebar; } #main { grid-area: main; } #footer { grid-area: footer; }

White Space

  • Use ample negative space to improve clarity

  • Consistent spacing using design tokens

Accessibility (WCAG AA)

Required Standards

Color Contrast

  • Normal text: 4.5:1 minimum

  • Large text (18px+): 3:1 minimum

Keyboard Navigation

  • All functionality available via keyboard

  • Logical tab order

  • Focus indicators visible

Screen Reader Support

  • Proper ARIA labels

  • Semantic HTML

  • Skip links for navigation

Form Labels

  • All inputs have associated labels

  • Error messages linked to inputs

Respect User Preferences

@media (prefers-reduced-motion: reduce) {

  • { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } }

Responsive Design

Mobile-First Breakpoints

/* Mobile: 0-767px (base styles, no media query needed) */

/* Tablet: 768px and up */ @media (min-width: 768px) { }

/* Desktop: 1024px and up */ @media (min-width: 1024px) { }

/* Large Desktop: 1280px and up */ @media (min-width: 1280px) { }

Never use: @media (max-width: ...) — Always use min-width (mobile-first)

Container max-widths

  • Mobile: 100% (with padding)

  • Tablet: 768px

  • Desktop: 1024px

  • Large: 1280px

Premium UI Philosophy

We follow S-Tier SaaS standards (Stripe, Airbnb, Linear):

  • Sophisticated typography with perfect spacing

  • Premium color palettes with subtle gradients

  • Purposeful animations (150-300ms)

  • Delightful micro-interactions

  • Meticulous attention to detail

Goal: Make every interface feel premium. Subtle sophistication over flashy effects.

Anti-Patterns (DO NOT DO THESE)

Anti-Pattern Why Bad Do Instead

Floating labels Confusing Labels above inputs

Inline validation Annoying Validate on blur/submit

Generic error messages Unhelpful Specific, actionable errors

Tooltips for critical info Easy to miss Show directly

Disabled buttons without explanation Frustrating Show why disabled

Custom scrollbars Inconsistent UX System scrollbars

Hamburger menu on desktop Hides navigation Full nav on desktop

Quick Reference Checklist

Design System

  • ALL values use design tokens

  • No magic numbers or hardcoded colors

  • Design system is source of truth

Semantic HTML

  • Semantic tags used appropriately

  • Buttons for actions, links for navigation

  • Heading hierarchy followed

  • Alt text on all images

CSS

  • Human-readable formatting

  • Design tokens used throughout

  • Logical property order

Component States

  • Default state implemented

  • Hover state implemented

  • Active state implemented

  • Focus state implemented

  • Disabled state implemented

Accessibility

  • Color contrast meets WCAG AA

  • Keyboard navigation works

  • Screen reader tested

  • Focus indicators visible

  • Form labels present

Responsive

  • Mobile-first approach

  • Standard breakpoints used

  • Works on all screen sizes

Anti-Patterns Avoided

  • No floating labels

  • No inline validation

  • No generic errors

  • No tooltips for critical info

  • No unexplained disabled buttons

  • No custom scrollbars

  • No hamburger on desktop

Enforced Rules

These rules are deterministically checked by check.js (clean-team). When updating these standards, update the corresponding check.js rules to match — and vice versa.

Rule ID Severity What It Checks

no-inline-style

error style="..." attributes in HTML

no-jsx-inline-style

warn style={{...}} in JSX

button-type-required

error <button> without type attribute

doctype-required

error Missing <!DOCTYPE html>

max-classes

warn More than 4 classes on an element

References

  • references/semantic-html.md — Complete semantic HTML guide

  • references/css-formatting.md — CSS best practices

  • references/accessibility-guide.md — WCAG AA compliance

  • references/responsive-breakpoints.md — Responsive design patterns

Assets

  • assets/component-states-checklist.md — State implementation guide

  • assets/anti-patterns.md — Detailed anti-pattern explanations

  • assets/layout-examples.md — CSS Grid and Flexbox examples

Scripts

  • scripts/validate_design_tokens.py — Check for hardcoded values

  • scripts/check_accessibility.py — Basic a11y validation

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.