Modern web applications with authentic neobrutalist aesthetic. Bold typography, hard shadows (no blur), thick black borders, high-contrast primary colors, raw visual tension. Extrapolates neobrutalism to SaaS dashboards, e-commerce, landing pages, startup MVPs. Activate on 'neobrutalism', 'neubrutalism', 'brutalist', 'bold borders', 'hard shadows', 'raw aesthetic', 'anti-minimalism', 'gumroad style', 'figma style'. NOT for glassmorphism (use vaporwave-glassomorphic-ui-designer), Windows retro (use windows-3-1-web-designer or windows-95-web-designer), soft shadows, gradients, neumorphism.
npx skills add https://github.com/curiositech/some_claude_skills --skill neobrutalist-web-designer
Creates modern 2026 web applications with authentic neobrutalist aesthetic. Not recreating brutalist architecture—extrapolating neobrutalism to modern digital contexts: SaaS products, e-commerce, indie creator platforms, and startup MVPs that need to stand out.
Use for:
Do NOT use for:
| Feature | Neobrutalism | Glassmorphism | Neumorphism | Win31/95 |
|---------|--------------|---------------|-------------|----------|
| Shadows | Hard (no blur) | Soft glow | Subtle inset | Beveled |
| Borders | Thick black strokes | Subtle/none | None | Beveled |
| Colors | Bold primaries | Frosted/pastel | Muted | System gray |
| Background | Solid flat | Blur/transparent | Soft gradient | Solid |
| Philosophy | Raw, exposed | Ethereal, hidden | Realistic | Functional |
| Color | Hex | CSS Variable | Usage |
|-------|-----|--------------|-------|
| Black | #000000 | --neo-black | Borders, shadows, text |
| White | #FFFFFF | --neo-white | Backgrounds, contrast |
| Cream/Beige | #F5F0E6 | --neo-cream | Soft background alternative |
| Red | #FF5252 | --neo-red | Danger, emphasis |
| Yellow | #FFEB3B | --neo-yellow | Highlights, warnings |
| Blue | #2196F3 | --neo-blue | Links, primary actions |
| Pink | #FF4081 | --neo-pink | Accent, playful |
| Green | #4CAF50 | --neo-green | Success states |
| Orange | #FF9800 | --neo-orange | CTAs, attention |
| Purple | #9C27B0 | --neo-purple | Creative, premium |
Color Rules:
THE defining neobrutalist element - offset shadow with zero blur:
.neo-shadow {
/* THE neobrutalist shadow formula */
box-shadow: 4px 4px 0 #000000;
}
.neo-shadow--deep {
box-shadow: 8px 8px 0 #000000;
}
.neo-shadow--subtle {
box-shadow: 2px 2px 0 #000000;
}
/* Hover: shadow grows */
.neo-shadow:hover {
box-shadow: 6px 6px 0 #000000;
transform: translate(-2px, -2px);
}
/* Active: shadow shrinks (pressed) */
.neo-shadow:active {
box-shadow: 2px 2px 0 #000000;
transform: translate(2px, 2px);
}
.neo-border {
border: 3px solid #000000;
}
.neo-border--thick {
border: 4px solid #000000;
}
.neo-border--thin {
border: 2px solid #000000;
}
/* Colored borders for emphasis */
.neo-border--accent {
border: 3px solid var(--neo-pink);
}
| Use | Font Suggestion | Fallback | Style |
|-----|-----------------|----------|-------|
| Headlines | Archivo Black | Impact, sans-serif | Bold, condensed |
| Body | Space Grotesk | Arial, sans-serif | Clean, geometric |
| Accent | Lexend Mega | Trebuchet, sans-serif | Wide, bold |
| Mono | JetBrains Mono | Courier New | Code, retro |
| Display | Bebas Neue | Impact | All-caps impact |
Typography Rules:
:root {
--font-neo-display: 'Archivo Black', 'Impact', sans-serif;
--font-neo-body: 'Space Grotesk', 'Arial', sans-serif;
--font-neo-accent: 'Lexend Mega', sans-serif;
--font-neo-mono: 'JetBrains Mono', 'Courier New', monospace;
}
/* Headlines are BOLD and often oversized */
h1 {
font-family: var(--font-neo-display);
font-size: clamp(3rem, 8vw, 6rem);
line-height: 0.9;
letter-spacing: -0.02em;
text-transform: uppercase;
}
/* Body maintains readability */
body {
font-family: var(--font-neo-body);
font-size: 1.125rem;
line-height: 1.6;
}
Neobrutalism for SaaS emphasizes function over flourish:
┌────────────────────────────────────────────────────────┐
│ ██████████████████████████████████████████████████████ │
│ █ DASHBOARD [?] [⚙] [👤] █│
│ ██████████████████████████████████████████████████████ │
├────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ ████████████ │ │ ████████████ │ │ ████████████ │ │
│ │ REVENUE │ │ CUSTOMERS │ │ PRODUCTS │ │
│ │ ════════════ │ │ ════════════ │ │ ════════════ │ │
│ │ $12,450 │ │ 1,234 │ │ 12 │ │
│ │ ↑ 23% │ │ ↑ 15% │ │ → 0% │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────┐│
│ │ RECENT SALES [View All]││
│ │ ════════════════════════════════════════════════════││
│ │ ▓ Product A $49.00 Jan 31, 10:23 ││
│ │ ▓ Product B $29.00 Jan 31, 09:45 ││
│ │ ▓ Product A $49.00 Jan 31, 08:12 ││
│ └────────────────────────────────────────────────────┘│
└────────────────────────────────────────────────────────┘
Key patterns:
.neo-product-card {
background: var(--neo-white);
border: 3px solid var(--neo-black);
box-shadow: 6px 6px 0 var(--neo-black);
padding: 0;
overflow: hidden;
}
.neo-product-card:hover {
box-shadow: 8px 8px 0 var(--neo-black);
transform: translate(-2px, -2px);
}
.neo-product-card__image {
border-bottom: 3px solid var(--neo-black);
width: 100%;
aspect-ratio: 1;
object-fit: cover;
}
.neo-product-card__content {
padding: 1rem;
}
.neo-product-card__price {
font-family: var(--font-neo-display);
font-size: 1.5rem;
background: var(--neo-yellow);
display: inline-block;
padding: 0.25rem 0.5rem;
border: 2px solid var(--neo-black);
}
.neo-add-to-cart {
width: 100%;
background: var(--neo-black);
color: var(--neo-white);
border: 3px solid var(--neo-black);
padding: 0.75rem;
font-family: var(--font-neo-display);
text-transform: uppercase;
cursor: pointer;
}
.neo-add-to-cart:hover {
background: var(--neo-pink);
color: var(--neo-black);
}
╔══════════════════════════════════════════════════════════════╗
║ ║
║ ████████ WE BUILD ║
║ ████████ BOLD ║
║ ████████ PRODUCTS ║
║ ║
║ ┌─────────────────────────────────────────────────────────┐║
║ │ │║
║ │ No more boring SaaS. We create tools that │║
║ │ stand out, work hard, and make you money. │║
║ │ │║
║ └─────────────────────────────────────────────────────────┘║
║ ║
║ ╔═══════════════════════════════════════╗ ║
║ ║ → START FREE TRIAL ║ ║
║ ╚═══════════════════════════════════════╝ ║
║ ║
╚══════════════════════════════════════════════════════════════╝
| Breakpoint | Adjustments |
|------------|-------------|
| Mobile (<640px) | Shadow: 3px 3px, Border: 2px, Font scale down |
| Tablet (640-1024px) | Shadow: 4px 4px, Border: 3px, Standard fonts |
| Desktop (>1024px) | Shadow: 6px 6px, Border: 4px, Oversized headlines |
/* Mobile-first approach */
:root {
--neo-shadow-size: 3px;
--neo-border-width: 2px;
}
@media (min-width: 640px) {
:root {
--neo-shadow-size: 4px;
--neo-border-width: 3px;
}
}
@media (min-width: 1024px) {
:root {
--neo-shadow-size: 6px;
--neo-border-width: 4px;
}
}
.neo-card {
border: var(--neo-border-width) solid var(--neo-black);
box-shadow: var(--neo-shadow-size) var(--neo-shadow-size) 0 var(--neo-black);
}
.neo-button {
background: var(--neo-white);
color: var(--neo-black);
border: 3px solid var(--neo-black);
box-shadow: 4px 4px 0 var(--neo-black);
padding: 0.75rem 1.5rem;
font-family: var(--font-neo-display);
font-size: 1rem;
text-transform: uppercase;
cursor: pointer;
transition: all 0.1s ease;
}
.neo-button:hover {
box-shadow: 6px 6px 0 var(--neo-black);
transform: translate(-2px, -2px);
}
.neo-button:active {
box-shadow: 2px 2px 0 var(--neo-black);
transform: translate(2px, 2px);
}
/* Primary variant */
.neo-button--primary {
background: var(--neo-yellow);
}
/* Danger variant */
.neo-button--danger {
background: var(--neo-red);
color: var(--neo-white);
}
/* Ghost variant */
.neo-button--ghost {
background: transparent;
box-shadow: none;
}
.neo-button--ghost:hover {
background: var(--neo-black);
color: var(--neo-white);
box-shadow: none;
transform: none;
}
.neo-card {
background: var(--neo-white);
border: 3px solid var(--neo-black);
box-shadow: 6px 6px 0 var(--neo-black);
padding: 1.5rem;
}
.neo-card__header {
border-bottom: 2px solid var(--neo-black);
padding-bottom: 1rem;
margin-bottom: 1rem;
}
.neo-card__title {
font-family: var(--font-neo-display);
font-size: 1.25rem;
text-transform: uppercase;
}
/* Feature card with accent color */
.neo-card--featured {
background: var(--neo-yellow);
}
/* Highlighted state */
.neo-card--highlight {
border-color: var(--neo-pink);
box-shadow: 6px 6px 0 var(--neo-pink);
}
.neo-input {
background: var(--neo-white);
border: 3px solid var(--neo-black);
padding: 0.75rem 1rem;
font-family: var(--font-neo-body);
font-size: 1rem;
width: 100%;
}
.neo-input:focus {
outline: none;
box-shadow: 4px 4px 0 var(--neo-black);
}
.neo-input::placeholder {
color: #888;
}
/* Labels are bold and uppercase */
.neo-label {
font-family: var(--font-neo-display);
text-transform: uppercase;
font-size: 0.875rem;
margin-bottom: 0.5rem;
display: block;
}
/* Checkbox/Radio */
.neo-checkbox {
appearance: none;
width: 24px;
height: 24px;
border: 3px solid var(--neo-black);
background: var(--neo-white);
cursor: pointer;
}
.neo-checkbox:checked {
background: var(--neo-black);
}
.neo-checkbox:checked::after {
content: '✓';
color: var(--neo-white);
font-size: 16px;
display: flex;
align-items: center;
justify-content: center;
}
.neo-nav {
background: var(--neo-black);
border-bottom: 4px solid var(--neo-black);
padding: 1rem 2rem;
display: flex;
justify-content: space-between;
align-items: center;
}
.neo-nav__logo {
font-family: var(--font-neo-display);
font-size: 1.5rem;
color: var(--neo-white);
text-transform: uppercase;
}
.neo-nav__links {
display: flex;
gap: 1.5rem;
}
.neo-nav__link {
color: var(--neo-white);
text-decoration: none;
font-family: var(--font-neo-body);
font-weight: 600;
padding: 0.5rem 0;
border-bottom: 3px solid transparent;
}
.neo-nav__link:hover {
border-bottom-color: var(--neo-yellow);
}
.neo-nav__link--active {
border-bottom-color: var(--neo-pink);
}
Novice thinking: box-shadow: 0 4px 6px rgba(0,0,0,0.1)
Reality: Neobrutalism uses HARD shadows with zero blur
Instead: box-shadow: 4px 4px 0 #000000
Novice thinking: background: linear-gradient(to right, #ff5252, #ffeb3b)
Reality: Neobrutalism is FLAT. No gradients, no blending.
Instead: Pick ONE solid color. Embrace the flatness.
Novice thinking: border-radius: 16px on everything
Reality: Neobrutalism prefers sharp corners or minimal rounding (4px max)
Instead: border-radius: 0 or border-radius: 4px for subtle softening
Novice thinking: border: 1px solid #ddd
Reality: Neobrutalist borders are BOLD (3-4px) and BLACK
Instead: border: 3px solid #000000
Novice thinking: Subtle pastels on white background
Reality: Neobrutalism demands HIGH contrast
Instead: Bold primaries (#FF5252, #FFEB3B) on white/black
Novice thinking: background: rgba(255,255,255,0.8)
Reality: Neobrutalism is OPAQUE. No see-through elements.
Instead: background: #FFFFFF (solid, no alpha)
Novice thinking: filter: blur(2px) on hover
Reality: Hover states in neobrutalism are physical (translate + shadow change)
Instead: transform: translate(-2px, -2px) + increased shadow
Is it a container element?
├── Card/Panel? → 3px black border + hard shadow
├── Section? → Full-width, solid background color
├── Modal? → Heavy shadow (8px+), thick border
└── Nav? → Black background or thick bottom border
Is it interactive?
├── Button? → Hard shadow that responds to hover/active
├── Link? → Underline or bottom border, color change on hover
├── Input? → Thick border, shadow on focus
└── Checkbox? → Thick border, solid fill when checked
Is it typography?
├── Headline? → Oversized, bold display font, uppercase optional
├── Body? → Clean geometric sans, good line height
├── Label? → Bold, uppercase, smaller size
└── Code? → Monospace, possibly with background
Is it a status indicator?
├── Success? → Green background or border
├── Error? → Red background or border
├── Warning? → Yellow background or border
└── Info? → Blue background or border
:root {
/* Core palette */
--neo-black: #000000;
--neo-white: #FFFFFF;
--neo-cream: #F5F0E6;
/* Primary colors */
--neo-red: #FF5252;
--neo-yellow: #FFEB3B;
--neo-blue: #2196F3;
--neo-pink: #FF4081;
--neo-green: #4CAF50;
--neo-orange: #FF9800;
--neo-purple: #9C27B0;
/* Typography */
--font-neo-display: 'Archivo Black', 'Impact', sans-serif;
--font-neo-body: 'Space Grotesk', 'Arial', sans-serif;
--font-neo-mono: 'JetBrains Mono', 'Courier New', monospace;
/* Spacing */
--neo-spacing-xs: 0.25rem;
--neo-spacing-sm: 0.5rem;
--neo-spacing-md: 1rem;
--neo-spacing-lg: 1.5rem;
--neo-spacing-xl: 2rem;
/* Shadows & Borders */
--neo-shadow-size: 4px;
--neo-border-width: 3px;
--neo-shadow: var(--neo-shadow-size) var(--neo-shadow-size) 0 var(--neo-black);
}
If your component has:
It should have:
Despite its boldness, neobrutalism can be highly accessible:
/* Ensure focus is visible */
.neo-button:focus-visible {
outline: 3px solid var(--neo-blue);
outline-offset: 2px;
}
/* Reduce motion if preferred */
@media (prefers-reduced-motion: reduce) {
.neo-button {
transition: none;
}
.neo-button:hover {
transform: none;
box-shadow: var(--neo-shadow); /* Keep shadow, skip animation */
}
}
/references/component-library.md - Full CSS for all neobrutalist components/references/color-combinations.md - Tested color pairings with contrast ratios/references/typography-pairings.md - Font combinations for different contexts/references/real-world-examples.md - Analysis of Gumroad, Figma, and other implementationsDesign research based on:
Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.
Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.
Set up Tailwind CSS v4 in Expo with react-native-css and NativeWind v5 for universal styling
Use Expo DOM components to run web code in a webview on native and as-is on web. Migrate web code to native incrementally.
Take curiositech/neobrutalist-web-designer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.