Repository Guidelines
Project Structure & Module Organization
- Jekyll site using the Minimal Mistakes theme. Key folders:
_pages/
static pages, _posts/
blog posts.- Collections:
_publications/
, _talks/
, _portfolio/
, _teaching/
. - Theme plumbing:
_layouts/
, _includes/
, _sass/
, _data/
. - Assets:
assets/
(JS/CSS), images/
(media), files/
(downloads). - Generators:
markdown_generator/
(Python scripts/notebooks for talks/publications). - Config:
_config.yml
(site), _config.dev.yml
(overrides).
Build, Test, and Development Commands
- Setup:
bundle install
(Ruby gems). If editing JS, also npm install
. - Local dev:
bundle exec jekyll liveserve
(auto-rebuild + live reload at http://localhost:4000
). - Production build:
JEKYLL_ENV=production bundle exec jekyll build -d _site
. - JS bundling:
npm run build:js
(minify to assets/js/main.min.js
), watch: npm run watch:js
. - Content generation (from repo root):
cd markdown_generator && python publications.py
cd markdown_generator && python talks.py
Coding Style & Naming Conventions
- Markdown + YAML front matter; indent with 2 spaces; wrap strings that include
:
or quotes. - Posts and collections:
YYYY-MM-DD-url-slug.md
(e.g., _posts/2025-01-15-hello-world.md
). - Use hyphenated, lowercase filenames and permalinks.
- Place custom styles in
_sass/
and JS in assets/js/
; avoid inline CSS/JS.
Testing Guidelines
- No formal test suite. A clean build is the gate:
- Run
bundle exec jekyll build
and ensure no errors/warnings. - Manually check critical pages and navigation.
- Optional: run link checks with
htmlproofer
if available.
Commit & Pull Request Guidelines
- Commits: concise, imperative, and scoped. Preferred prefixes:
add:
, update:
, fix:
, chore:
(e.g., update: research interest
). - PRs: include a clear summary, linked issues, and screenshots for UI/layout changes.
- For code/theme changes, reference or create a closed issue labeled
code change
with a link to the commit/diff (see CONTRIBUTING.md).
Security & Configuration Tips
- Keep secrets out of the repo; review
_config.yml
for PII (emails, IDs). - For GitHub Pages, ensure
url
and baseurl
are correct; use production builds for deployment. - If dependency warnings mention
Gemfile.lock
, remove it and reinstall per README.
Research Blog
- Location: add posts to
_research/
using YYYY-MM-DD-slug.md
. - Front matter:
---\ntitle: "Post Title"\nexcerpt: "One-line summary"\ntags: [topic1, topic2]\n---
- Index page:
/research/
lists all entries (see _pages/research.html
). - Permalinks:
/research/<slug>/
(set in _config.yml
). - Images: put under
images/research/<slug>/
and reference like 
. - Comments/sharing are enabled by defaults; set
comments: false
per-post to disable.