CLAUDE.md

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

This is an academic personal website built on GitHub Pages using the Academic Pages theme (a fork of Minimal Mistakes Jekyll theme). It’s designed for researchers to showcase their publications, talks, blog posts, and professional information.

Development Commands

Local Development

  • bundle clean - Clean up the directory (no need to run with --force)
  • bundle install - Install Ruby dependencies
  • bundle exec jekyll liveserve - Generate HTML and serve from localhost:4000 with automatic rebuild

npm Commands (JavaScript build)

  • npm run uglify - Minify and concatenate JavaScript files
  • npm run watch:js - Watch for JavaScript changes and auto-build
  • npm run build:js - Build JavaScript (runs uglify)

Architecture

Core Jekyll Structure

  • _config.yml: Main Jekyll configuration including site settings, author info, navigation, and collection definitions
  • _pages/: Static pages like About, Publications, Talks, etc.
  • _layouts/: HTML templates defining how different content types are rendered
  • _includes/: Reusable HTML components (head, footer, navigation, etc.)
  • _sass/: SCSS stylesheets for theming
  • assets/: Static assets (CSS, JS, images)

Collections

The site uses Jekyll collections for structured content:

  • _posts/: Blog posts
  • _publications/: Academic publications
  • _talks/: Conference talks and presentations
  • _portfolio/: Portfolio items
  • _teaching/: Teaching materials

Data Files

  • _data/navigation.yml: Main navigation menu configuration
  • _data/ui-text.yml: UI text and labels (supports internationalization)

Markdown Generation Tools

The markdown_generator/ directory contains Python scripts and Jupyter notebooks for automating content creation:

  • pubsFromBib.py: Converts BibTeX files to markdown publication entries
  • publications.py: Converts TSV data to publication markdown files
  • talks.py: Converts TSV data to talk markdown files
  • publications.ipynb/talks.ipynb: Interactive versions with documentation

BibTeX files:

  • proceedings.bib: Conference proceedings
  • pubs.bib: Other publications

Key Configuration Points

Site Settings

  • Site URL and title configured in _config.yml
  • Author profile information (social links, bio, etc.) in _config.yml
  • Navigation menu in _data/navigation.yml

Content Front Matter

Content files use Jekyll front matter with:

  • layout: Template to use
  • title: Page title
  • date: Publication date
  • collection: Collection name (for collection items)
  • permalink: Custom URL if needed

Theme Customization

  • Uses Academic Pages theme (based on Minimal Mistakes)
  • Color scheme and typography via SCSS files
  • Responsive design with mobile support

File Organization

Static Files

  • files/: Upload files that appear at /files/ (PDFs, ZIP files, etc.)
  • images/: Image assets
  • talkmap/: Interactive talk location visualization using Leaflet.js

Generated Content

  • _site/: Jekyll-generated static site (don’t edit directly)

Development Setup Requirements

  • Ruby with bundler
  • Node.js and npm
  • Python 3.6+ (for markdown generation tools)
  • Required Ruby gems specified in Gemfile
  • Required npm packages in package.json

Common Tasks

Adding New Publications

  1. Add entries to proceedings.bib or pubs.bib files
  2. Run python3 markdown_generator/pubsFromBib.py to generate markdown files
  3. Generated files will appear in _publications/

Adding New Talks

  1. Update talks.tsv with talk information
  2. Run the talks.py script or use talks.ipynb
  3. Generated files will appear in _talks/

Modifying Site Structure

  • Edit navigation in _data/navigation.yml
  • Add new pages in _pages/ directory
  • Modify layouts in _layouts/ or create new ones
  • Update _config.yml for site-wide settings