Repository Guidelines

Project Structure & Module Organization

  • _pages/about.md holds the homepage content; each new page belongs in _pages/ with front matter.
  • _layouts/, _includes/, _sass/, and assets/{css,js,fonts} define the Jekyll theme; prefer reusing includes before writing inline HTML.
  • _config.yml centralizes global metadata, navigation, and plugin settings; _data/navigation.yml controls menu entries.
  • google_scholar_crawler/ contains the automation that syncs Google Scholar stats; its outputs feed the navigation badges under _data and the site header.
  • docs/ stores English documentation and screenshots; keep generated assets out of _site/, which is build output only.

Build, Test, and Development Commands

  • bundle install installs Ruby gems defined in Gemfile.
  • bash run_server.sh (or bundle exec jekyll serve --livereload) starts the local dev server at http://127.0.0.1:4000.
  • bundle exec jekyll build produces the static site into _site/ and is the pre-deploy smoke test.
  • python google_scholar_crawler/main.py updates citation data when you need to refresh it manually.

Coding Style & Naming Conventions

  • Use 2-space indentation for YAML front matter and config files; mirror existing Liquid tag formatting in _layouts.
  • Name Markdown files with lowercase hyphenated slugs (e.g., _pages/research-highlights.md) and ensure the permalink matches the slug.
  • Keep SCSS modules under _sass/ grouped by component; prefix custom classes with pc- to avoid theme collisions.
  • JavaScript in assets/js/ should remain modular; wrap new utilities in IIFEs to avoid globals.

Testing Guidelines

  • Run bundle exec jekyll build before pushing to catch Liquid or Markdown errors.
  • Spot-check critical pages in the browser when the livereload server restarts; confirm scholar metrics render when _site/assets/ updates.
  • For crawler changes, run python google_scholar_crawler/main.py --help to validate arguments, then execute against a test scholar ID.

Commit & Pull Request Guidelines

  • Follow the short, imperative commit style already in history (e.g., add Liu 2022.11); group related edits together.
  • Reference issues in the commit body when applicable and include brief context for data updates.
  • Pull requests should summarize user-visible changes, mention affected sections (e.g., _pages/about.md), and attach screenshots for layout tweaks.
  • Ensure CI/GitHub Pages builds succeed by pushing after a clean bundle exec jekyll build; note if the crawler data was refreshed in the PR description.

Deployment & Automation Notes

  • GitHub Pages builds from main; avoid committing _site/.
  • The Scholar crawler workflow writes to google-scholar-stats; confirm secrets like GOOGLE_SCHOLAR_ID are configured before enabling the action.
  • Update favicon assets under images/ using the generator referenced in README.md and keep sizes consistent.