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 linksstyles.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 inYYYY-MM-DD-word/index.qmdwithfreeze: autopublications/— one dir per publication withindex.md(YAML only), optional PDF,cite.bibteaching/— course materials (.qmdfiles +media/subdirs)co-workers/— colleagues/PhD students pagecommands/— Python workflow helpers_extensions/mcanouil/iconify/— foricons 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.