skills/neobrutalist-web-designer/SKILL.md
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 skillsauth add curiositech/windags-skills neobrutalist-web-designerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
Button States:
├── Primary CTA → Yellow bg + 3px black border + 4px hard shadow
├── Secondary → White bg + 3px black border + 4px hard shadow
├── Danger → Red bg + 3px black border + 4px hard shadow
└── Ghost → Transparent bg + 3px black border + no shadow
Card Hierarchy:
├── Hero card → Bold accent color bg + 4px border + 8px shadow
├── Content card → White bg + 3px border + 6px shadow
├── Data card → Cream bg + 3px border + 4px shadow
└── Inline card → White bg + 2px border + 3px shadow
Input Focus States:
├── Default → White bg + 3px black border + no shadow
├── Focus → White bg + 3px black border + 4px shadow
├── Error → White bg + 3px red border + 4px red shadow
└── Success → White bg + 3px green border + 4px green shadow
Layout Container Choices:
├── Page hero → Full-width solid color + no border
├── Content section → Max-width + 4px bottom border
├── Sidebar → Solid bg + 4px right border
└── Modal → White bg + 4px border + 12px shadow
Text Purpose:
├── Hero headline → Archivo Black + 4-8rem + uppercase + -2% letter-spacing
├── Section header → Archivo Black + 2-3rem + uppercase
├── Body text → Space Grotesk + 1.125rem + normal case
├── Button text → Archivo Black + 1rem + uppercase
├── Form labels → Space Grotesk + 0.875rem + bold + uppercase
└── Code/data → JetBrains Mono + 0.875rem + normal case
Context Modifiers:
├── SaaS dashboard → More readable fonts, less extreme sizing
├── Landing page → Maximum impact fonts, oversized headlines
├── E-commerce → Product names bold, prices in display font
└── Blog/content → Prioritize readability with geometric sans
Screen Size:
├── Mobile (<640px) → 2px borders + 3px shadows
├── Tablet (640-1024px) → 3px borders + 4px shadows
├── Desktop (1024-1440px) → 4px borders + 6px shadows
└── Large (>1440px) → 4px borders + 8px shadows
Element Importance:
├── Hero elements → +2px to standard shadow
├── Interactive elements → Standard shadow + hover growth
├── Background cards → -1px from standard shadow
└── Decorative elements → Half standard shadow
Symptom: Using box-shadow: 0 4px 6px rgba(0,0,0,0.1) with blur
Detection rule: If you see ANY blur value > 0 in shadows
Diagnosis: Applying generic web design instead of neobrutalism
Fix: Replace with box-shadow: 4px 4px 0 #000000 (offset, no blur)
Symptom: Adding linear-gradient() or radial-gradient() backgrounds
Detection rule: If you see ANY gradient in CSS
Diagnosis: Trying to "soften" the aesthetic with blending
Fix: Pick ONE solid color per element. Embrace the flatness completely.
Symptom: Using border: 1px solid #ddd or similar thin borders
Detection rule: If border width < 2px or color is not high-contrast
Diagnosis: Fear of visual weight, defaulting to subtle design
Fix: Use border: 3px solid #000000 minimum. Bold borders define neobrutalism.
Symptom: Every element has different shadow directions/sizes randomly Detection rule: If >3 different shadow patterns exist on same screen Diagnosis: Inconsistent design system application Fix: Standardize to 2-3 shadow sizes maximum. Same direction (4px 4px) everywhere.
Symptom: Using muted pastels (#F0F0F0, #E8E8E8) instead of bold colors
Detection rule: If background colors have <7:1 contrast ratio with text
Diagnosis: Avoiding visual tension that defines the aesthetic
Fix: Use true primaries (#FF5252, #FFEB3B) with black/white text for maximum contrast.
Before (Generic Card):
.product-card {
background: #fff;
border: 1px solid #e1e5e9;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0,0,0,0.08);
padding: 16px;
}
Decision Process:
After (Neobrutalist Card):
.neo-product-card {
background: #FFFFFF;
border: 3px solid #000000;
border-radius: 4px; /* Minimal softening */
box-shadow: 6px 6px 0 #000000; /* Hard shadow */
padding: 1rem;
transition: all 0.1s ease;
}
.neo-product-card:hover {
box-shadow: 8px 8px 0 #000000;
transform: translate(-2px, -2px); /* Physical movement */
}
What novice misses: The hover state needs physical feedback (transform) + shadow growth, not just color changes.
Problem: Designer used 6 different shadow patterns across dashboard components.
Failure symptoms detected:
box-shadow: 2px 4px 0 #000box-shadow: 4px 4px 0 #000box-shadow: 8px 12px 0 #000box-shadow: 3px 3px 0 #000box-shadow: 6px 6px 0 #000box-shadow: 1px 2px 0 #000Decision process:
Solution:
/* Standardized shadow system */
:root {
--shadow-hero: 8px 8px 0 #000000; /* Modals, hero cards */
--shadow-standard: 6px 6px 0 #000000; /* Regular cards, buttons */
--shadow-subtle: 3px 3px 0 #000000; /* Small elements, tooltips */
}
Result: Visual hierarchy became clear, design felt cohesive instead of chaotic.
Challenge: Show error/success states without soft styling.
Novice approach: Red text color change only Expert approach: Color + border + shadow coordination
/* Base input */
.neo-input {
background: #FFFFFF;
border: 3px solid #000000;
padding: 0.75rem 1rem;
box-shadow: none;
}
/* Focus state */
.neo-input:focus {
box-shadow: 4px 4px 0 #000000;
outline: none;
}
/* Error state - coordinated red theme */
.neo-input--error {
border-color: #FF5252;
box-shadow: 4px 4px 0 #FF5252;
}
/* Success state - coordinated green theme */
.neo-input--success {
border-color: #4CAF50;
box-shadow: 4px 4px 0 #4CAF50;
}
What expert catches: Error states need FULL visual coordination (border + shadow color match), not just text color changes.
Do NOT use neobrutalist-web-designer for:
vaporwave-glassomorphic-ui-designer insteadwindows-3-1-web-designer or windows-95-web-designernative-app-designer insteadweb-design-expert insteadaccessibility-first-designer insteaddata-visualization-expert insteadDelegate to other skills when user asks for:
web-design-expertaccessibility-first-designervaporwave-glassomorphic-ui-designerwindows-95-web-designerdata-visualization-expertdata-ai
license: Apache-2.0 NOT for unrelated tasks outside this domain.
development
Use when designing caching strategies (cache-aside, write-through, write-behind), implementing distributed locks, building rate limiters, leaderboards, real-time streams (XADD/consumer groups), pub/sub, or tuning eviction policies. Triggers: thundering-herd on cache miss, dogpile on key expiry, Redlock vs SET-NX-PX choice, sliding-window rate limiter, hot-key on a single cluster slot, big-key blowup, MULTI/EXEC across slots, KEYS in production. NOT for Redis Cluster operations/admin (different domain), embedded KV (SQLite, leveldb), in-process LRU caches, or Memcached.
tools
Drawing the `'use client'` boundary correctly in React Server Components apps (Next.js App Router, RSC frameworks) — leaf-pushing, slot composition, serialization rules, and environment poisoning prevention. Grounded in react.dev and Next.js 16 docs.
development
Use when designing rate limiting for an API, choosing between token bucket / sliding window / leaky bucket / fixed window, implementing it in Redis, deciding edge (Cloudflare/Upstash) vs origin enforcement, sizing per-user vs per-IP vs per-endpoint quotas, returning the right 429 response with Retry-After, or fixing the boundary-burst bug in fixed-window limiters. Triggers: 429 too many requests, INCR + EXPIRE, ZADD + ZREMRANGEBYSCORE + ZCARD, X-RateLimit-Remaining header, Cloudflare WAF rate limiting rules, Upstash @upstash/ratelimit, leaky bucket shaping vs policing, distributed rate limiter consistency. NOT for DDoS mitigation specifically (different scale), CAPTCHA / bot management, full WAF design, or per-user quota billing.