Repository Guidelines

Repository Guidelines

Project Structure & Module Organization

The site arranges content through Jekyll collections: _pages/ for static pages, _posts/ for dated updates, plus _portfolio/, _publications/, _talks/, and _teaching/ for resume-style sections. Shared Liquid snippets sit in _includes/, while _layouts/ defines page shells and _sass/ provides theme partials compiled into assets/css/. Client assets live in assets/js/ and images/, with main.min.js generated from _main.js. Use files/ for downloadable artifacts, _data/ for structured YAML, and markdown_generator/ or scripts/ when bulk-importing content.

Build, Test, and Development Commands

Run bundle install and npm install once per environment. Use bundle exec jekyll serve -l -H localhost for live previews, or docker compose up when you prefer a disposable container. Validate before committing with bundle exec jekyll build --strict_front_matter and bundle exec jekyll doctor. Regenerate JavaScript assets via npm run build:js, and use npm run watch:js while iterating.

Coding Style & Naming Conventions

Front matter keys stay in snake_case and include title, layout, permalink, and date when applicable. Name markdown files in lowercase kebab-case, e.g., _posts/2025-09-16-new-paper.md or _pages/about.md. Follow two-space indentation for Liquid, HTML, and YAML; SCSS partials should extend shared variables instead of copying declarations. JavaScript follows the existing ES6 pattern in _main.js: arrow functions, semicolons, double quotes, and guarded access to globals.

Testing Guidelines

Always run bundle exec jekyll build --strict_front_matter to surface missing front matter or assets, then spot-check the affected pages in the local server. When JS changes, rebuild with npm run build:js and verify dark/light theme toggles and navigation behaviors. Large TSV imports should be regenerated via markdown_generator/ notebooks and reviewed for formatting drift.

Commit & Pull Request Guidelines

Write short, imperative commit messages such as “Add keynote recording” or “Tweak hero spacing”. PR descriptions should explain the user-facing impact, call out modified directories (e.g., _sass/_theme.scss), and link related issues. Attach before/after screenshots for visual edits and list the commands you executed locally.

Content Authoring Tips

Prefer Markdown with Liquid includes over raw HTML, and place downloadable assets in files/ referenced with /files/... URLs. Reuse data from _data/ for repeated lists like people or sponsors to simplify updates. Always preview in the local server before merging to catch Liquid errors and layout regressions.