
Gives Claude direct access to Francisco Perez-Sorrosal's professional CV data without needing to parse PDFs or scrape websites. The server exposes structured resume information including work history, education, skills, and projects through simple queries. Useful when you need to answer questions about Francisco's background, generate customized cover letters, compare qualifications against job requirements, or pull specific career details into other documents. The source repository includes LaTeX files that compile to PDF, though the MCP interface abstracts away the document format entirely. Reach for this when you're working with Francisco and need his professional information readily available in your Claude conversations rather than constantly copying and pasting from static documents.
The single source of truth for Francisco Perez-Sorrosal's CV content. YAML data, validation schema, and publishing workflow. Rendered artifacts (PDF, HTML, LaTeX, Typst, Markdown) are generated and released via GitHub Releases, never committed here.
cv-data/resume.yaml — structured CV content (experience, education, skills, publications, patents, etc.)cv-data/resume-semantics.yaml — semantic overlay (topics, relationships, annotations)schemas/ — JSON Schema for validation; mirrored from cv-forge.github/workflows/ — CI validation and tag-triggered publishingTo propose an edit to the CV data:
git switch -c update/your-changecv-data/resume.yaml or cv-data/resume-semantics.yamlmainThe CI workflow validates automatically; if checks pass, merge and proceed to Publishing.
# Install check-jsonschema (standalone CLI)
pip install check-jsonschema
# Validate both files
check-jsonschema --schemafile schemas/resume.schema.json cv-data/resume.yaml
check-jsonschema --schemafile schemas/semantics.schema.json cv-data/resume-semantics.yaml
All green? Ready to PR.
A release is triggered by pushing a CalVer tag in the form YYYY.MM.DD (with optional .N for same-day re-releases, e.g. 2026.09.13.1).
git tag 2026.09.13
git push origin 2026.09.13
The workflow automatically:
release.json manifest (consumed by the MCP server)All assets are stable, version-free URLs under releases/latest/download/<name>.
To re-run the publish workflow without creating a new tag (useful when templates or rendering logic changes):
gh workflow run publish.yml -f tag=2026.09.14
Or via the GitHub Actions UI:
tag inputThis regenerates all eight release assets and redeploys the site, keeping the same version number. Assets at releases/latest/download/ are updated in place (overwritten).
The JSON schemas in schemas/ are mirrored from cv-forge. When cv-forge releases a new version that changes the data models (via export-schemas), update the schemas in this repo:
After cv-forge merges a PR that changes src/cv_forge/models/, refresh the mirrored copies:
curl -s https://raw.githubusercontent.com/francisco-perez-sorrosal/cv-forge/v1/schemas/resume.schema.json > schemas/resume.schema.json
curl -s https://raw.githubusercontent.com/francisco-perez-sorrosal/cv-forge/v1/schemas/semantics.schema.json > schemas/semantics.schema.json
git add schemas/
git commit -m "chore: sync schemas from cv-forge v1"
git push
The CI drift-check (.github/workflows/validate.yml) compares the local schemas against the remote cv-forge v1 copies. If they diverge, the check fails and blocks PRs until the sync above completes. A push that lands seconds before cv-forge re-points its v1 tag can fail the drift check with a 404 on the upstream fetch; re-run the failed Validate CV Data job once the tag exists.
resume.yaml and resume-semantics.yaml, published as release assets (see the URL pattern below)fps-cv://resume, fps-cv://semantics) and per-entry lookupsFranciscoPerezSorrosal_CV.pdfFranciscoPerezSorrosal_CV.html, also served at the live CV siteFranciscoPerezSorrosal_CV.texFranciscoPerezSorrosal_CV.typFranciscoPerezSorrosal_CV.mdAll at https://github.com/francisco-perez-sorrosal/cv/releases/latest/download/<filename>.
The cv Claude Code plugin connects to an MCP server that serves the CV:
MCP Server: https://fps-cv-mcp.wasmer.app/mcp
The server fetches the latest release data automatically; no deploy required when you publish.
See CLAUDE.md for entry ID scheme, cross-reference rules, date format, and validation commands.
The cv-forge maintainer plugin provides an interactive edit flow:
No manual YAML editing or command-line work required. The plugin uses your gh auth for the PR.
cv-forge — machinery that renders, serves, and publishes this data. Contains the CLI, MCP server, and the two Claude Code plugins (cv consumer, cv-forge maintainer).