Skip to content

DirectorySkills

Quote mosaic: 1440, made in this run
Run 1Quote mosaic“Build a testimonial mosaic for our analytics product page. Content in brief.md, Hana's photo in photos/.”
Runs in
  • Claude Code
  • Codex
  • Cursor
  • Gemini CLI
  • GitHub Copilot
  • OpenCode
Generates with
Your agent's model
Tested with
Claude Code 2.1.322Claude Sonnet 5.51 real run, 12 Nov
Needs
Node 20+Chrome
Licence
Recaply licence

Quote Mosaic

A bento mosaic: one big featured quote, smaller quotes, a rating tile and a tile of customer names, in one grid.

$9.99once, yours to keep

Builds a testimonial mosaic with one featured quote and supporting tiles into your own project: a four-column bento grid: a large dark tile with the featured quote and portrait, four smaller quote tiles, a tile with the average rating and a tile listing customer names as wordmarks. Plain HTML, CSS and JavaScript, 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 it at phone, tablet and desktop widths and flags sideways overflow, text under 12px, missing alt text and names, low contrast, no focus styles, motion that ignores reduced motion, leftover sample words and emoji icons. Use when a SaaS or product page wants a rich social-proof block in one place, or someone asks for a bento, mosaic or featured testimonial grid.

By RecaplyUpdated 12 Nov

Install Quote Mosaic

After the download, ask your agent to add it, or run the line yourself.

Read https://recaply.co/skills/quote-mosaic/install.md and follow it to install the quote-mosaic skill from quote-mosaic.zip.

Paste it into your agent. It reads our install steps, finds the ZIP you downloaded and adds the skill for you.

New to skills? How to install a skill

Similar skills

All 735 skills

Who Quote Mosaic is for

What you get

  • One HTML file with its CSS inside: no build step, no framework
  • A testimonial mosaic with one featured quote and supporting tiles
  • Checked at phone and desktop widths

Good fit

  • When a SaaS or product page wants a rich social-proof block in one place, or someone asks for a bento, mosaic or featured testimonial grid

Not for

  • An app with a backend, sign-in or a database
  • Copying another company's site

About this skill

You say

Build a testimonial mosaic for our analytics product page. Content in brief.md, Hana's photo in photos/.

It said back

The testimonial mosaic is built and passes the check at 390, 768 and 1440 px. That covers sideways overflow, small text, alt text, contrast, focus styles, reduced motion, script errors, leftover sample words and emoji icons. I read the 1440 and 390 screenshots myself, and nothing is cut off or overlapping. I did not open the 768 screenshot.

Files (in work1/): index.html, style.css and script.js. The page uses plain HTML, CSS and JavaScript because there was no existing project. Fonts and colours are the skill's own Manrope and plum/lime design, since you gave no brand. Screenshots are in check/390.png, check/768.png and check/1440.png.

Show more

What it did in run 1

  1. quote-mosaic
  2. ls -R . | head -50 && cat brief.md
  3. cd ./.claude/skills/quote-mosaic && ls -R reference scripts | head; cat reference/index.html reference/style.css reference/script.js; node scripts/check.mjs --ready
  4. ./photos/hana-ito.jpg
  5. cd . && S=.claude/skills/quote-mosaic && cp $S/reference/style.css style.css && cp $S/reference/script.js script.js cat >> style.css <<'EOF' /* Signalboard additions */ .face img{width:100%;height:100%;object-fit:cover} .qm-feat .face{width:64px;height:64px} .initials{display:grid;place-items:center;width:100%;height:100%;background:var(--bg);color:var(--em);font-weight:800;font-size:1rem;letter-spacing:.02em;border:1px solid var(--line);border-radius:50%} .qm-q.full{grid-column:1/-1} @media (max-width:1000px){.qm-q.full{grid-column:span 2}} @media (max-width:640px){.qm-q.full{grid-column:auto}} EOF cat > index.html <<'EOF' <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Signalboard analytics: what customers say</title> <meta name="description" content="Teams at Brightloom, Saltmarsh, Northwind and Pellucid on why they use Signalboard analytics. Rated 4.8 from 520 reviews."> <meta property="og:title" content="Signalboard analytics: what customers say"> <meta property="og:description" content="Rated 4.8 from 520 reviews."> <meta property="og:type" content="website"> <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=Manrope:wght@400;500;700;800&display=swap"> <link rel="stylesheet" href="style.css"> </head> <body> <a class="skip" href="#main">Skip to content</a> <main id="main"> <section class="t-sec" id="proof" aria-labelledby="proof-h"><div class="sec-head"><h2 id="proof-h">What teams <em>find</em> with Signalboard</h2><p class="sub">Customers on what changed once they could see their analytics clearly.</p></div><div class="wrap qm"> <figure class="qm-t qm-feat reveal"><span class="qm-mark" aria-hidden="true">“</span><blockquote><p>We found the leak in our funnel on day one.</p></blockquote><figcaption class="who"><span class="face"><img src="photos/hana-ito.jpg" alt="Portrait of Hana Ito" width="64" height="64"></span><span><b>Hana Ito</b><span class="role">Head of growth, Brightloom</span></span></figcaption></figure> <div class="qm-t qm-rate reveal"><p class="qm-big">4.8</p><span class="stars" role="img" aria-label="4.8 out of 5 stars"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10 1.5l2.6 5.4 5.9.8-4.3 4.1 1 5.8L10 14.8l-5.2 2.8 1-5.8L1.5 7.7l5.9-.8z" fill="currentColor" stroke="currentColor" stroke-width="1.2"/></svg><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10 1.5l2.6 5.4 5.9.8-4.3 4.1 1 5.8L10 14.8l-5.2 2.8 1-5.8L1.5 7.7l5.9-.8z" fill="currentColor" stroke="currentColor" stroke-width="1.2"/></svg><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10 1.5l2.6 5.4 5.9.8-4.3 4.1 1 5.8L10 14.8l-5.2 2.8 1-5.8L1.5 7.7l5.9-.8z" fill="currentColor" stroke="currentColor" stroke-width="1.2"/></svg><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10 1.5l2.6 5.4 5.9.8-4.3 4.1 1 5.8L10 14.8l-5.2 2.8 1-5.8L1.5 7.7l5.9-.8z" fill="currentColor" stroke="currentColor" stroke-width="1.2"/></svg><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10 1.5l2.6 5.4 5.9.8-4.3 4.1 1 5.8L10 14.8l-5.2 2.8 1-5.8L1.5 7.7l5.9-.8z" fill="currentColor" stroke="currentColor" stroke-width="1.2"/></svg></span><p>Average from 520 reviews</p></div> <div class="qm-t qm-names reveal"><p class="label">Used at</p><ul><li>Brightloom</li><li>Saltmarsh</li><li>Northwind</li><li>Pellucid</li><li>Wavecrest</li></ul></div> <figure class="qm-t qm-q reveal"><blockquote><p>I finally see which campaigns bring paying customers, not just clicks.</p></blockquote><figcaption class="who"><span class="face"><span class="initials" aria-hidden="true">LH</span></span><span><b>Leila Haddad</b><span class="role">Marketing lead, Northwind</span></span></figcaption></figure> <figure class="qm-t qm-q reveal"><blockquote><p>We halved our analytics bill and got better answers.</p></blockquote><figcaption class="who"><span class="face"><span class="initials" aria-hidden="true">OP</span></span><span><b>Owen Price</b><span class="role">Founder, Pellucid</span></span></figcaption></figure> <figure class="qm-t qm-q full reveal"><blockquote><p>Setup took an afternoon, and our engineers didn’t write a single tracking ticket.</p></blockquote><figcaption class="who"><span class="face"><span class="initials" aria-hidden="true">MF</span></span><span><b>Marcus Feld</b><span class="role">CTO, Saltmarsh</span></span></figcaption></figure> </div></section> </main> <script src="script.js" defer></script> </body> </html> EOF node $S/scripts/check.mjs index.html --out check 2>&1 | tail -40
  6. cd . && ls; node .claude/skills/quote-mosaic/scripts/check.mjs index.html --out check 2>&1 | tail -40
  7. cp .claude/skills/quote-mosaic/reference/style.css style.css && cp .claude/skills/quote-mosaic/reference/script.js script.js && cat >> style.css <<'EOF' /* Signalboard additions */ .face img{width:100%;height:100%;object-fit:cover} .qm-feat .face{width:64px;height:64px} .initials{display:grid;place-items:center;width:100%;height:100%;background:var(--bg);color:var(--em);font-weight:800;font-size:1rem;letter-spacing:.02em;border:1px solid var(--line);border-radius:50%} .qm-q.full{grid-column:1/-1} @media (max-width:1000px){.qm-q.full{grid-column:span 2}} @media (max-width:640px){.qm-q.full{grid-column:auto}} EOF ls
  8. ./index.html
  9. sleep 1; node .claude/skills/quote-mosaic/scripts/check.mjs index.html --out check 2>&1 | tail -40
  10. cp .claude/skills/quote-mosaic/reference/style.css style.css && cp .claude/skills/quote-mosaic/reference/script.js script.js && ls
  11. ./style.css
  12. ./script.js
  13. node .claude/skills/quote-mosaic/scripts/check.mjs index.html --out check 2>&1 | tail -30
  14. ./check/1440.png
  15. ./check/390.png
  16. Done

12 Nov 2026 · Claude Code 2.1.322 with Claude Sonnet 5.5 · 1 min 33 s · $0.26 of API use

Questions

Is Quote Mosaic free?

No. Quote Mosaic 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.

Which agents can use Quote Mosaic?

Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.

What do I get when I buy Quote Mosaic?

A ZIP of the whole skill folder (32 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.

How do I install Quote Mosaic?

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 ./quote-mosaic with your agent's flag.

What do I get from Quote Mosaic?

One HTML file with its CSS inside: no build step, no framework. A testimonial mosaic with one featured quote and supporting tiles. Checked at phone and desktop widths.

What does Quote Mosaic need?

Node 20+ and Chrome, and no API key. Each use costs nothing beyond your agent.

How big is Quote Mosaic?

7 files, about 21,021 tokens in all. The SKILL.md is about 2,150 tokens, and your agent reads it only when the job fits.

What does a run cost?

Our 1 runs took 1 min 33 s to 1 min 33 s and $0.26 to $0.26 of API use each, in Claude Code with claude-sonnet-5-5. On a Claude plan, a run counts toward your usage instead.

Do I have to name Quote Mosaic to use it?

Type /quote-mosaic first to make sure it loads. Without it, Claude Code may judge a small job simple enough to do without the skill.