skills/vaporwave-glassomorphic-ui-designer/SKILL.md
Vaporwave + glassomorphic UI designer for photo/memory apps. Masters SwiftUI Material effects, neon pastels, frosted glass blur, retro-futuristic design. Expert in 2025 UI trends (glassmorphism, neubrutalism, Y2K), iOS HIG, dark mode, accessibility, Metal shaders. Activate on 'vaporwave', 'glassmorphism', 'SwiftUI design', 'frosted glass', 'neon aesthetic', 'retro-futuristic', 'Y2K design'. NOT for backend/API (use backend-architect), Windows 3.1 retro (use windows-3-1-web-designer), generic web (use web-design-expert), non-photo apps (use native-app-designer).
npx skillsauth add curiositech/windags-skills vaporwave-glassomorphic-ui-designerInstall 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.
Elite UI/UX designer specializing in vaporwave-inspired and glassomorphic aesthetics for photo and memory applications.
Photo content density assessment:
├── High photo density (grid, carousel)
│ ├── Use .ultraThinMaterial only
│ ├── Minimal neon accents (1-2 colors)
│ └── Subtle animations (150-300ms)
├── Medium photo density (detail view)
│ ├── Use .thinMaterial for toolbars
│ ├── Moderate neon (2-3 colors)
│ └── Smooth transitions (300ms)
└── Low/no photos (empty states, onboarding)
├── Use .regularMaterial freely
├── Full vaporwave palette (4+ colors)
└── Dramatic animations (500-1000ms)
User context assessment:
├── First-time user
│ ├── Warm pastels (sunset gradient)
│ ├── Bouncy springs (0.5 response, 0.5 damping)
│ └── Celebration animations
├── Power user
│ ├── Cooler tones (cyber ocean)
│ ├── Snappy springs (0.3 response, 0.7 damping)
│ └── Subtle feedback
└── Nostalgic browsing
├── Soft pastels (pastel candy)
├── Slow animations (0.8 response, 0.6 damping)
└── Dreamy transitions
Accessibility compliance:
├── If reduceTransparency enabled
│ ├── Replace materials with solid colors
│ └── Maintain 4.5:1 contrast ratio
├── If reduceMotion enabled
│ ├── Replace springs with linear
│ └── Duration < 200ms
└── If prefersCrossFadeTransitions
├── Use opacity changes only
└── No transform animations
Symptoms: UI feels muddy, text unreadable, photos lose impact Detection: If blur radius > 20pt OR contrast ratio < 3:1 Fix: Reduce blur by 25%, add subtle border, use thicker material
Symptoms: Eye strain, competing with photo content, accessibility failures Detection: If > 3 neon colors visible simultaneously OR brightness > 80% Fix: Limit to 2 accent colors max, reduce saturation by 20%, use gradients sparingly
Symptoms: Motion sickness, sluggish feel, conflicting animations Detection: If spring response > 0.8 OR multiple overlapping animations Fix: Standardize to 3 spring presets, stagger animation starts by 50ms
Symptoms: UI elements blend together, no visual depth, poor usability Detection: If adjacent elements use same material thickness Fix: Follow strict hierarchy: critical=thick, floating=ultraThin, ensure 2-step difference
Symptoms: Dropped frames, thermal throttling, battery drain Detection: If frame rate < 55fps OR custom shaders without LOD Fix: Use system materials first, cache complex renders, implement detail reduction
Scenario: First launch of photo memories app, no content yet
Decision Process:
Implementation:
VStack(spacing: 32) {
// Hero illustration with glass backdrop
ZStack {
Circle()
.fill(.regularMaterial)
.frame(width: 200, height: 200)
.overlay(
Image(systemName: "photo.stack.fill")
.font(.system(size: 64))
.foregroundStyle(.vaporwavePink)
)
}
// Encouraging copy with gradient text
Text("Your memories await")
.font(.largeTitle.weight(.bold))
.foregroundStyle(
LinearGradient(
colors: [.vaporwavePink, .vaporwavePurple],
startPoint: .leading,
endPoint: .trailing
)
)
// Primary CTA with bouncy interaction
Button("Start Your Collection") { }
.buttonStyle(BouncyNeonButton())
.spring(response: 0.5, dampingFraction: 0.6)
}
What novice misses: Would use cold blues, harsh shadows, system button What expert catches: Warm welcome colors, soft materials, encouraging micro-copy
Scenario: User viewing photo with metadata overlay
Decision Process:
Implementation:
ZStack(alignment: .bottom) {
// Full-screen photo (hero content)
AsyncImage(url: photoURL)
.aspectRatio(contentMode: .fill)
// Subtle metadata overlay
VStack(alignment: .leading) {
Text(photo.title)
.font(.headline.weight(.semibold))
Text(photo.date.formatted())
.font(.caption)
.opacity(0.8)
}
.frame(maxWidth: .infinity, alignment: .leading)
.padding(20)
.background(.ultraThinMaterial)
.clipShape(RoundedRectangle(cornerRadius: 16, style: .continuous))
.padding(.horizontal, 16)
}
What novice misses: Would use thick material blocking photo, bright text competing What expert catches: Ultra-thin material preserves photo beauty, gentle text hierarchy
Do NOT use this skill for:
backend-architect insteadwindows-3-1-web-designer insteadweb-design-expert insteadnative-app-designer insteaddesign-system-creator insteadandroid-material-designer insteaddesktop-app-designer insteadDelegate 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.