Skip to content

DirectorySkills

Block CMS landing page: 1440, made in this run
Run 1Block CMS landing page“Build a landing page for Docket, our API for shipping labels. Notes 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

Block CMS Landing Page

A crisp olive-and-lime landing page for a CMS or developer platform, with an editor hero, tabs and a code sample.

$9.99once, yours to keep

Builds a CMS or content platform landing page in a crisp olive-and-lime style into your own project: crisp white and pale olive with lime highlighter marks, an editor screen in the hero, customer names, workflow tabs, a code sample with a copy button, pricing and questions. 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 headless CMS, content platform, docs tool or API product needs a landing page, or someone asks for a clean, developer-friendly look with lime highlights.

By RecaplyUpdated 11 Nov

Install Block CMS Landing Page

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

Read https://recaply.co/skills/block-cms-landing-page/install.md and follow it to install the block-cms-landing-page skill from block-cms-landing-page.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 Block CMS Landing Page is for

What you get

  • One HTML file with its CSS inside: no build step, no framework
  • A CMS or content platform landing page in a crisp olive-and-lime style
  • Checked at phone and desktop widths

Good fit

  • When a headless CMS, content platform, docs tool or API product needs a landing page

Not for

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

About this skill

You say

Build a landing page for Docket, our API for shipping labels. Notes in brief.md.

It said back

The Docket landing page is built and the automated check passes. It covers overflow, small text, alt text, names, contrast, focus, reduced motion and script errors. I read the 1440 and 390 screenshots and they look right. I didn't open the 768 one.

Files (all in the project root)

  • index.html: the page.
  • style.css: the olive-and-lime design, trimmed to what this page uses.
  • script.js: phone menu, scroll reveal, tabs with arrow keys, and the Copy button.
  • check/: the screenshots at 390, 768 and 1440 px.
Show more

What it did in run 1

  1. ./brief.md
  2. block-cms-landing-page
  3. cd .; ls -la; S=.claude/skills/block-cms-landing-page; ls $S/reference; wc -c $S/reference/*; cat $S/reference/index.html; cat $S/reference/script.js
  4. ls -la && ls .claude/skills/block-cms-landing-page/reference
  5. ./.claude/skills/block-cms-landing-page/reference/index.html
  6. ./.claude/skills/block-cms-landing-page/reference/style.css
  7. ./.claude/skills/block-cms-landing-page/reference/script.js
  8. cp .claude/skills/block-cms-landing-page/reference/style.css style.css && sed -i '' "s/--font-body:'Plus Jakarta Sans', system-ui, sans-serif/--font-body:'JetBrains Mono', ui-monospace, monospace/" style.css && grep -c "font-body:'JetBrains" style.css cat > script.js <<'EOF' // Docket landing page: JS flag, phone menu, reveal on scroll, tabs, copy button. document.documentElement.classList.add('js'); const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)'); for (const b of document.querySelectorAll('[data-nav-toggle]')) { const menu = document.getElementById(b.getAttribute('aria-controls')); const set = (open) => { b.setAttribute('aria-expanded', String(open)); menu && menu.classList.toggle('open', open); }; b.addEventListener('click', () => set(b.getAttribute('aria-expanded') !== 'true')); document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && b.getAttribute('aria-expanded') === 'true') { set(false); b.focus(); } }); menu && menu.addEventListener('click', (e) => { if (e.target.closest('a')) set(false); }); } (() => { const els = document.querySelectorAll('.reveal'); if (reduceMotion.matches || !('IntersectionObserver' in window)) { els.forEach((e) => e.classList.add('in')); return; } const io = new IntersectionObserver((entries) => { for (const en of entries) if (en.isIntersecting) { en.target.classList.add('in'); io.unobserve(en.target); } }, { threshold: 0.12, rootMargin: '0px 0px -5% 0px' }); els.forEach((e) => io.observe(e)); })(); for (const y of document.querySelectorAll('[data-year]')) y.textContent = new Date().getFullYear(); for (const t of document.querySelectorAll('[data-tabs]')) { const tabs = [...t.querySelectorAll('[role=tab]')]; const pick = (tab) => { for (const x of tabs) { const on = x === tab; x.setAttribute('aria-selected', String(on)); x.tabIndex = on ? 0 : -1; document.getElementById(x.getAttribute('aria-controls')).hidden = !on; } tab.focus(); }; t.addEventListener('click', (e) => { const tab = e.target.closest('[role=tab]'); if (tab) pick(tab); }); t.addEventListener('keydown', (e) => { const i = tabs.indexOf(document.activeElement); if (i < 0) return; if (e.key === 'ArrowRight') pick(tabs[(i + 1) % tabs.length]); else if (e.key === 'ArrowLeft') pick(tabs[(i - 1 + tabs.length) % tabs.length]); else if (e.key === 'Home') pick(tabs[0]); else if (e.key === 'End') pick(tabs[tabs.length - 1]); else return; e.preventDefault(); }); } for (const b of document.querySelectorAll('[data-copy]')) b.addEventListener('click', async () => { const s = b.parentElement.parentElement.querySelector('.form-status'); const text = document.getElementById(b.dataset.copy).textContent; try { await navigator.clipboard.writeText(text); if (s) s.textContent = 'Copied.'; } catch { if (s) s.textContent = 'Select the text and copy it.'; } }); EOF
  9. cp .claude/skills/block-cms-landing-page/reference/style.css style.css && ls
  10. ./script.js
  11. ./style.css
  12. ./index.html
  13. node .claude/skills/block-cms-landing-page/scripts/check.mjs index.html --out check 2>&1 | tail -40
  14. ./check/1440.png
  15. ./check/390.png
  16. Done

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

Questions

Is Block CMS Landing Page free?

No. Block CMS Landing Page 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 Block CMS Landing Page?

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

What do I get when I buy Block CMS Landing Page?

A ZIP of the whole skill folder (40 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 Block CMS Landing Page?

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 ./block-cms-landing-page with your agent's flag.

What do I get from Block CMS Landing Page?

One HTML file with its CSS inside: no build step, no framework. A CMS or content platform landing page in a crisp olive-and-lime style. Checked at phone and desktop widths.

What does Block CMS Landing Page need?

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

How big is Block CMS Landing Page?

7 files, about 31,377 tokens in all. The SKILL.md is about 2,568 tokens, and your agent reads it only when the job fits.

What does a run cost?

Our 1 runs took 2 min 11 s to 2 min 11 s and $0.47 to $0.47 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 Block CMS Landing Page to use it?

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