Video
![]()
![]()
Editorial hero for a report




A juicy brand site in sunset gradients: bottles on a melting orange-pink hero, flavours, why it is good and reviews.
$9.99once, yours to keep
Payments are non-refundable. See our Terms of service.
Yours. Download it, then add it to your agent.
Builds a juice or smoothie brand site in bright fruit gradients into your own project: melting orange, pink and yellow gradients, a big rounded retro script headline over three bottles, a band of flavours, products with Add buttons, benefits, reviews and a subscription sign-up. Plain HTML, CSS and JavaScript by default, or matched to React, Next.js, Vue, Svelte, Astro or Tailwind when the project uses them. Comes with a working reference and a check that screenshots the result at phone, tablet and desktop widths and flags sideways overflow, text under 12px, missing alt text and names, low contrast, missing focus styles and motion that ignores reduced-motion settings. Use when a juice, smoothie, wellness drink or snack brand needs a vibrant site, or someone asks for a juicy, gradient, summery look.
By RecaplyUpdated 11 Nov
Video
![]()
![]()
Editorial hero for a report
Video1 view, 0 downloads
![]()
![]()
Lavender page for an AI app
Video
![]()
![]()
Product page for headphones
Video
![]()
![]()
Page with a node-flow hero
You say
We need a site for our smoothie bar. Info in brief.md.
It said back
The Blend & Bloom site is built and the automated check passes at phone, tablet and desktop widths. I looked at the 1440px and 390px screenshots and they look right. I didn't open the 768px one.
It checks for sideways overflow, small text, alt text, names, contrast, focus styles, reduced motion and script errors. Orders and the subscription sign-up don't actually do anything yet, because there's no ordering system or email handler behind them.
What it did in run 1
<svg viewBox="0 0 160 300" ${attrs||'aria-hidden="true" focusable="false"'}><rect x="62" y="10" width="36" height="26" rx="6" fill="${cap}"/><path d="M60 36h40v20c18 12 26 30 26 52v160c0 12-10 22-22 22H56c-12 0-22-10-22-22V108c0-22 8-40 26-52z" fill="${body}"/><rect x="34" y="130" width="92" height="90" fill="${label}"/><circle cx="80" cy="175" r="24" fill="${body}" opacity=".9"/><path d="M50 70c-6 10-8 22-8 34" stroke="#fff" stroke-width="6" stroke-linecap="round" opacity=".5" fill="none"/></svg>; const P = [ ['Berry Blast','£5.50','#4A0F3C','#C026A3','#FBDDF3'], ['Tropical Green','£5.90','#14532D','#16A34A','#DCFCE7'], ['Peanut Power','£6.20','#6B3E0A','#C98A2E','#FBEBCB'], ['Acai Sunrise','£6.50','#3B0F6B','#7C3AED','#E9DDFB'], ]; const ic = (d) => <svg class="ic" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="${d}"/></svg>; const logo = <svg viewBox="0 0 32 32" aria-hidden="true" focusable="false"><circle cx="16" cy="16" r="7" fill="#E11D48"/><g stroke="#F97316" stroke-width="2.5" stroke-linecap="round"><path d="M16 2v4M16 26v4M2 16h4M26 16h4M6 6l3 3M23 23l3 3M6 26l3-3M23 9l3-3"/></g></svg>; const phrase = P.map(p=>p[0]).join(' <b>✦</b> ') + ' <b>✦</b> Next-day delivery <b>✦</b> '; const html = <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Blend & Bloom: Smoothie bar in Brighton</title> <meta name="description" content="Smoothies from three shops in Brighton, with next-day delivery."> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Shrikhand&family=Outfit:wght@400;500;600;700&display=swap"> <link rel="stylesheet" href="style.css"> </head> <body> <a class="skip" href="#main">Skip to content</a> <header class="nav"><div class="wrap nav-in"> <a class="brand" href="index.html" aria-label="Blend & Bloom home">${logo}<span>Blend & Bloom</span></a> <button class="nav-toggle" type="button" data-nav-toggle aria-expanded="false" aria-controls="menu">${ic('M4 7h16M4 12h16M4 17h16')}<span class="sr-only">Menu</span></button> <nav id="menu" class="menu" aria-label="Main"><ul><li><a href="#shop">Smoothies</a></li><li><a href="#why">Why us</a></li><li><a href="#weekly">Weekly plan</a></li></ul><a class="btn btn-primary btn-sm" href="#shop">Order for delivery</a><a class="cart-link" href="#shop"><span class="sr-only">Basket, </span>${ic('M5 8h14l-1 13H6zM9 8V6a3 3 0 0 1 6 0v2')}<span class="cart-count" data-cart-count>0</span><span class="sr-only"> items</span></a></nav> </div></header> <main id="main"> <section class="hero"><div class="wrap hero-in"><div class="reveal"><h1>Brighton's <em>smoothie</em> bar</h1><p class="hero-sub">Three shops in town, and your smoothies at the door the next day.</p><div class="hero-ctas"><a class="btn btn-primary" href="#shop">Order for delivery${ic('M5 12h14M13 6l6 6-6 6')}</a><a class="btn btn-ghost" href="#weekly">See the weekly plan</a></div></div> <div class="hero-art reveal"><div class="bottles">${P.slice(0,3).map(p=>bottle(p[2],p[3],p[4])).join('')}</div></div></div></section> <div class="marquee" aria-hidden="true"><div class="marquee-track"><span>${phrase}</span><span>${phrase}</span></div></div> <section class="sec" id="shop" aria-labelledby="shop-h"><div class="wrap"><div class="sec-head"><h2 id="shop-h">Pick your <em>smoothie</em></h2></div><ul class="product-list"> ${P.map(p=><li class="product reveal"><div class="product-art">${bottle(p[2],p[3],p[4],p[0],role="img" aria-label="${p[0]} smoothie")}</div><div class="product-meta"><h3>${p[0]}</h3><p class="price">${p[1]}</p></div><button class="btn btn-primary btn-sm" type="button" data-add="${p[0]}">${ic('M12 5v14M5 12h14')}Add<span class="sr-only"> ${p[0]} to basket</span></button></li>).join('\n')} </ul><p class="sr-only" role="status" aria-live="polite" data-cart-status></p></div></section> <section class="sec" id="why" aria-labelledby="why-h" style="padding-top:0"><div class="wrap"><div class="sec-head"><h2 id="why-h">Why <em>Blend & Bloom</em></h2></div><ul class="feat-list"> <li class="feat reveal"><span class="feat-ic">${ic('M3 11l9-7 9 7v9H3zM9 20v-6h6v6')}</span><h3>Three shops</h3><p>Drop in at any of our three bars around Brighton.</p></li> <li class="feat reveal"><span class="feat-ic">${ic('M12 7v5l3 2M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18')}</span><h3>Next-day delivery</h3><p>Order today and your smoothies arrive tomorrow.</p></li> <li class="feat reveal"><span class="feat-ic">${ic('M12 20s-7-4.5-7-10a4 4 0 0 1 7-2.6A4 4 0 0 1 19 10c0 5.5-7 10-7 10z')}</span><h3>Four favourites</h3><p>From Berry Blast to Acai Sunrise, there's one for every mood.</p></li> </ul></div></section> <section class="sec" id="weekly" aria-labelledby="weekly-h" style="padding-top:0"><div class="wrap"><div class="plan reveal"><div class="plan-words"><h2 id="weekly-h">Five a week, <em>sorted</em></h2><p>Subscribe and have five smoothies delivered every week.</p></div><div class="plan-card"><p class="plan-price">£25 <span>a week</span></p><p>5 smoothies a week, that's £5 each.</p><a class="btn btn-primary" href="#cta">Start my subscription</a></div></div></div></section> <section class="sec" id="cta" aria-labelledby="cta-h" style="padding-top:0"><div class="wrap"><div class="cta-box reveal"><h2 id="cta-h">Get your <em>weekly</em> smoothies</h2><p>Leave your email and we'll set up your subscription.</p><form class="inline-form" data-form data-done="Thanks! We'll be in touch to set up your subscription."><label class="sr-only" for="cta-email">Email address</label><input id="cta-email" type="email" name="email" required placeholder="you@example.com" autocomplete="email"><button class="btn btn-primary" type="submit">Sign me up</button><p class="form-status" role="status" aria-live="polite"></p></form></div></div></section> </main> <footer class="foot"><div class="wrap foot-in"><div class="foot-brand"><a class="brand" href="index.html">${logo}<span>Blend & Bloom</span></a><p>Smoothie bar with three shops in Brighton and next-day delivery.</p></div> <nav class="foot-col" aria-label="Menu"><h2>Menu</h2><ul>${P.map(p=><li><a href="#shop">${p[0]}</a></li>).join('')}</ul></nav> <nav class="foot-col" aria-label="More"><h2>More</h2><ul><li><a href="#why">Why us</a></li><li><a href="#weekly">Weekly plan</a></li><li><a href="#cta">Sign up</a></li></ul></nav></div> <div class="wrap foot-small"><p>© <span data-year>2026</span> Blend & Bloom, Brighton.</p></div></footer> <script src="script.js" defer></script> </body> </html> ; fs.writeFileSync(out + '/index.html', html); EOF cd . && node /tmp/gen/build.mjs . && node .claude/skills/gradient-juice-site/scripts/check.mjs index.html --out check 2>&1 | tail -30No. Gradient Juice Site costs $9.99 once and stays in your Recaply account, or it comes with the Recaply plan ($19.99 a month), which opens every premium skill and prompt.
Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.
A ZIP of the whole skill folder (39 KB): the SKILL.md your agent follows and its 6 other files, the references, templates and scripts it uses. You download it from this page whenever you need it, and install it in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. The Recaply plan opens it too, with every other premium skill and prompt.
Buy it, then download the ZIP from this page. For Claude Code, unzip it into .claude/skills/ in your project. For Codex, Cursor and Gemini CLI, unzip it and run npx skills add ./gradient-juice-site with your agent's flag.
One HTML file with its CSS inside: no build step, no framework. A juice or smoothie brand site in bright fruit gradients. Checked at phone and desktop widths.
Node 20+ and Chrome, and no API key. Each use costs nothing beyond your agent.
7 files, about 30,500 tokens in all. The SKILL.md is about 2,607 tokens, and your agent reads it only when the job fits.
Our 1 runs took 2 min 11 s to 2 min 11 s and $0.46 to $0.46 of API use each, in Claude Code with claude-sonnet-5-5. On a Claude plan, a run counts toward your usage instead.
Type /gradient-juice-site first to make sure it loads. Without it, Claude Code may judge a small job simple enough to do without the skill.