CLAUDE.md
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
What this is
Xintian Pan’s personal academic homepage (https://xintianpan.github.io), built on the Academic Pages Jekyll template (a fork of Minimal Mistakes). GitHub Pages builds and deploys it automatically on every push to master. There’s no CI or test suite. A change counts as verified when the site builds and renders correctly.
Commands
bundle install # install Ruby deps (if it errors, delete Gemfile.lock and retry)
bundle exec jekyll serve -l -H localhost # serve at localhost:4000 with livereload
bundle exec jekyll build # one-off build into _site/
# Docker alternative
docker build -t jekyll-site .
docker run -p 4000:4000 --rm -v $(pwd):/usr/src/app jekyll-site
# JS bundle: only needed after editing assets/js/_main.js or assets/js/plugins/*
npm install && npm run build:js # regenerates assets/js/main.min.js (committed)
Changes to _config.yml don’t hot-reload. Restart jekyll serve after editing it.
Architecture
_config.ymlholds site identity and the sidebar author profile (author:block: avatar, bio, email, social links). It also defines the collections (teaching,publications,portfolio,talks) and their front-matterdefaults, which set the layout, author_profile, and so on._data/navigation.ymlcontrols the top nav: Publications, Projects, CV, Blog Posts.- Content source of truth is the LaTeX CV in
~/Projects/Curriculum-Vitae(main.tex; its build is copied tofiles/CV_XintianPan.pdf). When the CV changes, update the PDF and the pages that mirror it:_pages/about.md: the homepage (permalink: /), with bio, research interests, news, publications, and short research-experience entries._pages/projects.md: per-project detail. Headings get anchor IDs (/projects/#swarm) that the homepage links to._pages/cv.md: education, experience, awards, and skills. Its publication list is generated from_publications/._publications/*.md: one file per paper.publications.htmlgroups them by front-mattercategory, whose keys come frompublication_categoryin_config.yml; arXiv papers usepreprints.
- Unused collections:
talks,teachingandportfolioare still configured in_config.ymlbut have no content (their directories were removed), and their listing pages aren’t in the nav. - Static assets: images go in
images/(the avatarprofile.pngis referenced by filename only), and PDFs go infiles/. Both are served at/images/...and/files/.... - Theme: layouts are in
_layouts/(singleis the default), partials are in_includes/, and styles are in_sass/. They’re vendored template code, so edit them only for deliberate styling changes. markdown_generator/has Python scripts and notebooks that generate_publications/and_talks/Markdown from TSV or BibTeX.talkmap.py(withtalkmap/) builds a map of talk locations. Both are optional helpers.
