CLAUDE.md

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

What this is

Sergei Istomin’s personal website — a Quarto static site deployed to GitHub Pages at the root of Neanderthal.github.io. It hosts an About page, multiple CV variants, and a blog (posts/).

Commands

  • quarto preview — local dev server with live reload (use this while editing)
  • quarto render — build the static site into _site/
  • quarto install — install missing dependencies if a render fails

There is no test suite, linter, or package manager. The “build” is quarto render.

Deployment

Pushes to main trigger .github/workflows/static.yml, which runs quarto render (Quarto 1.7.32, pinned in the workflow’s QUARTO_VERSION env var) and publishes _site/ to GitHub Pages. Do not bump that version casually — local renders should match CI. There is no preview/staging environment; main is production.

Site architecture

  • _quarto.yml — site-wide config: navbar links, superhero theme, GoatCounter analytics snippet (also mirrored in includes/analytics.html). Output dir is _site/.
  • index.qmd — homepage; uses Quarto’s listing feature to auto-render posts/ sorted by date desc with category filters. Adding a new post = adding a new folder under posts/; no manual index edits needed.
  • about.qmd — landing page for the About tab; links out to CVs in cv/.
  • posts/<slug>/index.qmd — one folder per post, each with its own image.* thumbnail. Frontmatter requires title, author, date, categories, image. posts/_metadata.yml sets freeze: true for all posts (cached computational output — see Quarto freeze docs before changing).
  • cv/ — CV variants in both .qmd (rendered) and .pdf (linked directly).
  • drafts/, work_dairy/, LLM_Promts/, connect.md — local scratch/notes; not wired into the navbar or listing, but are rendered if Quarto picks up .qmd files at the project root level. Keep drafts as .md (not .qmd) or move them outside the project to keep them out of _site/.
  • .obsidian/ — this directory is also an Obsidian vault. Don’t edit .obsidian/ config; it’s gitignored.

Conventions

  • New blog post: mkdir posts/my-slug && $EDITOR posts/my-slug/index.qmd and drop a thumbnail image alongside it. Match the frontmatter shape of an existing post.
  • Don’t commit _site/ build artifacts as standalone files in the repo root (e.g. index.html, tarballs of the structure) — those belong in _site/ and are generated by quarto render. .gitignore covers .quarto/ but not _site/; check git status before committing.
  • The welcome post still has the Quarto template’s placeholder author (“Tristan O’Malley”) — fix if you touch that file.