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.pycd 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.