neo-brutalist-ui-system
Neo-Brutalist UI Design System Skill
Use this skill when users ask for bold, high-contrast UI refactors, reusable design systems, or full-page styling upgrades.
This skill is design-system-first, not template-first.
- Default behavior: preserve existing layout and content architecture.
- Rebuild layouts only when explicitly requested.
Core Principles
- Typography drives hierarchy more than decoration.
- Strong structure:
2pxborders, explicit separators, deliberate spacing. - Hard-edged surfaces: square corners by default on primary UI.
- Direct interactions: translate + shadow reduction for active states.
- Tokenize everything important (background/surface/text/border/accent/shadow).
- Reuse existing app theme when present; generate missing tokens only.
Design DNA Extraction (Required First Step)
Before editing, extract project design DNA from codebase:
- Global styling source
- find global CSS/theme entry (
app.css,globals.css,theme.css). - collect color variables, font declarations, theme toggling strategy.
- Typography roles
- identify display/headline font, body font, technical/mono font, optional accent font.
- map where each role is used (hero, nav, cards, metadata, captions).
- Primitive inventory
- locate core UI primitives (button, card, input, textarea, dialog, dropdown, tabs, tooltip, progress, avatar, separators).
- detect variant API style (
cva, prop variants, class maps).
- Layout rhythm
- identify section cadence (bordered slices, alternating surfaces, grid separators, CTA blocks).
- identify motion style (hover transitions, reveal animations, duration patterns).
- Constraints
- preserve information architecture unless user asks for restructure.
- preserve brand tone and color intent unless user asks to rebrand.
Scope Modes
component-only: update tokens and primitive components only.layout-preserving(default): restyle existing pages, keep same sections/content flow.layout-rebuild: redesign section architecture (explicit user request required).
Reference Pattern Library (Derived from Lawn, Applied Generically)
Typography System
- Display/headlines:
- very high weight (
800-900) - tight tracking
- uppercase for key headings/CTAs where tone supports it
- very high weight (
- Body/support copy:
- cleaner medium/regular weight
- reduced contrast tone for secondary text
- Technical/meta text:
- monospaced role for timestamps, metrics, status labels
- Optional accent typography:
- serif or stylistic contrast font for specific emphasis only (not everywhere)
Token Model
Prefer this token family so output works across page types:
--background,--background-alt--surface,--surface-alt,--surface-strong,--surface-muted--foreground,--foreground-muted,--foreground-subtle,--foreground-inverse--border,--border-subtle--accent,--accent-hover,--accent-light--shadow-color,--shadow-accent- semantic tokens:
--destructive,--success,--warning
Theme Behavior
- Support both light and dark token sets when the project already supports them.
- Use
data-themeswitching for deterministic theme control where possible. - If project already persists theme state (local storage or framework state), preserve that flow.
- Do not force dark mode redesigns on light-first products unless requested.
Primitive Patterns
- Buttons:
- bold label, often uppercase
border-2- hard shadow
- hover/active translate by
1-2px
- Cards:
- strong border + structured internal header/content/footer spacing
- title emphasis via weight/tracking, not ornament
- Inputs/Textareas:
- hard-edged, border-forward, clear focus border/shadow
- mono/meta-friendly when context is technical
- Overlay components (dialog/dropdown/tooltip):
- maintain Radix accessibility behavior
- apply same border/shadow vocabulary as core surfaces
- Data components (tabs/progress/badges):
- high-legibility state contrast
- avoid soft/ambiguous state styling
- Exception rule:
- circular avatars are allowed when functionally expected.
Layout Patterns
Apply across landing/marketing/portfolio/dashboard:
- Section rhythm via border dividers and controlled spacing blocks.
- Grid separators (
divide-x/divide-yor explicit borders) for feature/data matrices. - Contrast bands (light vs dark or muted vs strong surfaces) to define narrative steps.
- CTA zones with the strongest type/contrast, not necessarily the loudest color.
- Dashboard/application screens prioritize utility clarity over marketing theatrics.
Motion Patterns
- Use fast, explicit transitions (
120-200ms) for hover/active state changes. - Use 1-2 meaningful entrance/reveal patterns max.
- Avoid decorative animation noise that does not improve hierarchy or feedback.
Workflow
1. Choose Intent + Scope
- Define one-line aesthetic intent (example: "industrial editorial", "clean blocky utility").
- Choose scope mode (default
layout-preserving).
2. Establish/Map Tokens
- If project already has tokens: map to the token model above and keep naming conventions.
- If project lacks tokens: generate with script, then integrate.
Script:
python3 scripts/generate_blocky_palette.py --base "<hex>" --accent "<hex>" --format both
3. Refactor Primitives First
- Update primitives before page-level classes.
- Prefer variant APIs over one-off per-page styles.
- Keep class composition consistent (
cva+ shared util) when stack supports it.
4. Apply to Layouts
layout-preserving: restyle existing sections without changing narrative/order.layout-rebuild: propose new architecture first, then implement after alignment.- For dashboards/apps: emphasize information density control and scanability.
- For landing/marketing/portfolio: emphasize hierarchy and narrative rhythm.
5. QA Pass
- Responsiveness: no broken borders/overlaps at mobile/tablet/desktop.
- Contrast: readable foreground/background across light and dark contexts.
- Interaction: focus-visible states are clear; hover/active states remain intentional.
- Consistency: primitives and page sections use same token/shadow/border language.
Output Contract
Return:
- Design DNA summary (fonts, token map, primitive inventory, layout rhythm found).
- Changes implemented (primitives and/or layouts) with preserved vs rebuilt statement.
- Token block updates (or mapping strategy when existing theme is reused).
- Short rationale on hierarchy, readability, and interaction clarity.
Script Usage After Install
When installed, the script is bundled in this skill:
- Agent run pattern:
python3 scripts/generate_blocky_palette.py --base "<hex>" --accent "<hex>" --format both
- Manual run pattern:
cd <installed-skill-path>/neo-brutalist-ui-systempython3 scripts/generate_blocky_palette.py --base "#f2f1eb" --accent "#2f5f3a" --format both
Use script output as source-of-truth tokens, then map into project naming if needed.
Example Prompts
- "Use
$neo-brutalist-ui-systeminlayout-preservingmode; keep my current sections and apply a full design-system refactor." - "Use
$neo-brutalist-ui-systemincomponent-onlymode and standardize button/card/input/dialog/dropdown/tabs to one tokenized style." - "Use
$neo-brutalist-ui-systemfor my dashboard; keep the current IA, improve scanability, typography hierarchy, and interaction clarity."
More from devfirexyz/ui-skills
dexiejs
Build and maintain Dexie.js data layers for IndexedDB-backed offline-first web applications. Use when tasks involve Dexie setup, schema/index design, CRUD/query implementation, transactions, live queries, migrations, or debugging in Vanilla JS, React, Next.js, TanStack Start, Svelte, or SvelteKit.
42inference-agent-ui
Build agent chat interfaces with ui.inference.sh in React or Next.js projects using shadcn registry components (Agent, Thread, PromptInput, Response, Tool, and widgets). Use for tasks involving AI chat UX implementation, tool-driven widget rendering, Vercel AI SDK stream protocol wiring, or inference.sh runtime uiTransform integration.
3