Skip to content

DirectorySkills

Picture tiles hero: 1440, made in this run
Run 1Picture tiles hero“Hero with moving columns of food photos for our recipe box delivery. Copy in brief.md.”
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, 10 Nov
Needs
Node 20+Chrome
Licence
Recaply licence

Picture Tiles Hero

Copy on the left, three columns of picture tiles drifting slowly up and down on the right, faded at the edges.

$9.99once, yours to keep

Builds a hero with drifting columns of picture tiles into your own project: warm sand page; copy on the left with a headline, line, two buttons and a small rating line; on the right three columns of rounded picture tiles (landscapes) drifting up, down and up at different speeds inside a frame that fades at top and bottom. 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 travel, photo, food, property or marketplace brand with lots of pictures wants a rich, moving hero, or someone asks for an image grid, photo wall or scrolling tiles hero.

By RecaplyUpdated 12 Nov

Install Picture Tiles Hero

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

Read https://recaply.co/skills/picture-tiles-hero/install.md and follow it to install the picture-tiles-hero skill from picture-tiles-hero.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 Picture Tiles Hero is for

What you get

  • One HTML file with its CSS inside: no build step, no framework
  • A hero with drifting columns of picture tiles
  • Checked at phone and desktop widths

Good fit

  • When a travel, photo, food, property or marketplace brand with lots of pictures wants a rich, moving hero

Not for

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

About this skill

You say

Hero with moving columns of food photos for our recipe box delivery. Copy in brief.md.

It said back

The hero is built and the check passes, but it uses drawn placeholder dishes instead of your 12 photos. The brief says you have them, but there are none in the project folder.

The check covers overflow, small text, alt text, names, contrast, focus, motion and script errors at 390, 768 and 1440px. I looked at the 390px and 1440px screenshots and they read cleanly. I did not open the 768px one.

Show more

What it did in run 1

  1. picture-tiles-hero
  2. ls -la && cat brief.md
  3. find . -type f -not -path './.git/*' | head -50; cat .claude/skills/picture-tiles-hero/reference/index.html .claude/skills/picture-tiles-hero/reference/style.css .claude/skills/picture-tiles-hero/reference/script.js
  4. cd ./.claude/skills/picture-tiles-hero/reference && cat index.html script.js style.css
  5. wc -c *; cat script.js; cat style.css | cut -c1-400; echo ----; sed 's/<svg.*<\/svg>/<SVG\/>/g' index.html | cut -c1-3000
  6. ./.claude/skills/picture-tiles-hero/reference/style.css
  7. ./.claude/skills/picture-tiles-hero/reference/script.js
  8. sed -E 's/<svg.*<\/svg>/<SVG\/>/g' ./.claude/skills/picture-tiles-hero/reference/index.html | cut -c1-2500
  9. hpause|aria-hidden="true" inert|class="pt-col[^>]*>
  10. .{150}hpause.{200}
  11. <li class="pt-tile[^>]*>.{0,10}
  12. mkdir -p /tmp/gen && cat > /tmp/gen/build.mjs <<'EOF' import fs from 'node:fs'; const out = process.argv[2]; const bgs = [['#F3C9B8','#E58F73'],['#CFE3B9','#8DBE6B'],['#F7DFA5','#E9B64F'],['#F0B3A5','#D6563F'],['#DDEBC8','#5E9E4A'],['#F6D2B5','#E39A5C'],['#C5DDB0','#3F7F3F'],['#F4BFB0','#C93A24'],['#EBE3B5','#B9B84E'],['#F8D9C4','#E0775A'],['#D5E8C2','#7DB05C'],['#F5CE9A','#DE8A3A']]; const food = ['#C93A24','#2F7D3B','#E9B64F','#F6EEDC','#8A4B2A']; function tile(i, sq) { const [a, b] = bgs[i], h = sq ? 400 : 500; let s = ''; for (let k = 0; k < 7; k++) { const r = 14 + ((i * 7 + k * 13) % 22); s += <circle cx="${170 + 70 * Math.cos(k * 0.9 + i)}" cy="${h / 2 + 60 * Math.sin(k * 1.3 + i)}" r="${r}" fill="${food[(i + k) % food.length]}"/>; } return <li class="pt-tile${sq ? ' sq' : ''}"><svg viewBox="0 0 400 ${h}" aria-hidden="true" focusable="false" preserveAspectRatio="xMidYMid slice"><defs><linearGradient id="g${i}" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="${a}"/><stop offset="1" stop-color="${b}"/></linearGradient></defs><rect width="400" height="${h}" fill="url(#g${i})"/><circle cx="200" cy="${h / 2}" r="150" fill="#fff"/><circle cx="200" cy="${h / 2}" r="118" fill="#FBF5EA" stroke="#E8DCC4" stroke-width="4"/>${s}</svg></li>; } // 4 tiles per column; mixed 4:5 and 1:1. TODO: replace each svg with <img src="photos/dish-N.jpg" alt=""> const shapes = [[0,1,0,1],[1,0,1,0],[0,0,1,1]]; const cols = [0,1,2].map(c => { const set = shapes[c].map((sq, j) => tile(c * 4 + j, !!sq)).join(''); return <ul class="pt-col c${c}">${set}</ul>.replace('</ul>', '') + set.replace('<li', '<li aria-hidden="true"').replaceAll('</li><li', '</li><li aria-hidden="true"') + '</ul>'; }); const html = <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Cookhaven recipe boxes: dinner sorted, five nights a week</title> <meta name="description" content="40 recipes a week, everything measured, ready in 30 minutes."> <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=Bricolage+Grotesque:opsz,wght@12..96,500;12..96,700;12..96,800&family=Inter:wght@400;500;600&display=swap"> <link rel="stylesheet" href="style.css"> </head> <body> <a class="skip" href="#main">Skip to content</a> <div class="hero pt"> <header class="hbar wrap"><a class="brand" href="#main">Cookhaven</a><nav aria-label="Main"><ul><li><a href="#main">How it works</a></li><li><a href="#main">Menu</a></li><li><a href="#main">Boxes</a></li></ul></nav><a class="btn btn-primary" href="#main">Choose your box</a></header> <main id="main"><div class="wrap pt-in"> <div class="pt-copy"><p class="h-kick">Recipe box delivery</p><h1>Dinner sorted, five nights a week</h1><p class="h-lede">40 recipes a week, everything measured, ready in 30 minutes.</p> <div class="h-acts"><a class="btn btn-primary" href="#main">Choose your box</a><a class="btn btn-ghost" href="#main">See this week's menu</a></div></div> <div class="pt-wrap"><div class="pt-frame" role="img" aria-label="Dishes from this week's Cookhaven menu">${cols.join('')}</div><button class="hpause" type="button" data-hero-pause>Pause motion</button></div> </div></main></div> <script src="script.js"></script> </body> </html> ; fs.writeFileSync(out + '/index.html', html); EOF cd . && node /tmp/gen/build.mjs . && grep -c 'aria-hidden="true"' index.html
  13. /tmp/gen/build.mjs
  14. ./style.css
  15. ./script.js
  16. cd . && sed -i '' "/aria-pressed/d" script.js && node /tmp/gen/build.mjs . && node .claude/skills/picture-tiles-hero/scripts/check.mjs index.html --out check 2>&1 | tail -30
  17. ./script.js
  18. ./script.js
  19. node /tmp/gen/build.mjs .
  20. node ./.claude/skills/picture-tiles-hero/scripts/check.mjs ./index.html --out ./check
  21. reduced-motion|reduce
  22. ./script.js
  23. ./style.css
  24. node ./.claude/skills/picture-tiles-hero/scripts/check.mjs ./index.html --out ./check
  25. ./check/1440.png
  26. ./check/390.png
  27. Done

10 Nov 2026 · Claude Code 2.1.322 with Claude Sonnet 5.5 · 1 min 48 s · $0.31 of API use

Questions

Is Picture Tiles Hero free?

No. Picture Tiles Hero 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 Picture Tiles Hero?

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

What do I get when I buy Picture Tiles Hero?

A ZIP of the whole skill folder (34 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 Picture Tiles Hero?

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 ./picture-tiles-hero with your agent's flag.

What do I get from Picture Tiles Hero?

One HTML file with its CSS inside: no build step, no framework. A hero with drifting columns of picture tiles. Checked at phone and desktop widths.

What does Picture Tiles Hero need?

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

How big is Picture Tiles Hero?

7 files, about 29,479 tokens in all. The SKILL.md is about 2,175 tokens, and your agent reads it only when the job fits.

What does a run cost?

Our 1 runs took 1 min 48 s to 1 min 48 s and $0.31 to $0.31 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 Picture Tiles Hero to use it?

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