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-experttools
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.