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:
2px borders, 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
- 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-theme switching 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-y or 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-system
python3 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-system in layout-preserving mode; keep my current sections and apply a full design-system refactor."
- "Use
$neo-brutalist-ui-system in component-only mode and standardize button/card/input/dialog/dropdown/tabs to one tokenized style."
- "Use
$neo-brutalist-ui-system for my dashboard; keep the current IA, improve scanability, typography hierarchy, and interaction clarity."
1---2name: neo-brutalist-ui-system3description: Apply a reusable neo-brutalist design system to existing or new frontend projects (landing, marketing, portfolio, dashboard, app surfaces) using strong typography, tokenized theming, and variant-driven component primitives. Preserve existing information architecture unless restructuring is explicitly requested.4---56# Neo-Brutalist UI Design System Skill78Use this skill when users ask for bold, high-contrast UI refactors, reusable design systems, or full-page styling upgrades.910This skill is design-system-first, not template-first.11- Default behavior: preserve existing layout and content architecture.12- Rebuild layouts only when explicitly requested.1314## Core Principles1516- Typography drives hierarchy more than decoration.17- Strong structure: `2px` borders, explicit separators, deliberate spacing.18- Hard-edged surfaces: square corners by default on primary UI.19- Direct interactions: translate + shadow reduction for active states.20- Tokenize everything important (background/surface/text/border/accent/shadow).21- Reuse existing app theme when present; generate missing tokens only.2223## Design DNA Extraction (Required First Step)2425Before editing, extract project design DNA from codebase:26271. Global styling source28- find global CSS/theme entry (`app.css`, `globals.css`, `theme.css`).29- collect color variables, font declarations, theme toggling strategy.30312. Typography roles32- identify display/headline font, body font, technical/mono font, optional accent font.33- map where each role is used (hero, nav, cards, metadata, captions).34353. Primitive inventory36- locate core UI primitives (button, card, input, textarea, dialog, dropdown, tabs, tooltip, progress, avatar, separators).37- detect variant API style (`cva`, prop variants, class maps).38394. Layout rhythm40- identify section cadence (bordered slices, alternating surfaces, grid separators, CTA blocks).41- identify motion style (hover transitions, reveal animations, duration patterns).42435. Constraints44- preserve information architecture unless user asks for restructure.45- preserve brand tone and color intent unless user asks to rebrand.4647## Scope Modes4849- `component-only`: update tokens and primitive components only.50- `layout-preserving` (default): restyle existing pages, keep same sections/content flow.51- `layout-rebuild`: redesign section architecture (explicit user request required).5253## Reference Pattern Library (Derived from Lawn, Applied Generically)5455### Typography System56- Display/headlines:57 - very high weight (`800-900`)58 - tight tracking59 - uppercase for key headings/CTAs where tone supports it60- Body/support copy:61 - cleaner medium/regular weight62 - reduced contrast tone for secondary text63- Technical/meta text:64 - monospaced role for timestamps, metrics, status labels65- Optional accent typography:66 - serif or stylistic contrast font for specific emphasis only (not everywhere)6768### Token Model69Prefer this token family so output works across page types:70- `--background`, `--background-alt`71- `--surface`, `--surface-alt`, `--surface-strong`, `--surface-muted`72- `--foreground`, `--foreground-muted`, `--foreground-subtle`, `--foreground-inverse`73- `--border`, `--border-subtle`74- `--accent`, `--accent-hover`, `--accent-light`75- `--shadow-color`, `--shadow-accent`76- semantic tokens: `--destructive`, `--success`, `--warning`7778### Theme Behavior79- Support both light and dark token sets when the project already supports them.80- Use `data-theme` switching for deterministic theme control where possible.81- If project already persists theme state (local storage or framework state), preserve that flow.82- Do not force dark mode redesigns on light-first products unless requested.8384### Primitive Patterns85- Buttons:86 - bold label, often uppercase87 - `border-2`88 - hard shadow89 - hover/active translate by `1-2px`90- Cards:91 - strong border + structured internal header/content/footer spacing92 - title emphasis via weight/tracking, not ornament93- Inputs/Textareas:94 - hard-edged, border-forward, clear focus border/shadow95 - mono/meta-friendly when context is technical96- Overlay components (dialog/dropdown/tooltip):97 - maintain Radix accessibility behavior98 - apply same border/shadow vocabulary as core surfaces99- Data components (tabs/progress/badges):100 - high-legibility state contrast101 - avoid soft/ambiguous state styling102- Exception rule:103 - circular avatars are allowed when functionally expected.104105### Layout Patterns106Apply across landing/marketing/portfolio/dashboard:107- Section rhythm via border dividers and controlled spacing blocks.108- Grid separators (`divide-x`/`divide-y` or explicit borders) for feature/data matrices.109- Contrast bands (light vs dark or muted vs strong surfaces) to define narrative steps.110- CTA zones with the strongest type/contrast, not necessarily the loudest color.111- Dashboard/application screens prioritize utility clarity over marketing theatrics.112113### Motion Patterns114- Use fast, explicit transitions (`120-200ms`) for hover/active state changes.115- Use 1-2 meaningful entrance/reveal patterns max.116- Avoid decorative animation noise that does not improve hierarchy or feedback.117118## Workflow119120### 1. Choose Intent + Scope121- Define one-line aesthetic intent (example: "industrial editorial", "clean blocky utility").122- Choose scope mode (default `layout-preserving`).123124### 2. Establish/Map Tokens125- If project already has tokens: map to the token model above and keep naming conventions.126- If project lacks tokens: generate with script, then integrate.127128Script:129`python3 scripts/generate_blocky_palette.py --base "<hex>" --accent "<hex>" --format both`130131### 3. Refactor Primitives First132- Update primitives before page-level classes.133- Prefer variant APIs over one-off per-page styles.134- Keep class composition consistent (`cva` + shared util) when stack supports it.135136### 4. Apply to Layouts137- `layout-preserving`: restyle existing sections without changing narrative/order.138- `layout-rebuild`: propose new architecture first, then implement after alignment.139- For dashboards/apps: emphasize information density control and scanability.140- For landing/marketing/portfolio: emphasize hierarchy and narrative rhythm.141142### 5. QA Pass143- Responsiveness: no broken borders/overlaps at mobile/tablet/desktop.144- Contrast: readable foreground/background across light and dark contexts.145- Interaction: focus-visible states are clear; hover/active states remain intentional.146- Consistency: primitives and page sections use same token/shadow/border language.147148## Output Contract149150Return:151- Design DNA summary (fonts, token map, primitive inventory, layout rhythm found).152- Changes implemented (primitives and/or layouts) with preserved vs rebuilt statement.153- Token block updates (or mapping strategy when existing theme is reused).154- Short rationale on hierarchy, readability, and interaction clarity.155156## Script Usage After Install157158When installed, the script is bundled in this skill:159- Agent run pattern:160 - `python3 scripts/generate_blocky_palette.py --base "<hex>" --accent "<hex>" --format both`161- Manual run pattern:162 - `cd <installed-skill-path>/neo-brutalist-ui-system`163 - `python3 scripts/generate_blocky_palette.py --base "#f2f1eb" --accent "#2f5f3a" --format both`164165Use script output as source-of-truth tokens, then map into project naming if needed.166167## Example Prompts168169- "Use `$neo-brutalist-ui-system` in `layout-preserving` mode; keep my current sections and apply a full design-system refactor."170- "Use `$neo-brutalist-ui-system` in `component-only` mode and standardize button/card/input/dialog/dropdown/tabs to one tokenized style."171- "Use `$neo-brutalist-ui-system` for my dashboard; keep the current IA, improve scanability, typography hierarchy, and interaction clarity."