CLAUDE.md
Project Overview
Personal blog at https://anindya-saha.github.io/, built with Quarto and Jupyter notebooks, deployed via GitHub Pages.
Tech Stack
- Quarto (v1.6.42) — static site generator, installed at
/home/asaha/quarto-1.6.42/bin/quarto - Jupyter notebooks (
.ipynb) — blog post format - uv — Python dependency management (
pyproject.toml+uv.lock) - GitHub Pages — serves from
docs/onmainbranch
Project Structure
_quarto.yml # Site config (theme, navbar, post-render hooks)
index.qmd # Blog listing page (auto-lists posts/)
about.qmd # About page
styles.css # Custom CSS
pyproject.toml # Python deps (torch, matplotlib, jupyter, etc.)
posts/ # Blog posts — each post is posts/<slug>/index.ipynb
docs/ # Rendered output (committed, served by GitHub Pages)
.claude/skills/ # Claude Code skills for blog workflow
Common Commands
# Activate environment
source .venv/bin/activate
export PATH="/home/asaha/quarto-1.6.42/bin:$PATH"
# Install/sync dependencies
uv sync --extra notebook
# Preview locally
quarto preview
# Render full site
quarto render
# Render single post
quarto render posts/<slug>/index.ipynb --executeBlog Workflow
- Create a new post:
posts/<slug>/index.ipynbwith YAML front matter in a raw cell - Render:
quarto render - Commit and push: rendered output goes to
docs/
Use /blog-create <topic> and /blog-publish skills for the full workflow.
Important Notes
docs/.nojekyllmust exist — the_quarto.ymlpost-render hook handles this- Always render the full site so the listing page and search index update
- PyTorch index is configured for CUDA 12.8 in
pyproject.toml([tool.uv.sources])