Skip to content

DirectorySkills

Framed picture hero: 1440, made in this run
Run 1Framed picture hero“Make a hero for our hotel with one big framed photo of the main room. 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

Framed Picture Hero

A gallery-wall hero: one large framed picture with a mat and a museum-style label beside a calm serif headline.

$9.99once, yours to keep

Builds a hero built around one large framed picture into your own project: warm grey gallery wall; on the right one large framed print (walnut frame, wide cream mat) lit by a soft picture light, with a small museum label card; on the left a serif headline, line and two buttons. 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 photographer, print shop, gallery, artist, hotel or premium product wants one strong picture to carry the page, or someone asks for a framed image or gallery-style hero.

By RecaplyUpdated 12 Nov

Install Framed Picture Hero

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

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

What you get

  • One HTML file with its CSS inside: no build step, no framework
  • A hero built around one large framed picture
  • Checked at phone and desktop widths

Good fit

  • When a photographer, print shop, gallery, artist, hotel or premium product wants one strong picture to carry the page

Not for

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

About this skill

You say

Make a hero for our hotel with one big framed photo of the main room. Copy in brief.md.

It said back

The hero is built and passes the automated check: no sideways overflow, no text under 12px, alt text and names present, contrast, focus styles, reduced motion, and no script errors. I viewed the 1440 and 390 screenshots after the last fix (the 390 one before the label change). I haven't looked at the 768 shot with the label showing, or at the final 1440 after removing the label animation.

What's there

  • Layout: the copy sits on the left and one large framed print on the right. The frame has a walnut border, a cream mat and a picture light above it. Under 960px the copy comes first and the frame fills the width below.
  • Copy: all from brief.md.
  • Headline: "A quiet room by the marshes".
  • Line: "Twelve rooms, a seafood restaurant and the coast path from the garden gate."
  • Buttons: "Check availability" and "See the rooms".
  • Colours: sea green for buttons and highlights, sand for the wall and mat, and the frame kept walnut.
  • Label card: it says "The Harbour Room / At sunset" with a "See the room" link. I left out an edition number and price rather than invent them.
  • Nav: the top bar has only the brand and the main button. The brief gave no menu links, so I added none.
  • Motion: the frame settles in once on load, and it's switched off when reduced motion is on.
Show more

What it did in run 1

  1. framed-picture-hero
  2. ls -la && cat brief.md
  3. cd ./.claude/skills/framed-picture-hero && ls -R . | head -30 && cat reference/index.html reference/style.css reference/script.js; ls ../../..
  4. **/*
  5. ./.claude/skills/framed-picture-hero/reference/index.html
  6. ./.claude/skills/framed-picture-hero/reference/style.css
  7. ./.claude/skills/framed-picture-hero/reference/script.js
  8. S=.claude/skills/framed-picture-hero/reference && cp $S/style.css style.css && cp $S/script.js script.js && python3 - <<'E' import re s=open('style.css').read() s=s.replace("--bg:#E9E5DD","--bg:#EDE3CF").replace("--surface:#FBF9F4","--surface:#FBF7EC").replace("--line:#CFC7BA","--line:#D3C4A5").replace("--accent:#3B2A1E","--accent:#2C5B52").replace("--on-accent:#FBF9F4","--on-accent:#FBF7EC").replace("--em:#6B4A2F","--em:#2C5B52").replace("--mat:#F7F4EC","--mat:#F8F2E4") s=s.replace("--ink:#1F1B16","--ink:#1B2623").replace("--muted:#5A5248","--muted:#4E5750") open('style.css','w').write(s) E cat > index.html <<'E' <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>The Saltings Hotel, Norfolk coast</title> <meta name="description" content="The Saltings Hotel: twelve rooms, a seafood restaurant and the coast path from the garden gate."> <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=Cormorant:ital,wght@0,500;0,600;1,500&family=Figtree: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 fp"> <header class="hbar wrap"><a class="brand" href="#main">The Saltings Hotel</a><a class="btn btn-primary" href="#availability">Check availability</a></header> <main id="main"><div class="wrap fp-in"> <div class="fp-copy"> <p class="h-kick">Norfolk coast</p> <h1>A quiet room by the marshes</h1> <p class="h-lede">Twelve rooms, a seafood restaurant and the coast path from the garden gate.</p> <div class="h-acts"><a class="btn btn-primary" href="#availability">Check availability</a><a class="btn btn-ghost" href="#rooms">See the rooms</a></div> </div> <figure class="fp-art"><div class="fp-frame"> <!-- PLACEHOLDER: replace this svg with the supplied photo: <img src="harbour-room.jpg" width="1600" height="1200" alt="The Harbour Room at sunset, ..."> (4:3) --> <svg viewBox="0 0 400 300" role="img" aria-label="Placeholder for a photograph of the Harbour Room at sunset" preserveAspectRatio="xMidYMid slice"><defs><linearGradient id="sky" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#F3C99A"/><stop offset="1" stop-color="#E8E0C8"/></linearGradient></defs><rect width="400" height="300" fill="url(#sky)"/><rect x="120" y="60" width="160" height="120" fill="#F8E3B8" stroke="#2C5B52" stroke-width="6"/><path d="M120 150 L280 150" stroke="#2C5B52" stroke-width="3"/><path d="M200 60 L200 180" stroke="#2C5B52" stroke-width="3"/><rect y="180" width="400" height="120" fill="#8DA79C"/><rect x="90" y="200" width="220" height="50" fill="#FBF7EC"/><rect x="90" y="190" width="220" height="16" fill="#2C5B52"/></svg> </div> <figcaption class="fp-label"><b>The Harbour Room</b><span>At sunset</span><span><a href="#rooms">See the room</a></span></figcaption> </figure></div></main></div> <script src="script.js" defer></script> </body> </html> E node .claude/skills/framed-picture-hero/scripts/check.mjs index.html --out check 2>&1 | tail -30
  9. ./style.css
  10. ./index.html
  11. node .claude/skills/framed-picture-hero/scripts/check.mjs index.html --out check
  12. ./style.css
  13. node .claude/skills/framed-picture-hero/scripts/check.mjs index.html --out check
  14. reduced-motion|reduceMotion|stylesheet|script
  15. ./script.js
  16. ./index.html
  17. node .claude/skills/framed-picture-hero/scripts/check.mjs index.html --out check
  18. ./check/1440.png
  19. ./check/390.png
  20. ./style.css
  21. node .claude/skills/framed-picture-hero/scripts/check.mjs index.html --out check
  22. ./check/1440.png
  23. ./check/390.png
  24. screenshot|waitFor|setTimeout|sleep
  25. ./check/768.png
  26. ./style.css
  27. node .claude/skills/framed-picture-hero/scripts/check.mjs index.html --out check
  28. ./check/1440.png
  29. ./style.css
  30. node .claude/skills/framed-picture-hero/scripts/check.mjs index.html --out check
  31. ./check/1440.png
  32. ./style.css
  33. node .claude/skills/framed-picture-hero/scripts/check.mjs index.html --out check
  34. Done

10 Nov 2026 · Claude Code 2.1.322 with Claude Sonnet 5.5 · 2 min 47 s · $0.35 of API use

Questions

Is Framed Picture Hero free?

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

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

What do I get when I buy Framed Picture Hero?

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

What do I get from Framed Picture Hero?

One HTML file with its CSS inside: no build step, no framework. A hero built around one large framed picture. Checked at phone and desktop widths.

What does Framed Picture Hero need?

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

How big is Framed Picture Hero?

7 files, about 20,306 tokens in all. The SKILL.md is about 2,239 tokens, and your agent reads it only when the job fits.

What does a run cost?

Our 1 runs took 2 min 47 s to 2 min 47 s and $0.35 to $0.35 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 Framed Picture Hero to use it?

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