CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
What this is
Static website for PPGCosmo (International PhD Program in Astrophysics, Cosmology and Gravitation at Ufes, Brazil), built with Quarto and deployed to GitHub Pages at ppgcosmo.org.
Commands
pip install jupyter # one-time: Python + Jupyter are required to execute embedded code
quarto preview # live preview with auto-reload
quarto render # full build → _site/There is no test suite or linter. “Correctness” means the site renders without errors and the pages look right in preview.
Deployment
Pushing to main triggers .github/workflows/publish.yml, which runs quarto render (Quarto pinned to 1.7.32) and publishes _site/ to GitHub Pages. No manual deploy step. If you change how pages render, verify with quarto render locally before pushing, since a render failure breaks the live site.
Architecture
The site is data-driven: .qmd pages contain embedded Python (executed at render time via Jupyter) that reads JSON from _data/ and emits HTML. Editing content almost always means editing a _data/*.json file, not the pages.
- Pages:
index.qmd(home + news + coursework),people.qmd,applications.qmd(plain Markdown, edit directly),contributors.qmd. _data/*.json: the content source of truth — people lists (faculty_brazil,phd_students,postdocs,postdocs_previous,alumni,collaborators),institutions,organization(coordinator/deputy), andnews.json._quarto.yml: site-wide config (navbar, footer,flatlytheme,page-layout: full).styles.cssholds CSS overrides.contributors.qmdbuilds its table by shelling out togit log --numstatat render time and maps author names → GitHub handles via_data/github_usernames.json. Add new committers there to get them linked.
news.json entries have two shapes
index.qmd’s news_feed() renders two kinds of entries (see TYPE_COLORS / ROLE_LABELS in the file):
- Call / announcement — has
"type": "call"(or"announcement") and a"title". Rendered with a colored type tag. - Person achievement — has a
"people"array of{"name", "role"}where role isfac|pd|s|a. Notype/title.
Both use date (ISO "2026-05-15" or year-only "2026"), text, and urls (possibly []). Entries are sorted newest-first; the home feed shows only the current and previous calendar year (years=2 cutoff). Note: CONTRIBUTING.md documents only the person shape — the call/announcement shape is real and in active use.
Profile photos
images/people/firstname_lastname.jpg (lowercase, no accents/spaces), referenced by the photo field in the people JSON. Displayed as 90×90 px circles.
Notes
*.quarto_ipynbfiles are Quarto’s intermediate render artifacts — gitignored, safe to ignore;.quarto/and_site/likewise.CONTRIBUTING.mdis the human-facing editing guide and covers the common content edits in more detail.