CLAUDE.md

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

What this repo is

This is imamtom.github.io β€” a Jekyll-based personal academic homepage for Li Wenjie (PhD student, Xidian University, researching cryptography / privacy-preserving federated learning). It is a fork of RayeRen/acad-homepage.github.io, which itself derives from mmistakes/minimal-mistakes and academicpages.

The site is dual-page, single-language-sectioned: the English homepage at / lives in _pages/about.md (frontmatter permalink: /, redirect_from: /about/, /about.html); the Chinese homepage at /zh/ lives in _pages/about-zh.md (frontmatter permalink: /zh/, author: zh to pull the Chinese sidebar profile from _data/authors.yml). Both files share the masthead, sidebar, scripts, and the `

[1]
Zhang Fuyao, Zhang Jiaming, Wang Che, Sun Xiongtao, Hao Yurong, Guan Guowei, Li Wenjie, Huang Longtao, Lim Wei Yang Bryan. DualTAP: A Dual-Task Adversarial Protector for Mobile MLLM Agents[C]//ECCV. 2026. DOI:10.48550/arXiv.2511.13248.
[2]
Fan Kai, Wang Huixuan, Li Wenjie, Li Xiang, Li Hui, Zhang Kuan, Yang Yintang, Wang Lianhai. NeuDFL: Efficient neuron-based defense against label flipping attacks on non-IID data[J]. IEEE Internet of Things Journal, 2026, 13(12): 26599-26607. DOI:10.1109/JIOT.2026.3676632.
[3]
Zhang Pingle, Fan Kai, Li Xiang, Li Wenjie, Zhang Kuan, Li Hui, Yang Yintang, Wang Lianhai. HBA: Hijacking-based backdoor attack for vertical federated learning[J]. IEEE Internet of Things Journal, 2026: 1-1. DOI:10.1109/JIOT.2026.3702700.
[4]
Zhang Fuyao, Yan Xinyu, Wu Tiantong, Li Wenjie, Chen Tianxiang, Cao Yang, Yan Ran, Huang Longtao, Lim Wei Yang Bryan, Yang Qiang. Oblivionis: A Lightweight Learning and Unlearning Framework for Federated Large Language Models[C]//Proceedings of the AAAI Conference on Artificial Intelligence: Vol. 40. 2026: 28185-28193. DOI:10.1609/aaai.v40i33.40045.
[5]
Li Wenjie, Fan Kai, Zhang Jingyuan, Li Hui, Lim Wei Yang Bryan, Yang Qiang. Enhancing security and privacy in federated learning using low-dimensional update representation and proximity based defense[J]. IEEE Transactions on Knowledge and Data Engineering, 2025. DOI:10.1109/TKDE.2025.3539717.
[6]
Li Wenjie, Fan Kai, Yang Kan, Yang Yintang, Li Hui. PBFL: Privacy-preserving and byzantine-robust federated-learning-empowered industry 4.0[J]. IEEE Internet of Things Journal, 2024, 11(4): 7128-7140. DOI:10.1109/JIOT.2023.3315226.
[7]
Fan Kai, Hong Jingtao, Li Wenjie, Zhao Xingwen, Li Hui, Yang Yintang. FLSG: A novel defense strategy against inference attacks in vertical federated learning[J]. IEEE Internet of Things Journal, 2024, 11(2): 1816-1826. DOI:10.1109/JIOT.2023.3302792.
[8]
Yang Xiaohui, Li Wenjie, Fan Kai. A revocable attribute-based encryption EHR sharing scheme with multiple authorities in blockchain[J]. Peer-to-Peer Networking and Applications, 2023, 16(1): 107-125. DOI:10.1007/s12083-022-01387-4.
[9]
Yang Xiaohui, Li Wenjie. A zero-knowledge-proof-based digital identity management scheme in blockchain[J]. Computers & Security, 2020, 99: 102050. DOI:https://doi.org/10.1016/j.cose.2020.102050.

` block.

Common commands

  • Install dependencies (Ruby gems for Jekyll): bundle install
  • Run local dev server with live reload at http://127.0.0.1:4000: bash run_server.sh (this first re-runs bibtex_build/render.sh, then bundle exec jekyll serve)
  • One-off build without serving: bundle exec jekyll build
  • Re-render the Publications block after editing _data/ref.bibtex: bash bibtex_build/render.sh

The Python crawler has its own dependencies (scholarly, jsonpickle); install with pip install -r google_scholar_crawler/requirements.txt.

There are no tests, lint configs, or CI workflows beyond the Google Scholar crawler and the locally-run bibtex render.

Architecture overview

Content layer

  • _pages/about.md β€” English homepage. Sections are anchored (#about-me, #-news, #-publications, #-honors-and-awards, #-educations, #-internships) and those IDs must stay in sync with _data/navigation.yml. The Publications section is rendered via `
[1]
Zhang Fuyao, Zhang Jiaming, Wang Che, Sun Xiongtao, Hao Yurong, Guan Guowei, Li Wenjie, Huang Longtao, Lim Wei Yang Bryan. DualTAP: A Dual-Task Adversarial Protector for Mobile MLLM Agents[C]//ECCV. 2026. DOI:10.48550/arXiv.2511.13248.
[2]
Fan Kai, Wang Huixuan, Li Wenjie, Li Xiang, Li Hui, Zhang Kuan, Yang Yintang, Wang Lianhai. NeuDFL: Efficient neuron-based defense against label flipping attacks on non-IID data[J]. IEEE Internet of Things Journal, 2026, 13(12): 26599-26607. DOI:10.1109/JIOT.2026.3676632.
[3]
Zhang Pingle, Fan Kai, Li Xiang, Li Wenjie, Zhang Kuan, Li Hui, Yang Yintang, Wang Lianhai. HBA: Hijacking-based backdoor attack for vertical federated learning[J]. IEEE Internet of Things Journal, 2026: 1-1. DOI:10.1109/JIOT.2026.3702700.
[4]
Zhang Fuyao, Yan Xinyu, Wu Tiantong, Li Wenjie, Chen Tianxiang, Cao Yang, Yan Ran, Huang Longtao, Lim Wei Yang Bryan, Yang Qiang. Oblivionis: A Lightweight Learning and Unlearning Framework for Federated Large Language Models[C]//Proceedings of the AAAI Conference on Artificial Intelligence: Vol. 40. 2026: 28185-28193. DOI:10.1609/aaai.v40i33.40045.
[5]
Li Wenjie, Fan Kai, Zhang Jingyuan, Li Hui, Lim Wei Yang Bryan, Yang Qiang. Enhancing security and privacy in federated learning using low-dimensional update representation and proximity based defense[J]. IEEE Transactions on Knowledge and Data Engineering, 2025. DOI:10.1109/TKDE.2025.3539717.
[6]
Li Wenjie, Fan Kai, Yang Kan, Yang Yintang, Li Hui. PBFL: Privacy-preserving and byzantine-robust federated-learning-empowered industry 4.0[J]. IEEE Internet of Things Journal, 2024, 11(4): 7128-7140. DOI:10.1109/JIOT.2023.3315226.
[7]
Fan Kai, Hong Jingtao, Li Wenjie, Zhao Xingwen, Li Hui, Yang Yintang. FLSG: A novel defense strategy against inference attacks in vertical federated learning[J]. IEEE Internet of Things Journal, 2024, 11(2): 1816-1826. DOI:10.1109/JIOT.2023.3302792.
[8]
Yang Xiaohui, Li Wenjie, Fan Kai. A revocable attribute-based encryption EHR sharing scheme with multiple authorities in blockchain[J]. Peer-to-Peer Networking and Applications, 2023, 16(1): 107-125. DOI:10.1007/s12083-022-01387-4.
[9]
Yang Xiaohui, Li Wenjie. A zero-knowledge-proof-based digital identity management scheme in blockchain[J]. Computers & Security, 2020, 99: 102050. DOI:https://doi.org/10.1016/j.cose.2020.102050.

`.

  • _pages/about-zh.md β€” Chinese homepage. Mirror of about.md with permalink: /zh/ and author: zh.
  • _data/navigation.yml β€” masthead menu items. The first two entries are the language toggle: English β†’ / and πŸ‡¨πŸ‡³ δΈ­ζ–‡ β†’ /zh/. The rest are anchor links.
  • _data/authors.yml β€” author profiles keyed by page.author. The English page uses site.author from _config.yml; the Chinese page uses the zh: block here.
  • _data/ref.bibtex β€” single source of truth for publications. Order in the file is preserved by pandoc (newest first). Each entry is one paper.
  • _pages/about.md / _pages/about-zh.md allow inline HTML + Markdown. The paper-citation inline widget is <span class='show_paper_citations' data='GOOGLE_SCHOLAR_PAPER_ID'></span>; the paper ID is the segment after citation_for_view= in a Google Scholar citation URL.

Template layer

  • _layouts/default.html β€” single layout used by all pages (defaults: in _config.yml forces layout: default, author_profile: true).
  • _includes/
    • head.html + head/custom.html β€” meta, CSS link, favicons, MathJax (LaTeX), academicons CSS.
    • masthead.html β€” top nav (renders _data/navigation.yml). Adds .masthead__menu-item--active to the entry whose link.url matches page.url so the current language toggle is highlighted.
    • sidebar.html + author-profile.html β€” left sidebar with avatar, bio, and ~30 social/profile links rendered conditionally from site.author.* keys (or page.author from _data/authors.yml).
    • scripts.html β€” loads main.min.js, Google Analytics, and fetch_google_scholar_stats.html.
    • fetch_google_scholar_stats.html β€” client-side jQuery script that fetches gs_data.json from the google-scholar-stats branch and fills #total_cit + every .show_paper_citations element.
    • publications.html β€” generated, do not edit by hand. Re-rendered from _data/ref.bibtex by bibtex_build/render.sh.

Asset paths in _includes/ use relative_url (e.g. href="/assets/css/main.css") because the Chinese homepage lives at /zh/ and bare assets/... URLs would otherwise resolve to /zh/assets/... which doesn’t exist. Keep this convention when adding new includes.

Style layer

  • assets/css/main.scss is the entry; it imports _sass/*.scss (variables, base, navigation, page, sidebar, masthead, footer, etc.) plus vendored libraries under _sass/vendor/ (breakpoint, susy, font-awesome, magnific-popup).
  • Custom rules at the bottom of main.scss:
    • .paper-box / .badge / .anchor β€” the optional image+text card used in the commented-out Publications example.
    • .masthead__menu-item--active > a β€” bold + blue (#00369f) underline for the current language toggle.
    • .publications .csl-entry β€” hanging-indent layout for the GB/T 7714 bibliography.

Publications pipeline (BibTeX β†’ GB/T 7714)

  1. User maintains _data/ref.bibtex (one @article{...} per paper, with author, title, journal, year, url).
  2. bibtex_build/render.sh runs pandoc --citeproc --bibliography=_data/ref.bibtex --csl=bibtex_build/china-national-standard-gb-t-7714-2015-numeric.csl and pipes the output (a <div id="refs" class="references csl-bib-body">…</div> fragment) into _includes/publications.html wrapped in <div class="publications">.
  3. The <!-- This file is auto-generated --> comment marks the include as generated. Do not edit it by hand β€” edits will be overwritten the next time render.sh executes.
  4. The CSL file lives at bibtex_build/china-national-standard-gb-t-7714-2015-numeric.csl (downloaded from the citation-style-language/styles repo; commits should keep it in sync if upstream changes).
  5. run_server.sh calls bibtex_build/render.sh before starting Jekyll, so editing _data/ref.bibtex and re-saving β†’ re-render β†’ live server refresh.

Dependency: requires pandoc β‰₯ 2.11 (with --citeproc). The render script errors out clearly if pandoc is missing. GitHub Pages itself does not run this script β€” it uses the committed _includes/publications.html. So commit both _data/ref.bibtex and _includes/publications.html together whenever the bibliography changes.

Citation auto-update pipeline (Google Scholar)

A scheduled GitHub Action in .github/workflows/google_scholar_crawler.yaml runs:

  1. Trigger: every day at 08:00 UTC (cron: '0 8 * * *') AND on every page_build.
  2. Step: python3 google_scholar_crawler/main.py reads GOOGLE_SCHOLAR_ID from repo secrets, calls the scholarly library, and writes gs_data.json (full author record) and gs_data_shieldsio.json (just the citation count, shields.io-compatible).
  3. Output: force-pushes the two JSON files to a branch called google-scholar-stats.
  4. Consumed by: _includes/fetch_google_scholar_stats.html (page-load) and the shields.io badge in _pages/about.md and _pages/about-zh.md (the img.shields.io/endpoint?url=...gs_data_shieldsio.json... image).

CDN switch: _config.yml key google_scholar_stats_use_cdn toggles between cdn.jsdelivr.net/gh/<repo>@ and raw.githubusercontent.com/<repo>/ for both consumers. true is friendlier from mainland China but adds jsdelivr cache delay.

Misc

  • _config.yml author.* is the single source of truth for sidebar/profile links on the English page; most keys are optional and conditionally rendered.
  • Gemfile pins github-pages gem group (so local build matches GitHub Pages’ pinned plugin versions). Plugins enabled: jekyll-paginate, jekyll-sitemap, jekyll-gist, jekyll-feed, jekyll-redirect-from. The wdm gem is NOT included (incompatible with Ruby 3.x); Jekyll on Windows falls back to polling for file-change events. tzinfo-data is included so tzinfo 2.x finds timezone data on Windows.
  • assets/fonts/ ships Font Awesome + academicons as static assets (no CDN).
  • images/ holds favicons + avatar (android-chrome-512x512.png).
  • The actual Ruby is at /d/Ruby33-x64/bin/ on this machine. The Microsoft Store shim at /c/Users/imlee/AppData/Local/Microsoft/WindowsApps/{bundle,bundler,ruby} is broken (points to a non-existent ruby.exe) β€” run_server.sh prepends /d/Ruby33-x64/bin to PATH to avoid it.

Things to know before editing

  • _config.yml is NOT auto-reloaded by jekyll serve β€” restart the server after config edits.
  • Anchor IDs in _pages/about.md use the kramdown-auto-generated form (e.g. πŸ”₯ News β†’ #-news because emoji is stripped). If you rename a heading, update the matching entry in _data/navigation.yml.
  • The crawler writes to a separate branch (google-scholar-stats); the action uses --force push. Don’t run main.py against your local checkout expecting the output to land on main.
  • The Chinese page (/zh/) requires asset URLs to use relative_url (or absolute /assets/...); bare assets/... will 404. This is already fixed in _includes/, but watch for it when adding new templates.
  • _includes/publications.html is auto-generated β€” edit _data/ref.bibtex and run bash bibtex_build/render.sh instead.
  • There is no automated test or build check beyond GitHub Pages’ own Jekyll build β€” the deploy is implicit on push to main.