CLAUDE.md

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

Project Overview

Personal academic website for Bas Machielsen (Assistant Professor, Applied Economics, Utrecht University), built with Quarto and deployed to Netlify at https://basmachielsen.nl.

Commands

# Preview site locally (live reload)
quarto preview

# Render the full site
quarto render

# Render a single file
quarto render posts/some-post.qmd

# Publish to Netlify
quarto publish netlify

# Render presentations (uses _quarto_custom.yml, outputs to _presentation/)
quarto render --profile custom

Python dependencies are managed with uv:

uv sync          # install dependencies from uv.lock
uv add <package> # add a new dependency

Architecture

The site is a Quarto website. Key files:

  • _quarto.yml — main config: navbar structure, theme (cosmo + brand.scss), renders all *.qmd except /presentations/*
  • _quarto_custom.yml — alternate profile for rendering presentations; outputs to _presentation/
  • _publish.yml — Netlify deployment target
  • styles.css — custom CSS overrides
  • .Rprofile — configures reticulate to use the .venv Python environment so R and Python interop works in .qmd files

Content directories: - posts/ — blog posts (.qmd with embedded R/Python computations; heavy use of _freeze/ for caching) - wip/ — work-in-progress papers - publications/ — published/under-review papers - presentations/ — excluded from main render; use _quarto_custom.yml to render them - cv/ — CV page

Build outputs (gitignored): _site/, _freeze/, .quarto/, *_cache/, *_files/

Content Notes

  • Blog posts may use R or Python code chunks; computations are cached in _freeze/. If changing a post’s code, delete its _freeze/ entry to force re-execution.
  • Python environment: 3.10, managed via uv. The .venv/ is used by both direct Python execution and reticulate (R).
  • Presentations live under presentations/ and are excluded from the default quarto render; render them separately with the custom profile.