Skip to content

lulu38m/folio

v0.4.1MIT

Turn a CV into a personal website that looks designed for that one person, not generated.

folio

Your CV, made into a site that is yours.

Rather not install anything? Send your CV at FOLIO_DOMAIN and get your site online, from 12 €. 🇫🇷 Lire en français

folio is an agent skill that turns a CV into a personal website that does not look generated. Give it a CV (PDF, DOCX, LinkedIn export or text) and it builds a static Astro site with an art direction made for that one person, the SEO a personal page needs to come first on the name, and a LinkedIn announcement image and post.

Nothing is invented: every fact on the page comes from the CV.

The two sites above were made by folio from fictional CVs: a nurse whose page is a ward handover sheet, an engineer whose page reads like a spec. Same skill, nothing in common.

Rather not run it yourself? Use FOLIO_DOMAIN

FOLIO_DOMAIN runs folio for you. Send your CV, get your site online at your name. No account, no subscription, no terminal.

SkillEssentielPro
PriceFree12 € once29 € once
Site made from your CV✓✓✓
HostingYour own1 year included, on firstname-lastname.FOLIO_DOMAIN1 year included, on your own domain (.fr included, .com +6 €)
ChangesAs many as you like2 regenerationsUnlimited for 1 year
LinkedIn image and post✓✓✓
"Made with folio" footerYour callYesNo
Site source code✓✓
Renewal, after the first year19 € a year29 € a year

Renewal includes CV updates, and nothing is ever charged automatically.

The skill stays free and open source. Install it below and run it yourself anytime.

Install

Claude Code:

/plugin marketplace add lulu38m/folio
/plugin install folio@folio

Codex:

codex plugin marketplace add lulu38m/folio
codex plugin add folio@folio

Any other agent, one command via the skills CLI (Cursor, Codex, Copilot, Gemini CLI, opencode, and more):

npx skills add https://github.com/lulu38m/folio --skill folio

Add -g to install it globally; drop it to scope it to the current project.

No installer? Copy the skill directly.

git clone https://github.com/lulu38m/folio
mkdir -p ~/.claude/skills && cp -R folio/skills/folio ~/.claude/skills/

Restart Claude Code after copying. In the Claude app, zip skills/folio/ and upload it under Settings → Capabilities → Skills.

Also works with

This repo exposes the skill at every agent's standard discovery path via symlinks. No extra config needed.

AgentHow it discovers
Claude Code.claude/skills/folio/ (in addition to the plugin install above)
Codex CLI.agents/skills/folio/, walking up to the repo root
opencode.opencode/skills/folio/
Google Antigravity.agents/skills/folio/ at the project root, or ~/.gemini/config/skills/folio/ globally
Other agentsPoint custom instructions at skills/folio/SKILL.md, see docs/other-agents.md

Windows users: symlinks need git clone -c core.symlinks=true and Developer Mode or admin rights. If they do not work, copy skills/folio/ to your agent's skill folder instead.

Use it

Attach your CV and ask:

Turn my CV into a website.

Or point it at a site you already have:

Make my personal site look less generated.

The skill works in French and English and writes the site in the CV's language. You get a project folder with work/ (the extracted profile and notes), site/ (the Astro source) and site/dist/, ready to put on Netlify, Vercel, Cloudflare Pages or GitHub Pages.

How it works

  1. Read. extract_cv.py pulls the text, links and photo from the CV. The agent fills a profile, copying facts as written, and asks once, in one message, for anything essential that is missing.
  2. Hide what is private. Phone, street address, date of birth, nationality and photo stay off the page unless the person asks for them.
  3. Deal a direction. deal.py deals three of ten art directions, each with its own type system and palette, seeded by the person, so two people in the same job never get the same site.
  4. Build. A static Astro site from assets/site-template/: React islands for motion, Tailwind, self-hosted fonts from Fontsource, optional Cult UI and Kokonut UI components.
  5. SEO. seo_head.py writes the title, description, Open Graph, a schema.org Person with public facts only, and the sitemap.
  6. Check, look, fix. check_site.mjs opens the site in a real browser at three widths and fails what reads as generated. The agent looks at the screenshots, critiques them like a juror, fixes, and looks again.
  7. Announce. A LinkedIn image and post to share the site.

What it refuses to make

Skill bars, "Hi, I'm Alex 👋", typing effects, timelines with dots, circular avatars, icon rows, tech logo walls, cards for every job, gradients, glass, glows, eyebrow labels, the cream-and-terracotta and purple palettes, Google Fonts links, and any fact that is not in the CV. These style rules are the default: a page may break one of them on purpose, when it hides something true about the person. Monospace and thin rules are only warnings now. Honesty, privacy and legibility have no exception.

Requirements

  • An agent that supports Agent Skills: Claude Code, the Claude app, Codex CLI, opencode, or any agent with custom instructions
  • Python 3.9+ with pypdf
  • Node.js 22.23+ (Node 24 LTS recommended) and npm. Check with node -v. With an older one, the skill fetches Node 24 by itself through npx; to upgrade, nvm install 24 or nodejs.org
  • Playwright with Chromium, for the check: npm i -D playwright && npx playwright install chromium
  • Optional: tesseract (with the French data), to read CVs exported as images (Canva, scans). Without it, the agent reads the page image itself

Optional, for a second review pass: npx skills add vercel-labs/agent-skills --skill web-design-guidelines.

What's in this repo

  • skills/folio/: the skill
    • SKILL.md: the run, step by step, and the house rules
    • references/: directions, copy (with French typography), rules, components, type/colour/layout, SEO, motion, critique
    • scripts/: extract_cv.py, deal.py, new_site.mjs, fetch_fonts.mjs, seo_head.py, check_site.mjs
    • assets/site-template/: the Astro project every site starts from
  • docs/: screenshots and the guide for other agents
  • plugin.json: portable Agent Plugins manifest
  • .claude-plugin/: Claude Code manifest and marketplace catalog
  • .codex-plugin/: Codex manifest
  • .claude/skills/folio/, .agents/skills/folio/, .opencode/skills/folio/: symlinks to skills/folio/

Credits

Contributing

Ideas, bug reports and new art directions are welcome: open an issue or a PR. Please never attach a real person's CV; use a fictional one.

Licence

MIT. The hosted service at FOLIO_DOMAIN is a separate product built on this skill.