Skip to content

DirectorySkills

Research project page: 1440, made in this run
Run 1Research project page“Make a project page for our paper. Everything is 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

Research Project Page

A clean academic project page for a paper: title, authors, links, main figure, abstract, results table and BibTeX.

$9.99once, yours to keep

Builds a research paper project page into your own project: white and ink with one deep blue, centred title and authors with affiliations, buttons for paper, code and data, the main figure with caption, the abstract, a results table that scrolls on phones and a BibTeX block with Copy. 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 research team needs a project page for a paper, dataset or model release, or someone asks for an academic project homepage with a figure, abstract and BibTeX.

By RecaplyUpdated 12 Nov

Install Research Project Page

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

Read https://recaply.co/skills/research-project-page/install.md and follow it to install the research-project-page skill from research-project-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 Research Project Page is for

What you get

  • One HTML file with its CSS inside: no build step, no framework
  • A research paper project page
  • Checked at phone and desktop widths

Good fit

  • When a research team needs a project page for a paper, dataset or model release

Not for

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

About this skill

You say

Make a project page for our paper. Everything is in brief.md.

It said back

The project page is built, and the automated check passes at 390, 768 and 1440 px. It covers sideways overflow, small text, alt text, names, contrast, focus, reduced motion and script errors. I looked at the 390 px and 1440 px screenshots and the layout reads cleanly. I didn't open the 768 px one.

Files (in the working folder)

  • index.html
  • style.css
  • script.js
Show more

What it did in run 1

  1. research-project-page
  2. ./brief.md
  3. cd .; ls -la . .claude/skills/research-project-page/reference; wc -c .claude/skills/research-project-page/reference/*; cat .claude/skills/research-project-page/reference/index.html
  4. cd .; R=.claude/skills/research-project-page/reference; cp $R/style.css $R/script.js .; python3 - <<'EOF' import re s=open('./.claude/skills/research-project-page/reference/index.html').read() T="Quiet Rooms: Measuring noise in open-plan offices with phone microphones" s=s.replace("Tidal-TS: Learning coastline change from satellite time series",T) s=s.replace('content="Learning coastline change from satellite time series"','content="Phones can estimate open-plan office noise within 2 dB of lab meters. We release an app and 400 hours of data."') s=s.replace("Tidal-TS home","Quiet Rooms home").replace("<span>Tidal-TS</span>","<span>Quiet Rooms</span>") s=s.replace("Conference on Earth Observation 2026 · Oral","Workshop on Sensing and Wellbeing 2026") s=re.sub(r'<p class="authors">.*?</p><p class="affils">.*?</p>','<p class="authors"><span>Sara Okonkwo<sup>1</sup></span>, <span>Pablo Ruiz<sup>2</sup></span>, <span>Ji-woo Han<sup>1</sup></span></p><p class="affils"><span><sup>1</sup>University of Edinburgh</span> <span><sup>2</sup>Universidad de Sevilla</span></p>',s,flags=re.S) # buttons placeholders s=s.replace('<a class="btn btn-primary" href="#paper">','<a class="btn btn-primary" href="#paper"><!-- TODO: paper PDF URL -->',1) s=s.replace('<a class="btn btn-ghost" href="#paper">','<a class="btn btn-ghost" href="#paper"><!-- TODO: GitHub URL -->',1) s=s.replace('<a class="btn btn-ghost" href="#paper">','<a class="btn btn-ghost" href="#paper"><!-- TODO: dataset URL -->',1) fig='''<figure class="fig reveal"><svg viewBox="0 0 800 340" role="img" aria-label="Bar chart of mean error in decibels: previous method 4.5 dB, Quiet Rooms 1.8 dB"><rect width="800" height="340" fill="#F7F8FA"/><g stroke="#E1E4EA"><path d="M60 60H780"/><path d="M60 120H780"/><path d="M60 180H780"/><path d="M60 240H780"/></g><path d="M60 300H780" stroke="#4B5160"/><rect x="200" y="60" width="160" height="240" fill="#4B5160"/><rect x="480" y="168" width="160" height="132" fill="#1F4FB8"/><g font-family="Source Sans 3,Arial" font-size="20" font-weight="600" fill="#16181D" text-anchor="middle"><text x="280" y="50">4.5 dB</text><text x="560" y="158">1.8 dB</text></g><g font-family="Source Sans 3,Arial" font-size="16" fill="#16181D" text-anchor="middle"><text x="280" y="326">Previous method</text><text x="560" y="326">Quiet Rooms (ours)</text></g><text x="60" y="30" font-family="Source Sans 3,Arial" font-size="16" fill="#16181D">Mean error (dB, lower is better)</text></svg><figcaption>Figure 1. Mean error of phone-based noise estimates against lab meters: 1.8 dB for Quiet Rooms against 4.5 dB for the previous method. (Placeholder: replace with the paper's main figure.)</figcaption></figure> ''' s=re.sub(r'<figure class="fig reveal">.*?</figure>\n',lambda m:fig,s,flags=re.S) ab="Open-plan offices are noisy, but measuring that noise normally takes lab-grade meters. We show that ordinary phone microphones can estimate office noise within 2 dB of lab meters. Our method reaches a mean error of 1.8 dB, against 4.5 dB for the previous method. We release an app for measuring noise with a phone and a dataset of 400 hours of recordings." s=re.sub(r'(<div class="abstract reveal"><h2>Abstract</h2><p>).*?(</p>)',lambda m:m.group(1)+ab+m.group(2),s,flags=re.S) tbl='''<table><caption class="sr-only">Mean error against lab meters, in decibels (lower is better).</caption><thead><tr><th scope="col">Method</th><th scope="col">Mean error (dB)</th></tr></thead><tbody><tr><th scope="row">Previous method</th><td>4.5</td></tr><tr><th scope="row">Quiet Rooms (ours)</th><td>1.8</td></tr></tbody></table>''' s=re.sub(r'<table>.*?</table>',lambda m:tbl,s,flags=re.S) bib='''@inproceedings{okonkwo2026quiet, title = {Quiet Rooms: Measuring noise in open-plan offices with phone microphones}, author = {Okonkwo, Sara and Ruiz, Pablo and Han, Ji-woo}, booktitle = {Workshop on Sensing and Wellbeing}, year = {2026} }''' s=re.sub(r'(<code id="bibtex">).*?(</code>)',lambda m:m.group(1)+bib+m.group(2),s,flags=re.S) s=s.replace("Project page for the Tidal-TS paper.","Project page for the Quiet Rooms paper.") s=re.sub(r'<nav class="foot-col" aria-label="Contact">.*?</nav><nav class="foot-col" aria-label="Lab">.*?</nav>','',s,flags=re.S) s=s.replace('Tidal-TS. Sample content for a reference design.','Sara Okonkwo, Pablo Ruiz, Ji-woo Han.') s=s.replace("Tidal-TS","Quiet Rooms") open('./index.html','w').write(s) EOF grep -c Tidal index.html; node .claude/skills/research-project-page/scripts/check.mjs index.html --out check 2>&1 | tail -25
  5. cd .; ls; grep -c Tidal index.html
  6. cp .claude/skills/research-project-page/reference/style.css .claude/skills/research-project-page/reference/script.js . && ls
  7. ./.claude/skills/research-project-page/reference/style.css
  8. ./.claude/skills/research-project-page/reference/script.js
  9. ./style.css
  10. ./script.js
  11. ./index.html
  12. node .claude/skills/research-project-page/scripts/check.mjs index.html --out check 2>&1 | tail -30
  13. ./check/390.png
  14. ./check/1440.png
  15. Done

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

Questions

Is Research Project Page free?

No. Research Project 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 Research Project Page?

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

What do I get when I buy Research Project Page?

A ZIP of the whole skill folder (38 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 Research Project 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 ./research-project-page with your agent's flag.

What do I get from Research Project Page?

One HTML file with its CSS inside: no build step, no framework. A research paper project page. Checked at phone and desktop widths.

What does Research Project Page need?

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

How big is Research Project Page?

7 files, about 26,957 tokens in all. The SKILL.md is about 2,324 tokens, and your agent reads it only when the job fits.

What does a run cost?

Our 1 runs took 1 min 29 s to 1 min 29 s and $0.33 to $0.33 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 Research Project Page to use it?

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