Skip to content

DirectorySkills

Portrait overlay quotes: 1440, made in this run
Run 1Portrait overlay quotes“Add member stories over their photos to our climbing gym site. Info in brief.md, photos 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

Portrait Overlay Quotes

Three tall portrait cards with each quote set over a dark glass band across the bottom of the picture.

$9.99once, yours to keep

Builds testimonials set over tall portrait pictures into your own project: three tall portrait cards in a row on charcoal, each with a dark frosted band across the lower third holding the quote, the name and role; the picture zooms a little on hover. 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 brand with good customer photos, a gym, salon, studio or event, wants bold picture-led testimonials, or someone asks for quotes over photos.

By RecaplyUpdated 12 Nov

Install Portrait Overlay Quotes

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

Read https://recaply.co/skills/portrait-overlay-quotes/install.md and follow it to install the portrait-overlay-quotes skill from portrait-overlay-quotes.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 Portrait Overlay Quotes is for

What you get

  • One HTML file with its CSS inside: no build step, no framework
  • Testimonials set over tall portrait pictures
  • Checked at phone and desktop widths

Good fit

  • When a brand with good customer photos, a gym, salon, studio or event, wants bold picture-led testimonials

Not for

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

About this skill

You say

Add member stories over their photos to our climbing gym site. Info in brief.md, photos in photos/.

It said back

The member stories section is built as a single-page site in index.html. The check passes at 390, 768 and 1440 px, and I looked at the 390 and 1440 screenshots. There's no horizontal overflow, no text under 12px, alt text and names are present, contrast and focus styles are fine, and there are no leftover sample words or emoji icons.

Files

  • index.html is the page, with a "Member stories" section of three tall portrait cards.
  • style.css has the dark theme with your lime #C6FF3D accent.
  • script.js fades the cards in once as they scroll into view.
  • The check screenshots are in check/390.png, check/768.png and check/1440.png.
Show more

What it did in run 1

  1. portrait-overlay-quotes
  2. ls -la . photos && cat brief.md
  3. cd ./.claude/skills/portrait-overlay-quotes && cat reference/index.html reference/style.css reference/script.js; node scripts/check.mjs --ready; file ../../../photos/*
  4. ./photos/jade.jpg
  5. ./photos/omar.jpg
  6. ./photos/bea.jpg
  7. cd .claude/skills/portrait-overlay-quotes && cat reference/index.html reference/style.css reference/script.js; node scripts/check.mjs --ready
  8. W=. R=$W/.claude/skills/portrait-overlay-quotes/reference cd $W # style: reference css with brand tokens swapped sed -e 's/--accent:#FF5A4E/--accent:#C6FF3D/' -e 's/--on-accent:#1A0705/--on-accent:#10160A/' -e 's/--em:#FF7A70/--em:#C6FF3D/' $R/style.css > style.css cp $R/script.js script.js cat >> style.css <<'EOF' /* Crux Climbing */ .po img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease} .po figure:hover img,.po:focus-within img{transform:scale(1.04)} .po img.top{object-position:50% 30%} .sec-head h2 em{font-style:normal} @media (prefers-reduced-motion:reduce){.po figure:hover img,.po:focus-within img{transform:none}} @media (min-width:641px) and (max-width:900px){.po:last-child{grid-column:1/-1;max-width:calc(50% - 9px)}} 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>Crux Climbing | Member stories</title> <meta name="description" content="Three Crux Climbing members on what the gym has meant to them: a first lead climb, a fresh start after knee surgery, and a youth team regional final."> <meta property="og:title" content="Crux Climbing | Member stories"> <meta property="og:description" content="Real words from Crux Climbing members."> <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=Sora:wght@400;600;700&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="members" aria-labelledby="members-h"> <div class="sec-head"><h2 id="members-h">Member <em>stories</em></h2><p class="sub">Shared with their permission by three Crux Climbing members.</p></div> <ul class="wrap po-list"> <li class="po reveal"><figure><img src="photos/jade.jpg" alt="Jade reaching for a green hold, hands chalked, on a dark bouldering wall" width="896" height="1152" loading="lazy"><figcaption><blockquote><p>Two years ago I couldn't do a pull-up. Last month I led my first 6b and the whole wall cheered.</p></blockquote><p><b>Jade</b><span class="role">Climbing for 2 years</span></p></figcaption></figure></li> <li class="po reveal"><figure><img class="top" src="photos/omar.jpg" alt="Omar smiling as he grips a lime-green hold, chalk dust in the air" width="896" height="1152" loading="lazy"><figcaption><blockquote><p>I started after my knee surgery. The coaches never once made me feel old.</p></blockquote><p><b>Omar</b><span class="role">Started climbing at 52</span></p></figcaption></figure></li> <li class="po reveal"><figure><img class="top" src="photos/bea.jpg" alt="Bea in harness and climbing shoes, standing in front of the wall" width="896" height="1152" loading="lazy"><figcaption><blockquote><p>The youth team is the best part of my week. We made the regional final together.</p></blockquote><p><b>Bea</b><span class="role">Youth team, regional finalist</span></p></figcaption></figure></li> </ul> </section> </main> <script src="script.js" defer></script> </body> </html> EOF node .claude/skills/portrait-overlay-quotes/scripts/check.mjs index.html --out check 2>&1 | tail -40
  9. cd . && sed -e 's/--accent:#FF5A4E/--accent:#C6FF3D/' -e 's/--on-accent:#1A0705/--on-accent:#10160A/' -e 's/--em:#FF7A70/--em:#C6FF3D/' .claude/skills/portrait-overlay-quotes/reference/style.css > style.css && cp .claude/skills/portrait-overlay-quotes/reference/script.js script.js && ls
  10. ./.claude/skills/portrait-overlay-quotes/reference/style.css
  11. ./style.css
  12. ./script.js
  13. ./index.html
  14. node .claude/skills/portrait-overlay-quotes/scripts/check.mjs index.html --out check 2>&1 | tail -40
  15. W=.; cd $W && node $W/.claude/skills/portrait-overlay-quotes/scripts/check.mjs $W/index.html --out $W/check 2>&1 | tail -40
  16. cd . && node .claude/skills/portrait-overlay-quotes/scripts/check.mjs index.html --out check 2>&1 | tail -40
  17. ./check/1440.png
  18. ./check/390.png
  19. Done

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

Questions

Is Portrait Overlay Quotes free?

No. Portrait Overlay Quotes 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 Portrait Overlay Quotes?

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

What do I get when I buy Portrait Overlay Quotes?

A ZIP of the whole skill folder (31 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 Portrait Overlay Quotes?

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 ./portrait-overlay-quotes with your agent's flag.

What do I get from Portrait Overlay Quotes?

One HTML file with its CSS inside: no build step, no framework. Testimonials set over tall portrait pictures. Checked at phone and desktop widths.

What does Portrait Overlay Quotes need?

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

How big is Portrait Overlay Quotes?

7 files, about 19,953 tokens in all. The SKILL.md is about 2,138 tokens, and your agent reads it only when the job fits.

What does a run cost?

Our 1 runs took 1 min 8 s to 1 min 8 s and $0.25 to $0.25 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 Portrait Overlay Quotes to use it?

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