CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

This is a single-page Jekyll academic portfolio site deployed via GitHub Pages at https://ffengc.github.io/. It is based on the AcadHomepage template (influenced by minimal-mistakes and academicpages).

Commands

# Serve locally (with live reload)
bundle exec jekyll serve

# Or use the convenience script
bash run_server.sh

# Build for production
bundle exec jekyll build

The site auto-deploys to GitHub Pages on push to the main branch. Development happens on dev.

Architecture

Single-page site. All visible content lives in _pages/about.md. There are no other content pages.

Navigation is driven by _data/navigation.yml. Each entry has a title and url. The URL anchors are auto-generated by Jekyll/kramdown from the section headings in about.md:

  • Emoji at the start of a heading becomes a leading - in the anchor
  • Spaces become -, special characters (like &) are stripped
  • Example: # 🌐 Open Source & Community/#-open-source--community

When adding a new # section to about.md, also add a corresponding entry to _data/navigation.yml.

Sidebar author profile is configured in _config.yml under the author: key (name, avatar, email, social links). The template is _includes/author-profile.html.

Paper/project cards use this HTML pattern in about.md:

<div class='paper-box'>
  <div class='paper-box-image'><div>
    <div class="badge">Venue</div>
    <img src='images/foo.png' alt="sym" width="100%">
  </div></div>
  <div class='paper-box-text' markdown="1">

[Paper Title](url)

Author One, **Fengcheng Yu**, Author Three

- **Keywords:** ...
- Contribution description.

  </div>
</div>

Images for papers/projects go in images/. The _site/ directory is auto-generated and not committed.

Google Scholar Citation Crawler

google_scholar_crawler/main.py fetches citation stats via the scholarly library. It requires a GOOGLE_SCHOLAR_ID environment variable and writes output to google_scholar_crawler/results/gs_data.json and gs_data_shieldsio.json. This directory is excluded from the Jekyll build (_config.yml exclude list). The crawler is intended to be run as a GitHub Actions job (not locally as part of normal development).

Key Config Locations

  • Site metadata & author profile: _config.yml (author: key — name, avatar, bio, social links)
  • Nav links: _data/navigation.yml
  • Main content: _pages/about.md
  • Styles: _sass/ (SCSS, compiled and compressed by Jekyll)
  • JS/assets: assets/