CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Build & Run Commands
# Install dependencies (requires Ruby + Bundler 2.2.19)
gem install bundler -v 2.2.19
bundle install
# Start development server with live reload (http://localhost:4000)
bash run_server.sh
# or directly:
bundle exec jekyll serve -l
# Build for production (outputs to _site/)
bundle exec jekyll build
There are no automated tests. Test changes manually by running the dev server and visually inspecting the output.
Architecture
This is Zikang Xu’s academic homepage — a single-page site built with Jekyll and hosted on GitHub Pages. It derives from the acad-homepage project, which itself is a customized fork of the Minimal Mistakes Jekyll theme.
Content: One page, one file
All content lives in _pages/about.md. The site has no blog posts and no subpages. The navigation bar links to anchor IDs within this single page.
Adding/changing content means editing _pages/about.md. The file uses YAML front matter (permalink: /) and is organized into sections separated by --- horizontal rules with heading IDs (e.g., #about-me, #-news, #-publications).
Navigation entries are defined in _data/navigation.yml as anchor links. When you add a new section heading with an ID to about.md, add a corresponding entry here.
Layout & partials
_layouts/default.html— the only layout; extends Minimal Mistakescompresslayout with a sidebar + main content structure_includes/— partials for<head>, masthead (nav bar), sidebar (author profile card), analytics, SEO meta tags, and dynamic Google Scholar stats
Customizations on top of the Minimal Mistakes theme
- Single-page layout (blog/post features stripped out)
- Custom styles in
assets/css/main.scss(.paper-boxfor publication entries, anchor scroll offsets, badges) collapse.js/collapse.cssfor accordion/collapsible widgetsacademiconsicon font for academic social links (ORCID, Google Scholar)- MathJax 2.7.4 for LaTeX rendering (configured in
_includes/head/custom.html) - Google Scholar citation stats fetched client-side from jsDelivr CDN
- Base target
_blankfor all external links
Google Scholar crawler
A Python script at google_scholar_crawler/main.py uses the scholarly library to scrape citation data. A GitHub Actions workflow (.github/workflows/google_scholar_crawler.yaml) runs this daily at 8:00 UTC and pushes results to the google-scholar-stats branch. The site reads these stats via jsDelivr CDN (google_scholar_stats_use_cdn: true in _config.yml).
This directory is excluded from the Jekyll build.
Key config (_config.yml)
- Markdown: kramdown with GFM input, Rouge for syntax highlighting
- Sass: compressed output, source in
_sass/ - Excluded from build:
google_scholar_crawler,.github,docs, and various dev artifacts - Included:
_pagesdirectory,.htaccess,files - Plugins: jekyll-paginate, jekyll-sitemap, jekyll-gist, jekyll-feed, jekyll-redirect-from