A bare-bones academic website that Claude Code builds with you — and keeps updated for you.
This template ships deliberately unstyled. Instead of fighting someone else's design, you show Claude Code a site you like (a link, a screenshot, a few notes) and it restyles the template to match. From then on, maintenance is a conversation: paste an arXiv link and your new preprint appears, formatted and in the right place. Deploys to GitHub Pages for free — no build step, no framework, no config.
- Bare bones by design — clean, semantic HTML/CSS/JS meant to be reshaped into your site, not a theme to work around.
- Built from your references — the included
/setup-siteskill turns links, screenshots, or descriptions of sites you like into a design tailored to you. - Easy to update over time — publications, news, talks, etc. each live in a
data/*.jsonfile; the page renders from them automatically. Update the file (or just tell Claude Code what changed) and the site follows. - No build step — vanilla HTML/CSS/JS, deploys to GitHub Pages as-is.
Steps 1–3 run in your terminal; from step 4 on, you're talking to Claude Code.
-
Get a copy of this repo: sign in to GitHub (create a free account if needed), then on this repository's page click the green "Use this template" button (top right) → "Create a new repository". Name it
<your-github-username>.github.io(e.g.,janedoe.github.io) — that exact name makes GitHub host your site at that address for free. -
Clone your copy to your computer:
git clone https://github.com/<your-username>/<your-username>.github.io.git
-
Install Claude Code: follow the install instructions, then launch it from inside your cloned folder:
cd <your-username>.github.io claude
-
Design the site: run
/setup-siteand give it links or screenshots of sites whose design you like, plus any notes. Claude will restyle the template to match, swap in your real name/bio/links, and verify the result. -
Preview any time with
/preview-site, or manually:python3 -m http.server 8000 # open http://127.0.0.1:8000/(Opening
index.htmldirectly viafile://won't work — the site fetches its JSON over HTTP.) -
Publish: when you're happy with it, ask Claude to commit and push, then follow Deploying to GitHub Pages.
Run /update-site-data and describe the change — for example:
- Paste an arXiv/OSF/SSRN URL or a BibTeX entry to add a working paper.
- "Our cascade paper was published in Nature" to convert a working paper to published (renames its
docs/publications/directory, moves the JSON entry, updates the BibTeX). - "Add a news item about my invited talk at X."
Or edit the data/*.json files by hand — schemas are documented in
.claude/skills/update-site-data/references/schemas.md.
Example: moving a paper from "Working Paper" to "Published" by hand
- Move its entry from
data/working_papers.jsonto the top ofdata/publications.json, addingpublication(venue) andyearfields. - Rename its directory
docs/publications/0_LastName_ShortTitle/→docs/publications/YYYY_LastName_ShortTitle/and update the entry'spdfPath/bibPathto match. - Validate (
python3 -m json.tool data/publications.json) and preview.
- Push the repository to GitHub.
- In the repo settings, enable Pages → deploy from the
mainbranch, root folder. - Your site appears at
https://<username>.github.io/<repo>/(or name the repo<username>.github.ioto serve at the root).
index.html # page skeleton; sections are filled from data/
css/styles.css # minimal default styling (restyled by /setup-site)
js/ # one renderer per section + shared utils.js
data/ # all site content, one JSON file per section
docs/publications/ # one directory per paper: PDF + cite.bib
assets/images/ # headshot and other images
.claude/skills/ # setup-site, update-site-data, preview-site
CLAUDE.md # conventions Claude Code follows in this repo
The site links to your CV (see data/profile.json) — if you don't have one ready, check out mrd-cv-template, a simple LaTeX/Overleaf academic CV template, also powered by Claude Code. After it is built, drop the PDF into docs/cv.pdf.
If you use this template I would appreciate it if you let me know. You can contact me directly (matthewdeverna.com) or create an issue in this repository. Thanks!!