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:
tools
Building resilient distributed systems with circuit breakers, retries with full-jitter exponential backoff, retry budgets (per-request 3-attempt + per-client 10% ratio per Google SRE), deadline propagation, and the cascading-failure math (4 layers × 3 retries = 64x amplification). Grounded in Resilience4j, Microsoft Cloud Patterns, AWS Architecture Blog (Marc Brooker), and Google SRE Book.
testing
Designing HTTP cache headers that work correctly across browsers, CDNs, and shared proxies — `Cache-Control` directives per RFC 9111, `stale-while-revalidate` and `stale-if-error` per RFC 5861, the Vary header for varying responses, and surrogate keys for tag-based purging. Grounded in IETF RFCs and Cloudflare/Fastly docs.
development
Use when designing or fixing a Content Security Policy on a real site, choosing between nonce-based and hash-based CSP, adding strict-dynamic, debugging "Refused to execute inline script" errors, deploying CSP in report-only mode first, configuring report-to / report-uri, or auditing an existing policy for unsafe-inline / unsafe-eval / wildcards. Triggers: "CSP blocks legitimate inline script", strict-dynamic, nonce-{RANDOM}, sha256-{HASH}, object-src none, base-uri none, frame-ancestors, Trusted Types, X-Content-Security-Policy obsolete, report-only vs enforced. NOT for general HTTP security headers (HSTS, COOP/COEP), Trusted Types deep dive, CORS configuration, or building a WAF.
tools
Choosing and operating an HTTP API versioning strategy that doesn't break clients — Stripe's date-based pinned versions, the Deprecation/Sunset header pair (RFC 9745 + RFC 8594), URI vs header vs media-type approaches, and the version-transformer pattern. Grounded in Stripe's published architecture and IETF RFCs.