CLAUDE.md
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
What this is
Minghao Wu’s academic personal website, published to GitHub Pages at https://minghao-wu.github.io. It is a fork (detached) of the academicpages template, itself built on the Minimal Mistakes Jekyll theme. Almost all “work” here is editing Markdown content with YAML front matter, not writing code.
Commands
bundle install # install Ruby/Jekyll deps (delete Gemfile.lock and retry on errors)
bundle exec jekyll serve # build + serve at http://localhost:4000
To apply local dev overrides (disables analytics, expands SASS, sets localhost url):
bundle exec jekyll serve --config _config.yml,_config.dev.yml
- There are no tests and no lint step.
_config.ymlis not reloaded byjekyll serve— restart the server after editing it.- Deployment is automatic: pushing to
mastertriggers GitHub Pages to build and publish. There is no CI workflow in the repo; the site is built by GitHub’sgithub-pagesgem, so only GitHub-Pages-whitelisted plugins work. package.json/npm run build:jsonly minifies theme JavaScript intoassets/js/main.min.js. You rarely need this; only run it if you change files underassets/js/.
Content architecture
Content is organized as Jekyll collections, each a top-level _<name>/ directory of Markdown files. Collections and their permalinks are declared in _config.yml under collections:; per-collection page defaults (layout, author profile, etc.) are under defaults:. To add a new collection you must register it in both places.
Active collections in this site:
| Directory | URL | Purpose |
|---|---|---|
_publications/ | /publications/ | Academic papers — the primary content |
_posts/ | /posts/ | Blog posts (YYYY-MM-DD-slug.md) |
_thoughts/ | /thoughts/ | Informal personal reflections |
_digests/ | /digests/ | AI-generated daily arXiv digests (see below) |
The template also ships _talks/, _teaching/, _portfolio/ but they are disabled (commented out in _config.yml collections and in navigation).
Each collection has a matching index page in _pages/ (e.g. _pages/publications.md, _pages/digests.md) that simply loops over site.<collection> and renders each entry via _includes/archive-single.html. Adding a Markdown file to the collection directory is enough for it to appear on its index page; you do not edit the index page to add items.
The homepage is _pages/about.md (its front matter sets permalink: /). This is the most frequently edited file — it holds the bio, research-interest summary, and CV links.
Navigation
The top nav bar is driven entirely by _data/navigation.yml. Most entries are commented out; only Publications, CV, and Blog Posts are currently shown. Enabling a section in the nav requires uncommenting it there and ensuring the corresponding collection is enabled in _config.yml.
Adding a publication
Create _publications/<slug>.md. Follow the front matter of an existing entry (e.g. _publications/acl-2025-incline.md): title, collection: publications, permalink: /publication/<slug>, date, venue, paperurl, and a citation string (raw HTML allowed — used for author bolding, award notes, links). The body typically holds a BibTeX block and an ## Abstract. Paper PDFs live in files/papers/ and are served at /files/papers/....
The markdown_generator/ scripts (publications.py, talks.py, and matching .ipynb) can bulk-generate these Markdown files from a TSV, but existing entries were hand-written and are richer than the generator’s output. Prefer editing Markdown directly for one-off additions.
Digests
_digests/ contains files like arxiv_cs_CL_YYYY-MM-DD_report.md that are generated externally by an LLM pipeline and committed with messages like “Update digest for …”. These are machine-generated content, not something to author by hand.
Layout / theme internals
Only touch these when changing site appearance or structure:
_layouts/— page templates (single.html,archive.html,talk.html, etc.); front matterlayout:selects one._includes/— reusable partials (author profile, nav, head, footer,archive-single.html)._sass/+assets/— styles and compiled CSS/JS.files/— static downloads (cv/,papers/,slides/) served under/files/._data/—navigation.yml,authors.yml,ui-text.yml(theme string translations).
Static assets
Files under files/ and images/ are served as-is. CV PDFs live in files/cv/ and are linked by absolute URL (https://minghao-wu.github.io/files/cv/...) from about.md and _pages/cv.md — update the PDF in place to refresh the linked CV.
