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/