From craft-workspace-webconsulting-skills
Provides practical UI design patterns for hierarchy, spacing, typography, color, depth, imagery, UI copy, forms, navigation, tables, empty states, loading states, accessibility, and responsive behavior. Use when designing, reviewing, polishing, or refactoring web interfaces.
How this skill is triggered — by the user, by Claude, or both
Slash command
/craft-workspace-webconsulting-skills:ui-design-patternsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> Source: https://github.com/dirnbauer/webconsulting-skills
references/04-designing-text.mdreferences/05-working-with-color.mdreferences/06-creating-depth.mdreferences/07-working-with-images.mdreferences/08-copywriting-for-ui.mdreferences/09-forms-and-buttons.mdreferences/10-finishing-touches.mdreferences/11-leveling-up.mdreferences/full-guide.mdreferences/quick-reference-system-recommendations.mdPractical guidelines for creating polished, professional user interfaces without relying on graphic design talent. These patterns work for any web project, including TYPO3 frontend development.
These patterns are adapted from two excellent resources:
We highly recommend both works for deepening your UI design knowledge.
Before diving into specific patterns, internalize these foundational principles:
Base design decisions on risk assessment—the risk that someone could have difficulty using an interface:
Always consider: people with poor eyesight, low computer literacy, reduced dexterity, and cognitive differences.
Every UI element should have a rationale. "That looks nice" is not constructive feedback. Be able to articulate why each design decision was made.
| Element | Logical Reason |
|---|---|
| Left-aligned text | Creates neat edge, improves readability |
| Descriptive headings | Scannable, works with screen readers |
| Blue underlined links | Indicates interactivity, accessible for color blind |
| Grouped spacing | Related items closer together reduce cognitive load |
Interaction cost = physical + mental effort to complete a task. Reduce it by:
Cognitive load is the mental effort required to use an interface. Reduce it by:
Create a system of reusable guidelines before designing:
This ensures consistency and speeds up decision-making.
Meet WCAG 2.1 Level AA at minimum:
| Requirement | Minimum Ratio |
|---|---|
| Small text (below large-text threshold) | 4.5:1 contrast |
| Large text (24px+/18pt regular or 18.66px+/14pt bold) | 3:1 contrast |
| UI elements (borders, icons) | 3:1 contrast |
Never rely on color alone—always pair with icons, patterns, or text for color blind users.
Per Jakob's Law, stick with patterns people already know:
Save creativity for your product's unique value proposition, not basic UI conventions.
Roughly 80% of users use 20% of features. Prioritize the common paths:
Don't begin by designing the shell (navigation, sidebar, footer). Start with actual functionality.
Wrong approach:
Right approach:
In early stages, ignore typefaces, shadows, and icons. Use thick markers or low-fidelity wireframes to explore layouts quickly.
Design in grayscale first. This forces you to use spacing, contrast, and size to create hierarchy. Color comes later as enhancement.
Design the smallest useful version first. Don't design features you can't build yet—ship what works.
Visual hierarchy makes interfaces feel "designed". When everything competes for attention, nothing stands out.
The key: Deliberately de-emphasize secondary and tertiary information while highlighting what matters most.
Don't rely solely on font size for hierarchy. Use:
| Technique | Effect |
|---|---|
| Font weight | 600-700 for emphasis, 400-500 for normal |
| Color contrast | Dark for primary, grey for secondary, light grey for tertiary |
| Spacing | More space around important elements |
Color guidelines for text:
slate-900)slate-600)slate-400)Grey text on colored backgrounds looks washed out. Instead, pick a color with the same hue as the background, adjusting saturation and lightness.
/* Bad: Grey on blue background */
background: hsl(220, 80%, 50%);
color: #888888; /* Looks dull */
/* Good: Tinted text matching background hue */
background: hsl(220, 80%, 50%);
color: hsl(220, 60%, 85%); /* Harmonious and readable */
If a primary element doesn't stand out, don't make it louder—make competing elements quieter.
/* Instead of making active nav item bolder... */
/* ...make inactive items softer */
.nav-item { color: var(--slate-400); }
.nav-item.active { color: var(--slate-900); }
Context often eliminates the need for labels:
| Instead of | Use |
|---|---|
| "Email: john@example.com" | john@example.com (format is obvious) |
| "In stock: 12" | "12 left in stock" |
| "Bedrooms: 3" | "3 bedrooms" |
When labels are necessary, de-emphasize them—the data is what matters.
Heavy elements (icons, bold text) can be de-emphasized with softer colors. Light elements (thin borders) can be emphasized with increased weight.
/* Icon feels too heavy? Reduce contrast */
.icon { color: var(--slate-400); } /* Instead of slate-900 */
/* Border too subtle? Increase width */
border: 2px solid hsl(210, 23%, 95%); /* Instead of 1px darker */
Design buttons based on hierarchy, not just semantics:
| Type | Style | Use for |
|---|---|---|
| Primary | Solid, high contrast | Main action on page |
| Secondary | Outline or lower contrast | Less important actions |
| Tertiary | Link style | Seldom-used actions |
Destructive actions aren't automatically red and bold. If "Delete" isn't the primary action, style it as secondary or tertiary, then use bold red styling in the confirmation modal.
Begin with excessive space, then remove until satisfied. This ensures elements breathe properly.
Use a constrained scale with meaningful jumps (~25% between values):
4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px, 96px, 128px
Base on 16px (default browser font size, divides nicely).
If content only needs 600px, don't stretch it to 1200px. Extra space around edges never hurts.
Designing for mobile first often reveals better solutions. Start with ~400px width, then expand.
Not all elements should be fluid. Sidebars, icons, and avatars often work better with fixed sizes while main content flexes.
/* Better than percentage-based sidebar */
.sidebar { width: 280px; flex-shrink: 0; }
.main { flex: 1; min-width: 0; }
Headlines shouldn't stay proportional to body text across screen sizes. Large elements should shrink faster than small ones on mobile.
/* Desktop: 45px headline, 18px body (2.5x ratio) */
/* Mobile: 24px headline, 14px body (1.7x ratio) */
When elements are grouped without visible separators, the spacing between groups must be greater than spacing within groups.
/* Form labels should be closer to their inputs than to previous inputs */
.form-group { margin-bottom: 24px; }
.form-label { margin-bottom: 8px; }
Read the full guide when the task needs detailed examples, long templates, troubleshooting matrices, appendices, or sections not included above. Keep this file unloaded for narrow tasks so the skill follows progressive disclosure.
npx claudepluginhub dirnbauer/webconsulting-skillsUse when building ANY user interface - web app, game, CLI, dashboard, landing page, or component - ensures all UI output references documented UX patterns instead of generating from assumptions, preventing the amateur look of AI-generated UI
Enforces anti-slop UI/UX standards for building components, selecting colors/layouts/typography, and reviewing visual designs to avoid generic AI aesthetics.
Provides UI/UX design guidance for unique, accessible web interfaces covering colors, typography, layouts. Always asks before decisions; activates for building web components, pages, apps.