CLAUDE.md

CLAUDE.md

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

Build & Development Commands

# Install dependencies
bundle install
npm install  # only needed if modifying JavaScript

# Run locally (with live reload)
jekyll serve -l -H localhost
# Site available at http://localhost:4000

# Build static site
jekyll build

# JavaScript minification (if modifying JS)
npm run uglify
npm run watch:js  # watch mode

# Docker alternative
docker build -t jekyll-site .
docker run -p 4000:4000 --rm -v $(pwd):/usr/src/app jekyll-site

Architecture

This is a Jekyll-based academic website using the Minimal Mistakes theme (Academic Pages fork).

Content Collections

  • _talks/ - Talk entries with date-prefixed filenames (YYYY-MM-DD-slug.md)
  • _publications/ - Research publications
  • _pages/ - Main site pages (about, cv, etc.)
  • _posts/ - Blog posts

Key Configuration

  • _config.yml - Site-wide settings, author info, collection definitions
  • _data/navigation.yml - Main navigation menu
  • _data/authors.yml - Author profiles

Layouts & Includes

  • _layouts/ - Page templates (single.html for most content, talk.html for talks)
  • _includes/ - Reusable components (author-profile.html, masthead.html, footer.html)

Assets

  • _sass/ - SCSS source files; _variables.scss for colors/fonts
  • assets/css/main.scss - Main stylesheet entry point
  • assets/js/ - JavaScript files; _main.js is source, main.min.js is compiled
  • images/ - Content images
  • files/ - Downloadable files (PDFs, etc.)

Content Generation Tools

  • markdown_generator/ - Python/Jupyter notebooks to generate markdown from TSV data
    • publications.py / talks.py - Generate collection items from TSV files
    • Input: publications.tsv, talks.tsv

Front Matter Formats

Talks

---
title: "Talk title"
kind: talks              # talks | panels | posters | teaching — drives the colored tag
type: "Invited talk"  # or "Panel", "Workshop"
permalink: /talks/YYYY-MM-DD-slug
venue: "Venue name"
date: YYYY-MM-DD
location: "City, Country"
---

Do not use a collection: front-matter key. Jekyll derives page.collection from the containing directory (_talks/talks) and that derived value shadows anything written in front matter, so the key is silently ignored. Use kind: instead — _includes/archive-single-talk.html reads it to render the tag, styled by .talk__tag--<kind> in _sass/_archive.scss.

Publications

---
title: "Publication title"
collection: publications
category: "manuscripts"  # or "conferences", "books"
venue: "Journal/Conference"
date: YYYY-MM-DD
paperurl: "https://..."
citation: "Full citation"
---

Research

---
title: "Paper title"
collection: research
permalink: /research/YYYY-slug
year: 2024
authors: "Author1, Author2"
venue: "ICML"
venue_order: 6        # controls sort within same year (lower = displayed first)
arxiv_id: "2305.19473"
paperurl: "https://arxiv.org/abs/2305.19473"
codeurl: "https://github.com/org/repo"  # optional
image: "research/slug.png"              # optional
abstract: |
  Abstract text...
bibtex: |
  @article{...}
---

venue_order values

Within the same year, papers are sorted by venue_order ascending (1 = top of page):

  • 1: NeurIPS
  • 2: AISTATS
  • 3: ICLR
  • 4: ICML
  • 5: TMLR (and other venues)
  • 6: arXiv preprint

Pages

---
title: "Page title"
permalink: /page-slug/
author_profile: true
---