CLAUDE.md

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

Commands

Task Command
Full build quarto render
Preview (live reload) quarto preview
Deploy to server deploy-academic
New post (init) python commands/post-init.py "Post Title"
Publish post python commands/post-publish.py "slug"
Render single file quarto render path/to/file.qmd

Post workflow: post-init.py creates posts/YYYY-MM-DD-{firstword}/index.qmd. After writing content, post-publish.py renders the post, updates the blog index and home page, then instructs to run deploy-academic.

Git: Local only — never run git push. Use tags for versioning.

Architecture

Site structure

  • _quarto.yml — site config, navbar, theme (yeti/superhero for light/dark), social links
  • styles.css — all custom CSS (CSS variables, dark mode, hero layout, publications, teaching iframes)
  • index.qmd — home page hero (grid: text + 220px photo column)
  • posts/ — blog posts, each in YYYY-MM-DD-word/index.qmd with freeze: auto
  • publications/ — one dir per publication with index.md (YAML only), optional PDF, cite.bib
  • teaching/ — course materials (.qmd files + media/ subdirs)
  • co-workers/ — colleagues/PhD students page
  • commands/ — Python workflow helpers
  • _extensions/mcanouil/iconify/ — for icons in navbar

Publications system

Publications are metadata-only (index.md with YAML frontmatter, no body content). The publications/index.qmd page creates 6 Quarto listings, each filtered by pubtype:

article | chapitre | conference | livre | prepublication | other

Each listing renders via publications.ejs (EJS template) producing <ul class="pub-list"> items with year, PDF/CODE badges, title, description, and optional image.

Adding a publication: Create publications/{name}/index.md with fields: title, date, year, description (format: “Authors — Venue (Year)”), pdf, pubtype. Optionally add code, image.

Posts system

posts/_metadata.yml applies freeze: auto and toc: true to all posts. Post frontmatter uses tags, categories (writings | computing), description, optional image.

CSS architecture

styles.css uses CSS variables (--accent-pink, --text-muted) with dark mode overrides via .quarto-dark class. Key layout classes: .home-hero (grid), .profile-pic (circular 180px), .pub-list/.pub-item (flex, responsive), .light-title.