CLAUDE.md
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
What This Is
A Jekyll-based academic personal website for Maggie Zhang, built on the Academic Pages template. It is deployed via GitHub Pages at mz44zhang.github.io.
Local Development
# Install dependencies (first time)
bundle install
# Serve locally with live reload
bundle exec jekyll serve -l -H localhost
# Site available at http://localhost:4000
# Alternatively, using Docker
docker compose up
If bundle install fails with permission errors, first run:
bundle config set --local path 'vendor/bundle'
Architecture
Content and configuration are fully separated:
_config.yml— Site-wide settings (author info, social links, publication categories, plugin config). Requires server restart when changed._data/navigation.yml— Top nav links. Currently only “CV” is active; other sections (Publications, Talks, etc.) are commented out._data/cv.json— Structured CV data used by the JSON-based CV page (/cv-json/)._pages/— Static pages (about, CV, 404, etc.).about.mdis the homepage (permalink: /)._publications/,_talks/,_posts/,_teaching/,_portfolio/— Content collections. Each item is a Markdown file with YAML front matter.files/— PDFs and downloadable assets (served at/files/<filename>).images/— Site images;profile.pngis the sidebar avatar.
Collections behavior
publications→ individual pages generated (output: true)teaching,portfolio,talks→ no individual pages (output: false)
CV page
The CV page (_pages/cv.md) currently embeds files/Maggie_Zhang_CV___IS.pdf via an <iframe>. The JSON-driven alternative (_pages/cv-json.md) reads from _data/cv.json and can be regenerated with:
./scripts/update_cv_json.sh
Adding Content
New publication — create _publications/YYYY-MM-DD-short-title.md with front matter:
---
title: "Paper Title"
collection: publications
category: manuscripts # or 'conferences' or 'books'
permalink: /publication/YYYY-MM-DD-short-title
excerpt: 'Brief description'
date: YYYY-MM-DD
venue: 'Journal or Conference Name'
paperurl: 'https://...'
citation: 'Author et al. (Year). ...'
---
Bulk content generation — use the Jupyter notebooks or Python scripts in markdown_generator/ to convert TSV files (talks.tsv, publications.tsv) into properly formatted Markdown files.
Enabling Nav Sections
Uncomment the relevant entries in _data/navigation.yml to add sections (Publications, Talks, Teaching, Portfolio, Blog Posts) to the top navigation.
