CLAUDE.md

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

Local Development

Serve the site locally with Jekyll:

bundle exec jekyll serve

The site will be available at http://localhost:4000. Changes to _config.yml require a server restart; all other files hot-reload.

Alternatively, use Docker (build the image first if not already done):

docker build -t sandbox .
docker compose up

Site Architecture

This is a Jekyll-based personal academic website using the minima theme with Bootstrap 3 for layout.

Key pages are Markdown files at the root or in subdirectories with front matter specifying layout, title, and permalink:

Navigation is a single shared include: _includes/menu.md. It uses page.permalink to apply an active CSS class to the current page link.

Layouts:

Publications Collection

Publications live in _publications/ as Markdown files with YAML front matter. The filename convention is YYYY-MM-slug.md. Key front matter fields:

layout: publication
key: authorYYYYkeyword
author: 
title: "…"
journal:    # or booktitle:
year: YYYY
abstract: |-
  
bibtex: |-
  
arxiv: url
preprint: url
full-text: url
doi: identifier
slides: url
video: url
replication-package: url
website: url
image: publications/filename.png   # relative to /img/
award: "Best Paper Award"
disable-page: true   # omit individual page, show only in list

publications.md iterates site.publications in reverse order to display the list. Individual publication pages use publication.html.

Courses Page

courses/index.md is a manually maintained Markdown list grouped by academic year (e.g., #### 2021–2024). To add a new course or lecture link for a year, add or update the appropriate section with a Markdown list item.

Blog Posts

Posts live in _posts/ with the filename convention YYYY-MM-DD-slug.md. Key front matter fields:

layout: post
title: "…"
date: YYYY-MM-DD
author: Luís Cruz
summary: "One-sentence summary shown in the blog index."
image: blog/filename.png   # relative to /img/; used for Open Graph
equation: true             # optional: load MathJax
mermaid: true              # optional: load Mermaid diagrams
draft: true                # optional: marks post as draft
invisible: true            # optional: hides post from blog index listing

News / Updates

Site-wide news items are in _data/updates.yml. Each entry:

- msg: "Text of the update"
  date: "YYYY/MM/DD"
  link: "URL"              # optional
  badge: "Badge label"     # optional

Content Guidelines