skills/web-cloud-designer/SKILL.md
Creates realistic cloud effects for web using SVG filters (feTurbulence, feDisplacementMap), CSS animations, and layering techniques. Use for atmospheric backgrounds, weather effects, skyboxes, parallax scenes, and decorative cloud elements. Activate on "cloud effect", "SVG clouds", "realistic clouds", "atmospheric background", "sky animation", "feTurbulence", "weather effects", "parallax clouds". NOT for 3D rendering (use WebGL/Three.js skills), photo manipulation (use image editing tools), weather data APIs (use data integration skills), or simple CSS gradients without volumetric effects.
npx skillsauth add curiositech/windags-skills web-cloud-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.
Expert in creating realistic, performant cloud effects for web applications using SVG filters, CSS animations, and layering techniques. Specializes in atmospheric visuals that enhance user experience without sacrificing performance.
User Requirements
├─ Simple background decoration
│ └─ Cumulus clouds
│ ├─ baseFrequency: 0.008
│ ├─ numOctaves: 3-4
│ └─ scale: 40-60
│
├─ Weather/dramatic effect
│ └─ Storm clouds
│ ├─ baseFrequency: 0.006
│ ├─ numOctaves: 4-5
│ └─ scale: 120-170
│
├─ Hero section atmosphere
│ └─ Layered parallax
│ ├─ 3 layers minimum
│ ├─ Back: opacity 0.3, speed 120s
│ ├─ Mid: opacity 0.6, speed 80s
│ └─ Front: opacity 0.9, speed 50s
│
└─ Performance constraints
├─ Mobile → CSS box-shadow clouds
├─ Desktop normal → SVG filters, numOctaves ≤ 4
└─ Hero only → SVG filters, numOctaves ≤ 5
Performance Budget
├─ 60fps required (mobile/battery)
│ ├─ Static clouds → No animation
│ └─ Movement needed → CSS transform only
│
├─ 45-60fps acceptable
│ ├─ Simple drift → translateX animation
│ └─ Morphing shapes → border-radius keyframes
│
└─ 30fps acceptable (hero sections)
└─ Dynamic effects → Animate filter properties sparingly
| Cloud Type | baseFrequency | numOctaves | scale | blur stdDev | Use When | |------------|---------------|------------|-------|-------------|----------| | Cumulus | 0.008-0.012 | 3-4 | 40-80 | 3-5 | Happy, puffy background | | Cirrus | 0.015-0.025 | 2-3 | 20-40 | 1-3 | Wispy, high altitude | | Stratus | 0.005-0.010 | 3-4 | 30-60 | 4-8 | Flat, overcast layer | | Storm | 0.004-0.008 | 4-5 | 100-170 | 2-4 | Dramatic, billowing |
Symptoms: Clouds look pixelated, harsh edges, unnatural appearance
Diagnosis: Missing or insufficient Gaussian blur before displacement
Fix: Add <feGaussianBlur stdDeviation="3-5"/> before <feDisplacementMap/>
Detection Rule: If cloud edges look crisp/digital rather than soft/organic
Symptoms: Animation stutters, browser freezes, fans spin up Diagnosis: Too many octaves (>5) or animating filter properties Fix: Reduce numOctaves to ≤4, use CSS transforms instead of filter animation Detection Rule: If FPS drops below 30 or CPU usage >70% on cloud page
Symptoms: Clouds cut off at edges, partial shapes, sudden appearances
Diagnosis: Filter region too small for displacement effects
Fix: Set filter x="-50%" y="-50%" width="200%" height="200%"
Detection Rule: If any cloud shapes appear incomplete or cropped
Symptoms: All clouds look identical, repetitive patterns
Diagnosis: Using same seed value for all cloud instances
Fix: Generate unique seed for each cloud: seed={Math.floor(Math.random() * 1000)}
Detection Rule: If you can't distinguish between individual clouds
Symptoms: Mobile devices lag severely, battery drain, overheating Diagnosis: Using desktop-grade effects on mobile without degradation Fix: Use CSS box-shadow technique or reduce to 2 simple SVG layers on mobile Detection Rule: If mobile devices show <20fps or significant battery impact
Scenario: Client wants "epic fantasy sky" for game website header
Step 1: Requirements Analysis
Step 2: Architecture Decision Choose layered approach with storm cloud filters:
<!-- 3 layers for depth -->
<div class="sky-layers">
<div class="layer-back"></div> <!-- Distant mountains of clouds -->
<div class="layer-mid"></div> <!-- Main cloud formations -->
<div class="layer-front"></div> <!-- Close detail wisps -->
</div>
Step 3: Filter Configuration
<filter id="stormBack" x="-50%" y="-50%" width="200%" height="200%">
<feTurbulence type="fractalNoise" baseFrequency="0.006" numOctaves="3" seed="42"/>
<feGaussianBlur stdDeviation="6" result="blur"/>
<feDisplacementMap in="SourceGraphic" in2="blur" scale="100"/>
</filter>
Step 4: Novice vs Expert Catches
Step 5: Animation Implementation
.layer-back {
filter: url(#stormBack);
opacity: 0.4;
animation: drift 100s linear infinite;
}
.layer-mid {
filter: url(#stormMid);
opacity: 0.7;
animation: drift 65s linear infinite;
}
.layer-front {
filter: url(#stormFront);
opacity: 0.9;
animation: drift 40s linear infinite;
}
Step 6: Expert Optimization Add performance safeguards:
@media (prefers-reduced-motion: reduce) {
.layer-back, .layer-mid, .layer-front { animation: none; }
}
@media (max-width: 768px) {
.layer-front { display: none; } /* Reduce to 2 layers on mobile */
}
Do NOT use this skill for:
webgl-three-js-expert for true 3D clouds with depth fogdata-visualization-expert for actual meteorological dataapi-integration-expert for weather service APIsDelegate to other skills when:
api-integration-expertwebgl-graphics-expertthree-js-animation-expertprint-design-expertdata-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.