Automated summary
A design guide that applies the neobrutalist aesthetic (hard blur-free shadows, thick black borders, high-contrast primary colors) to modern web applications such as SaaS dashboards, e-commerce and landing pages.
Strengths
- Defines a concrete design system with a color palette, CSS variables and a reusable hard-shadow formula
- Clearly separates neobrutalism from adjacent styles (glassmorphism, neumorphism, Windows 3.1/95) via a comparison table
- Specifies precise interaction states (hover, active) for shadows and transforms
- Explicitly scopes suitable use cases and redirects to other skills when the style does not fit
Limitations
- The provided file cuts off at the start of the border system, so typography and layout rules are not fully documented
- The very loud style is unsuitable for interfaces that must stay sober or institutional
- No accessibility guidance (contrast, focus states) beyond the vivid palette
Use it when a web project needs a bold, raw identity that stands out, such as a startup MVP, a landing page or a SaaS dashboard.
Avoid it when the project requires glassmorphism, neumorphism, gradients, soft shadows or a retro Windows look.
Security analysis
SafeThe skill is a purely presentational design guide limited to Read/Write/Edit/Glob/Grep. It contains no shell execution, network calls, secret handling, obfuscated payloads, or destructive instructions. Write/Edit are used for emitting HTML/CSS design output, which is the expected and benign purpose of a designer skill.
No concerns found
How this analysis is madeExamples
Build a pricing page for my SaaS with a neobrutalist style: thick black borders, hard offset shadows, bold yellow and blue accents on a cream background.Create a bold neobrutalist landing page for my startup MVP — big typography, no gradients, hard shadows and high-contrast primary colors.Restyle my dashboard cards in neobrutalism: 2-4px black borders, 4px hard shadows, and hover states where the shadow grows and the card shifts up.name: neobrutalist-web-designer description: 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. allowed-tools: Read,Write,Edit,Glob,Grep
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.
When to Use
Use for:
- SaaS dashboards that need bold differentiation (Gumroad, Figma style)
- E-commerce with memorable, raw aesthetic (Tony's Chocolonely style)
- Indie creator platforms and portfolios
- Startup landing pages and MVPs
- Educational platforms seeking approachable boldness
- Music, art, and social media apps
- Any UI that needs to "shout" rather than whisper
Do NOT use for:
- Glassmorphism/blur effects → use vaporwave-glassomorphic-ui-designer
- Windows 3.1 retro → use windows-3-1-web-designer
- Windows 95 retro → use windows-95-web-designer
- Soft shadows/neumorphism → use native-app-designer
- Subtle corporate design → use web-design-expert
- Gradient-heavy aesthetics → NOT neobrutalism
Neobrutalism vs Similar Styles
| 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 |
Core Design System
The Three Pillars of Neobrutalism
- Hard Shadows - Offset, no blur, usually black
- Bold Borders - Thick (2-4px) black strokes
- High Contrast - Primary colors against neutral backgrounds
Color Palette
| 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:
- ✅ Bold primaries with high saturation
- ✅ Black and white for maximum contrast
- ✅ Beige/cream for warmth without softness
- ❌ NO gradients (use flat colors only)
- ❌ NO transparency/opacity (stay opaque)
The Signature Hard Shadow
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);
}
Bold Border System
.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);
}
Typography
| 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;
}
Modern Extrapolations
SaaS Dashboard: The Gumroad Paradigm
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:
- Cards with hard shadows
- Bold section headers
- High-contrast data display
- Black borders on everything
- Flat, solid background colors
E-Commerce: The Raw Shopping Experience
.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);
}
Landing Page: Bold First Impressions
╔══════════════════════════════════════════════════════════════╗
║ ║
║ ████████ WE BUILD ║
║ ████████ BOLD ║
║ ████████ PRODUCTS ║
║ ║
║ ┌─────────────────────────────────────────────────────────┐║
║ │ │║
║ │ No more boring SaaS. We create tools that │║
║ │ stand out, work hard, and make you money. │║
║ │ │║
║ └─────────────────────────────────────────────────────────┘║
║ ║
║ ╔═══════════════════════════════════════╗ ║
║ ║ → START FREE TRIAL ║ ║
║ ╚═══════════════════════════════════════╝ ║
║ ║
╚══════════════════════════════════════════════════════════════╝
Responsive: Bold at Every Size
| 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);
}
Component Patterns
Buttons
.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;
}
Cards
.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);
}
Form Elements
.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;
}
Navigation
.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);
}
Anti-Patterns
Anti-Pattern: Soft Shadows
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
Anti-Pattern: Gradients
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.
Anti-Pattern: Rounded Corners Everywhere
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
Anti-Pattern: Thin Borders
Novice thinking: border: 1px solid #ddd
Reality: Neobrutalist borders are BOLD (3-4px) and BLACK
Instead: border: 3px solid #000000
Anti-Pattern: Low Contrast Colors
Novice thinking: Subtle pastels on white background Reality: Neobrutalism demands HIGH contrast Instead: Bold primaries (#FF5252, #FFEB3B) on white/black
Anti-Pattern: Transparency/Opacity
Novice thinking: background: rgba(255,255,255,0.8)
Reality: Neobrutalism is OPAQUE. No see-through elements.
Instead: background: #FFFFFF (solid, no alpha)
Anti-Pattern: Hover Blur Effects
Novice thinking: filter: blur(2px) on hover
Reality: Hover states in neobrutalism are physical (translate + shadow change)
Instead: transform: translate(-2px, -2px) + increased shadow
Quick Decision Tree
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
CSS Variables Template
: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);
}
The Quick Test
If your component has:
- ❌ Any blur in shadows → NOT neobrutalism
- ❌ Any gradients → NOT neobrutalism
- ❌ Transparency/opacity → NOT neobrutalism
- ❌ Thin (1px) borders → NOT neobrutalism
- ❌ Soft/muted colors → NOT neobrutalism
- ❌ Heavy border-radius (16px+) → NOT neobrutalism
It should have:
- ✅ Hard shadows (Xpx Ypx 0 #000)
- ✅ Bold borders (3-4px solid black)
- ✅ High contrast color combinations
- ✅ Flat, solid colors
- ✅ Bold typography
- ✅ Sharp or minimal corners
- ✅ Physical hover/active feedback
Accessibility Considerations
Despite its boldness, neobrutalism can be highly accessible:
- High contrast - Black borders on white/colored backgrounds pass WCAG
- Clear focus states - Shadow/border changes are obvious
- Readable typography - Large, bold text is easy to scan
- No motion dependency - Transforms are enhancers, not requirements
/* 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
/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 implementations
Pairs With
- web-design-expert - For brand direction alongside bold style
- color-contrast-auditor - Ensure accessibility with bold colors
- design-system-creator - For generating full design token systems
- typography-expert - For advanced type pairing
Sources
Design research based on:
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/neobrutalist-web-designer-mrx3xxvh/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/neobrutalist-web-designer-mrx3xxvh' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/neobrutalist-web-designer-mrx3xxvh/download' --output '.skill-downloads/neobrutalist-web-designer-mrx3xxvh/SKILL.md.part' && mv '.skill-downloads/neobrutalist-web-designer-mrx3xxvh/SKILL.md.part' '.skill-downloads/neobrutalist-web-designer-mrx3xxvh/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
Tools declared by the author (check availability in your agent): Read,Write,Edit,Glob,Grep
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/neobrutalist-web-designer-mrx3xxvh/SKILL.md' && test -s '.skill-downloads/neobrutalist-web-designer-mrx3xxvh/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/neobrutalist-web-designer' && cp -R '.skill-downloads/neobrutalist-web-designer-mrx3xxvh' '.claude/skills/neobrutalist-web-designer'Cursor
test -f '.skill-downloads/neobrutalist-web-designer-mrx3xxvh/SKILL.md' && test -s '.skill-downloads/neobrutalist-web-designer-mrx3xxvh/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/neobrutalist-web-designer' && cp -R '.skill-downloads/neobrutalist-web-designer-mrx3xxvh' '.cursor/skills/neobrutalist-web-designer'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/neobrutalist-web-designer-mrx3xxvh'openskills read 'neobrutalist-web-designer-mrx3xxvh'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/neobrutalist-web-designer-mrx3xxvh/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
React Hook Form Best Practices
Development
Master React Hook Form: avoid anti-patterns, manage subscriptions, and handle reset, dirty state, and controlled inputs correctly.
Emotion to Mantine Migration
Development
Migrate Emotion styled-components to Mantine components with style props and CSS modules. Use when converting .styled.tsx files or removing @emotion imports.
Scope Creep Detector
Development
Analyzes git diffs against a stated intent to detect scope creep, unrelated files, broad PRs, and oversized changes, then suggests keep, split, or justify actions.