Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create a futuristic, premium, clean dark-blue mesh-gradient design system across background rendering, hero shell, navigation, floating nodes, framed sections, CTAs, and motion. Use when the interface needs a near-black navy foundation, procedural blue mesh atmosphere, disciplined minimal structure, and infrastructural or planetary depth.
.claude/skills/mengto-mesh-gradient-dark-blue-clean/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 56% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 79% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 111% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 103% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 65% | 0% |
Build on a near-black foundation with a deep navy or steel-blue undertone. Place a shader-like mesh gradient, CPPN-style field, abstract WebGL veil, or canvas light field inside the main hero shell. Keep the surrounding system disciplined: crisp typography, thin rails, corner markers, tiny status dots, quiet frames, and sparse node callouts.
This is not an airy blue page. This is not generic glassmorphism. The mesh is the visual engine inside a minimal system shell.
css:root { --mesh-bg: #030712; --mesh-bg-blue: #07111f; --mesh-shell: rgba(7, 13, 25, 0.82); --mesh-shell-inner: rgba(4, 9, 18, 0.72); --mesh-line: rgba(191, 219, 254, 0.14); --mesh-line-strong: rgba(226, 232, 240, 0.28); --mesh-text: #f8fafc; --mesh-copy: #9fb2ca; --mesh-muted: #64748b; --mesh-accent: #dbeafe; --mesh-cobalt: #1d4ed8; --mesh-indigo: #312e81; --mesh-steel: #385a7c; }
css.mesh-page { min-height: 100vh; color: var(--mesh-text); background: radial-gradient(circle at 50% 0%, rgba(29, 78, 216, 0.18), transparent 34rem), linear-gradient(180deg, var(--mesh-bg-blue), var(--mesh-bg) 48%, #01030a); } .mesh-page::selection { color: #020617; background: var(--mesh-accent); }
Use a border-gradient wrapper and a darker content surface. The mesh canvas sits behind the content inside the shell.
css.mesh-shell { position: relative; overflow: hidden; border: 1px solid transparent; border-radius: 32px; background: linear-gradient(var(--mesh-shell), var(--mesh-shell)) padding-box, linear-gradient(145deg, rgba(255, 255, 255, 0.46), rgba(147, 197, 253, 0.18), rgba(255, 255, 255, 0.04)) border-box; box-shadow: 0 40px 100px rgba(0, 0, 0, 0.42), inset 0 1px 0 rgba(255, 255, 255, 0.10); } .mesh-shell__field { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0.78; pointer-events: none; } .mesh-shell__content { position: relative; z-index: 2; min-height: clamp(560px, 72vh, 820px); padding: clamp(28px, 6vw, 84px); background: linear-gradient(180deg, rgba(4, 9, 18, 0.22), rgba(4, 9, 18, 0.62)), var(--mesh-shell-inner); }
html<section class="mesh-shell"> <canvas class="mesh-shell__field" data-dark-blue-mesh></canvas> <div class="mesh-shell__content"> <nav class="mesh-nav">...</nav> <h1>Infrastructure for intelligent interfaces.</h1> <p>...</p> </div> </section>
Use WebGL or Three.js for the final build when available. This 2D canvas pattern is a good fallback for warped gradients, soft mesh movement, and smoky blue highlights.
jsfunction initDarkBlueMesh(canvas) { const ctx = canvas.getContext("2d"); const reduceMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches; let width = 0; let height = 0; let frame = 0; let rafId = 0; const points = [ { x: 0.18, y: 0.30, r: 0.45, color: "rgba(29, 78, 216, 0.55)" }, { x: 0.68, y: 0.22, r: 0.38, color: "rgba(49, 46, 129, 0.58)" }, { x: 0.78, y: 0.72, r: 0.52, color: "rgba(56, 90, 124, 0.48)" }, { x: 0.42, y: 0.58, r: 0.34, color: "rgba(219, 234, 254, 0.18)" }, ]; function resize() { const rect = canvas.getBoundingClientRect(); const dpr = Math.min(window.devicePixelRatio || 1, 1.5); width = Math.max(1, rect.width); height = Math.max(1, rect.height); canvas.width = Math.floor(width * dpr); canvas.height = Math.floor(height * dpr); ctx.setTransform(dpr, 0, 0, dpr, 0, 0); } function draw(time = 0) { ctx.clearRect(0, 0, width, height); ctx.fillStyle = "#030712"; ctx.fillRect(0, 0, width, height); ctx.globalCompositeOperation = "screen"; points.forEach((point, index) => { const drift = reduceMotion ? 0 : Math.sin(time * 0.00018 + index) * 24; const x = point.x * width + drift; const y = point.y * height + Math.cos(time * 0.00016 + index) * 18; const radius = Math.max(width, height) * point.r; const gradient = ctx.createRadialGradient(x, y, 0, x, y, radius); gradient.addColorStop(0, point.color); gradient.addColorStop(1, "rgba(3, 7, 18, 0)"); ctx.fillStyle = gradient; ctx.fillRect(0, 0, width, height); }); ctx.globalCompositeOperation = "source-over"; ctx.fillStyle = "rgba(255, 255, 255, 0.035)"; for (let y = (frame % 28); y < height; y += 28) { ctx.fillRect(0, y, width, 1); } frame += 1; if (!reduceMotion) rafId = requestAnimationFrame(draw); } function handleResize() { cancelAnimationFrame(rafId); resize(); draw(); } resize(); draw(); window.addEventListener("resize", handleResize); return () => { cancelAnimationFrame(rafId); window.removeEventListener("resize", handleResize); }; }
css.mesh-nav { display: flex; align-items: center; gap: 6px; width: fit-content; padding: 6px; border: 1px solid transparent; border-radius: 999px; background: linear-gradient(rgba(5, 12, 24, 0.76), rgba(5, 12, 24, 0.76)) padding-box, linear-gradient(120deg, rgba(255, 255, 255, 0.28), rgba(96, 165, 250, 0.16), rgba(255, 255, 255, 0.04)) border-box; backdrop-filter: blur(18px); } .mesh-nav a { color: var(--mesh-copy); border-radius: 999px; padding: 9px 14px; text-decoration: none; } .mesh-nav a:hover, .mesh-nav a[aria-current="page"] { color: var(--mesh-text); background: rgba(255, 255, 255, 0.08); }
css.mesh-node { position: absolute; display: inline-flex; align-items: center; gap: 8px; border: 1px solid rgba(191, 219, 254, 0.18); border-radius: 999px; padding: 7px 10px; color: var(--mesh-copy); background: rgba(5, 12, 24, 0.58); backdrop-filter: blur(14px); font-size: 12px; } .mesh-node::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: #bfdbfe; box-shadow: 0 0 18px rgba(147, 197, 253, 0.72); } .mesh-rail { position: absolute; top: 0; bottom: 0; width: 1px; background: linear-gradient(180deg, transparent, var(--mesh-line), transparent); } .mesh-corner { position: absolute; width: 6px; height: 6px; background: var(--mesh-line-strong); }
css.mesh-cta-primary { color: #020617; background: #f8fafc; box-shadow: 0 16px 36px rgba(219, 234, 254, 0.18); } .mesh-cta-secondary { color: var(--mesh-text); border: 1px solid transparent; background: linear-gradient(rgba(5, 12, 24, 0.62), rgba(5, 12, 24, 0.62)) padding-box, linear-gradient(135deg, rgba(255, 255, 255, 0.28), rgba(96, 165, 250, 0.12), rgba(255, 255, 255, 0.04)) border-box; }
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→fail | 24,178 | 23,492 | -3% | 1 | 1 | 0% | 5,945 | 9,678 | +63% | 0 | 0 | — |
case-03 | fail→fail | 26,757 | 26,201 | -2% | 1 | 1 | 0% | 6,199 | 9,673 | +56% | 0 | 0 | — |
case-01 | fail→pass | 25,108 | 24,142 | -4% | 1 | 1 | 0% | 6,216 | 9,690 | +56% | 0 | 0 | — |
case-04 | pass→pass | 24,915 | 25,691 | +3% | 1 | 1 | 0% | 5,849 | 9,646 | +65% | 0 | 0 | — |
case-05 | pass→fail | 11,845 | 26,982 | +128% | 1 | 1 | 0% | 2,536 | 9,643 | +280% | 0 | 0 | — |
case-06 | pass→fail | 23,228 | 24,548 | +6% | 1 | 1 | 0% | 5,887 | 9,644 | +64% | 0 | 0 | — |
case-07 | pass→pass | 17,846 | 14,418 | -19% | 1 | 1 | 0% | 3,860 | 6,950 | +80% | 0 | 0 | — |
case-08 | fail→pass | 15,387 | 12,663 | -18% | 1 | 1 | 0% | 3,543 | 6,325 | +79% | 0 | 0 | — |
case-09 | fail→pass | 12,991 | 9,337 | -28% | 1 | 1 | 0% | 2,592 | 5,472 | +111% | 0 | 0 | — |
case-10 | fail→fail | 11,763 | 13,271 | +13% | 1 | 1 | 0% | 2,712 | 6,335 | +134% | 0 | 0 | — |
case-11 | fail→pass | 10,069 | 3,380 | -66% | 1 | 1 | 0% | 2,118 | 4,292 | +103% | 0 | 0 | — |
case-12 | fail→fail | 11,533 | 9,139 | -21% | 1 | 1 | 0% | 2,617 | 5,541 | +112% | 0 | 0 | — |
case-13 | fail→pass | 16,851 | 12,118 | -28% | 1 | 1 | 0% | 3,896 | 6,437 | +65% | 0 | 0 | — |
case-14 | fail→pass | 11,596 | 11,936 | +3% | 1 | 1 | 0% | 2,449 | 6,283 | +157% | 0 | 0 | — |
case-15 | pass→pass | 13,376 | 11,083 | -17% | 1 | 1 | 0% | 2,785 | 5,888 | +111% | 0 | 0 | — |
case-16 | fail→pass | 12,265 | 11,182 | -9% | 1 | 1 | 0% | 2,508 | 5,649 | +125% | 0 | 0 | — |
case-17 | fail→fail | 14,974 | 20,012 | +34% | 1 | 1 | 0% | 3,047 | 7,584 | +149% | 0 | 0 | — |
case-18 | fail→pass | 15,733 | 9,734 | -38% | 1 | 1 | 0% | 3,034 | 5,679 | +87% | 0 | 0 | — |
case-19 | pass→pass | 12,042 | 11,550 | -4% | 1 | 1 | 0% | 2,643 | 6,002 | +127% | 0 | 0 | — |
case-20 | pass→pass | 15,032 | 23,826 | +59% | 1 | 1 | 0% | 3,417 | 9,640 | +182% | 0 | 0 | — |
case-21 | fail→pass | 11,284 | 7,799 | -31% | 1 | 1 | 0% | 2,402 | 5,311 | +121% | 0 | 0 | — |
case-22 | pass→pass | 12,683 | 11,206 | -12% | 1 | 1 | 0% | 2,731 | 5,946 | +118% | 0 | 0 | — |
case-23 | fail→pass | 16,223 | 11,504 | -29% | 1 | 1 | 0% | 3,401 | 5,867 | +73% | 0 | 0 | — |
case-24 | pass→pass | 11,201 | 4,003 | -64% | 1 | 1 | 0% | 2,428 | 4,427 | +82% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +33 percentage points is the difference between those two pass rates over the 24 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.