skills/collage-web-design/SKILL.md
Collage as a web design aesthetic — overlapping elements, mixed media, cut-out shapes, scrapbook layouts, and editorial magazine spreads adapted for the web. CSS techniques for layered compositions using z-index stacking, clip-path, mix-blend-mode, parallax layering, and grid-breaking layouts. Activate on 'collage web', 'editorial layout', 'magazine layout', 'overlapping elements', 'scrapbook', 'cut-out aesthetic', 'mixed media web', 'layered composition', 'grid-breaking', 'editorial web design', 'fashion website layout', 'David Carson'. NOT for photo collage/gallery grids (use collage-layout-expert), maximalist density (use maximalist-web-design), neobrutalism (use neobrutalist-web-designer).
npx skillsauth add curiositech/windags-skills collage-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 with overlapping, layered, grid-breaking compositions inspired by editorial magazine spreads, scrapbooks, and mixed-media art. This is not about photo gallery grids — it is about the aesthetic of intentional visual overlap, cut-out shapes, blend modes, and typography-as-imagery that breaks the rectangular monotony of standard web layouts.
Background Analysis:
├── Dark background (< 40% lightness)
│ ├── Text over image → mix-blend-mode: difference (always readable)
│ ├── Image over image → mix-blend-mode: screen (brightens overlap)
│ └── Accent color → mix-blend-mode: lighten (preserves vibrancy)
├── Light background (> 60% lightness)
│ ├── Image overlay → mix-blend-mode: multiply (darkens where overlap)
│ ├── Text emphasis → mix-blend-mode: color-burn (high contrast)
│ └── Subtle blend → mix-blend-mode: soft-light (gentle interaction)
└── Mixed/variable background
└── Test all blends → Use normal as fallback for accessibility
If primary content (text, CTA, navigation):
z-index: 100+
│
├── If overlapping decorative elements
│ └── Decorative z-index: 1-50, pointer-events: none
│
└── If background elements
└── Background z-index: -1 to 0
If equal importance elements:
Use transform: translateZ() for 3D layering instead
│
└── More important visually = higher translateZ value
Overlap Assessment:
├── Text over image?
│ ├── High contrast image → Add semi-transparent background
│ ├── Low contrast image → Use mix-blend-mode: difference
│ └── Busy image → Clip-path image to create clear text areas
├── Image over image?
│ ├── Similar tones → Use contrasting blend mode (multiply/screen)
│ ├── Different subjects → Partial overlap (30-60% maximum)
│ └── Same subject → Full blend with multiply/overlay
└── Element over interactive content?
└── pointer-events: none on overlay OR restructure layout
Screen Width < 768px:
├── Heavy overlaps (>50% area coverage)
│ └── Convert to vertical stack, remove overlaps
├── Light overlaps (<30% area coverage)
│ ├── Maintain 1-2 subtle overlaps for personality
│ └── Reduce rotation angles to 1-2 degrees
├── Blend modes
│ └── Disable (set to normal) — mobile performance + accessibility
└── Clip-paths
├── Simple shapes → Keep
└── Complex polygons → Simplify or remove
Symptom: Nothing stands out, text disappears, users can't find key content Detection: If >70% of viewport has overlapping elements, you've hit this Fix: Establish clear focal hierarchy — 1 primary element, 2-3 supporting, rest background
Symptom: Text becomes unreadable on certain backgrounds, dark-on-dark or light-on-light
Detection: Test by setting all blend modes to normal — if text disappears, you have contrast loss
Fix: Add CSS fallbacks: mix-blend-mode: multiply; @supports not (mix-blend-mode: multiply) { background: rgba(255,255,255,0.9); }
Symptom: Elements flicker, appear/disappear on hover, or stack incorrectly across components
Detection: If z-index values exceed 1000 or you use z-index: 99999, you have z-index chaos
Fix: Implement consistent z-index scale: decorative (1-50), content (51-100), modals (101-200)
Symptom: Collage becomes unusable on mobile — text covered, buttons unreachable
Detection: If mobile bounce rate >20% higher than desktop, check overlap accessibility
Fix: Use @media (max-width: 768px) to flatten overlaps into readable linear flow
Symptom: Screen readers can't access content, text selection broken, focus indicators disappear
Detection: If clip-path applied to containers with interactive content or text
Fix: Apply clip-path only to <img> tags and decorative elements, never to text containers
Scenario: Fashion brand wants editorial magazine spread as hero section
Step 1 - Analyze Reference: Magazine spread has: large model photo (60% width), overlapping text block (30% width), small accent photo (20% width), handwritten annotation
Step 2 - Choose Blend Mode:
Light background → Primary image uses mix-blend-mode: multiply for text overlay
Accent photo uses mix-blend-mode: screen for ghostly effect
Step 3 - Z-Index Hierarchy:
.hero-main-image { z-index: 1; } /* Foundation */
.hero-accent-image { z-index: 2; } /* Supporting */
.hero-text-block { z-index: 3; } /* Key content */
.hero-annotation { z-index: 4; } /* Accent detail */
Step 4 - Overlap Testing:
Text block overlaps 40% with main image — add subtle background: background: rgba(247, 243, 238, 0.95);
Expert catches: Novice would apply blend mode to text container → illegible. Expert applies blend mode to images only, ensures text has background for contrast.
Step 5 - Mobile Restructure:
@media (max-width: 768px) {
.hero-main-image { position: static; width: 100%; }
.hero-text-block { position: static; transform: none; background: white; }
.hero-accent-image { width: 60%; transform: rotate(2deg); }
}
pointer-events: nonemix-blend-mode correctly (not causing contrast loss)This skill should NOT be used for:
collage-layout-expert instead (different "collage" meaning)maximalist-web-design for density without artistic overlapweb-design-expert for structured layoutsneobrutalist-web-designer for bold geometric approachesvaporwave-glassomorphic-ui-designer for translucent layeringDelegate to other skills when:
maximalist-web-designweb-design-experttypography-expertvaporwave-glassomorphic-ui-designerdata-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.