skills/maximalist-web-design/SKILL.md
--- --- license: Apache-2.0 name: maximalist-web-design description: Maximalism as a web design philosophy — more is more. Dense information layouts, layered visual elements, mixed typography, bold color clashes, colliding grids, pattern-on-pattern, and the deliberate rejection of minimalist web conventions. Covers Bloomberg Terminal aesthetic, MySpace nostalgia, Japanese web density, and horror vacui. Activate on 'maximalist web', 'dense layout', 'information-dense', 'anti-minimalist', 'more is
npx skillsauth add curiositech/windags-skills skills/maximalist-web-designInstall 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 web experiences that embrace density, richness, and visual abundance. Maximalism is the deliberate, skilled rejection of "less is more" — it argues that more is more, that empty space is wasted space, and that visual complexity can be navigated when properly orchestrated.
If viewport width > 1200px:
└── If user is data-focused (trading, analytics, dashboards):
├── Info density > 80% of screen → Use micro-cards (8px padding, 0.75rem text)
└── Info density 60-80% → Use dense grid (4px gaps, 180px min-width)
└── If user is content-browsing (portfolio, editorial):
├── Visual impact priority → Use layered cards with 20-30% overlap
└── Readability priority → Use column layouts with 1.5rem gaps
If viewport width 768-1199px:
└── Reduce density by 30%:
├── Collapse sidebars to icons
└── Switch to 2-column max grid
If viewport width < 768px:
└── Single column, increase touch targets to 44px minimum
If concurrent animations > 3 in viewport:
└── Reduce to maximum 2 moving elements simultaneously
If animation duration > 1.5 seconds:
└── Add pause-on-hover for user control
If user has motion sensitivity:
└── Replace with CSS transitions (duration < 0.3s)
└── Use transform/opacity only (avoid layout thrash)
If background-foreground contrast < 4.5:1:
└── Add semi-transparent overlay behind text
└── Or switch to high-contrast color pair from palette
If using > 5 colors in single component:
└── Assign semantic roles (primary, secondary, accent, neutral, warning)
└── Test accessibility with color blindness simulator
If colors feel chaotic (user feedback):
└── Create color zones - group related content in same hue family
└── Use 70-25-5 rule: 70% dominant, 25% secondary, 5% accent
Symptoms: Multiple elements animating simultaneously, rapid flashing effects, no pause controls
Detection: If > 3 elements moving at once OR any flash rate > 3Hz OR no prefers-reduced-motion support
Fix: Limit to 2 concurrent animations max, add pause-on-hover, implement motion reduction query
Symptoms: Users complain about readability, text blends into busy backgrounds, low engagement with content Detection: Contrast ratio < 4.5:1, text smaller than 14px on dense backgrounds, color-on-color conflicts Fix: Add semi-transparent backdrop behind text, increase font weight, switch to high-contrast color pairs
Symptoms: Users can't find key actions, everything looks equally important, high bounce rate Detection: No clear visual hierarchy (squint test fails), all elements same size/weight, no color zones Fix: Implement 4:1 size ratio between headline/body, create color-coded sections, add opacity layers (1.0/0.7/0.4)
Symptoms: Frustrated mobile users, accidental taps, unusable on touch devices Detection: Interactive elements < 44px on mobile, hover-dependent interactions, desktop-only density Fix: Increase mobile touch targets to 44px minimum, add mobile-specific spacing, implement progressive density
Scenario: Financial trading platform needs maximum information density while maintaining split-second usability.
Initial Assessment: User needs to monitor 50+ data points simultaneously, primary device is desktop with large monitors, users are expert-level traders comfortable with density.
Design Decisions:
Implementation Strategy:
.trading-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
gap: 2px;
padding: 4px;
height: 100vh;
overflow-y: auto;
}
.price-card {
background: #1E1E1E;
border: 1px solid #2A2A2A;
padding: 6px;
font-family: 'IBM Plex Mono', monospace;
font-size: 0.7rem;
}
.price-change {
transition: background-color 0.3s ease;
}
Trade-offs Made:
Scenario: Creative professional wants a personal portfolio that captures early 2000s web energy while showcasing modern work.
Initial Assessment: Content is mixed (images, text, video), audience is creative peers who appreciate boldness, primary goal is memorable impression over usability.
Design Decisions:
Chaos Control Tactics:
Critical Problem Solved: How to make maximalism feel intentional, not accidental Solution: Used mathematical relationships (20% overlap, 4:1 ratios, 70-25-5 color distribution) to create order within chaos
prefers-reduced-motion query implemented and testedDo NOT use maximalist-web-design for:
Delegate to other skills when:
data-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.