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.yml holds 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-matter defaults, which set the layout, author_profile, and so on.
  • _data/navigation.yml controls 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 to files/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.html groups them by front-matter category, whose keys come from publication_category in _config.yml; arXiv papers use preprints.
  • Unused collections: talks, teaching and portfolio are still configured in _config.yml but have no content (their directories were removed), and their listing pages aren’t in the nav.
  • Static assets: images go in images/ (the avatar profile.png is referenced by filename only), and PDFs go in files/. Both are served at /images/... and /files/....
  • Theme: layouts are in _layouts/ (single is 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 (with talkmap/) builds a map of talk locations. Both are optional helpers.