al-folio README

The project's README from github.com/alshedivat/al-folio. As one markdown file: README.md.

al-folio

Preview

A simple, clean, and responsive Jekyll starter for academic websites.

In v1.x, al-folio is a thin starter, not a theme: the runtime ships as independently versioned plugin gems, so you pick up fixes and features by bumping a pinned version in your Gemfile instead of merging theme internals into your site.


deploy Maintainers GitHub contributors

Docker Image Version Docker Image Size Docker Pulls

GitHub release GitHub license GitHub stars GitHub forks

Code Wiki DeepWiki

Getting started

⚠️ Important: Use "Use this template" (not fork)

When creating your own website with al-folio, you have two options:

If you already forked: Don't worry! You can still work with your fork normally. Just make sure to:

  1. Make changes on a dedicated branch (e.g., my-site-updates)
  2. When pushing changes, always verify you're pushing to your own repository, not the main al-folio repository
  3. Never create pull requests to alshedivat/al-folio unless you're intentionally contributing improvements that benefit all users

For quick setup, see docs/QUICKSTART.md.

Want to learn more about Jekyll? Check out this tutorial. Why Jekyll? Read Andrej Karpathy's blog post! Why write a blog? Read Rachel Thomas blog post.

Table Of Contents

Installing and Deploying

For installation and deployment details please refer to docs/INSTALL.md.

Customizing

For customization details please refer to docs/CUSTOMIZE.md.

Plugin Ecosystem

al-folio is a thin starter in v1.x. Runtime features are plugin-owned and published as Ruby gems.

The catalog page is deliberately kept out of the navbar (nav: false) so the demo site's chrome stays unchanged; reach it through the links above.

Naming convention:

Featured plugins and bundled starter plugins are different tracks. Bundling requires explicit updates to Gemfile and _config.yml. Plugin-owned changes should be made in the owning al-org-dev plugin repository, not by copying runtime assets into this starter. The bundled v1 plugin repos are:

Using AI Agents

al-folio v1.x is designed for agent-assisted setup and migration. Agents should read AGENTS.md first, then use docs/BOUNDARIES.md to route changes to the starter or the owning plugin repo.

For existing customized forks, the recommended migration path is to ask an agent to use the al-folio v1 migration skill. The skill walks through creating a disposable migration branch, bringing site-owned content/config/data onto the v1 starter contract, running al_folio_upgrade, auditing local overrides, and validating the build. This is preferred over a manual file-by-file upgrade because v1 runtime ownership moved into plugins and local overrides need explicit drift tracking.

The canonical skills live in .agents/skills/. They are also exposed through .codex/skills/ and .claude/skills/ symlinks for agents that discover skills from tool-specific directories.

Codex

Codex can use the repo-local skills:

Useful first prompts:

Claude

Claude should start from CLAUDE.md, which imports AGENTS.md. For setup or migration tasks, use the matching skill from .claude/skills/, which points to the canonical .agents/skills/ directory.

Copilot And Other Agents

Copilot should follow .github/copilot-instructions.md and the specialized agents in .github/agents/. Other agents should follow the same rule: keep starter work in this repo, route runtime behavior to the owning al-org-dev plugin, and run bundle exec al-folio upgrade overrides audit whenever local overrides are added or retained.

Documentation

Comprehensive guides for all aspects of your al-folio website:

Features

Everything below ships with the starter. Rows marked setup render nothing until you supply a key, ID or credential — bundling a plugin is not the same as switching the feature on. Each feature is owned by a versioned plugin — see docs/BOUNDARIES.md for the full ownership table, and Plugin Ecosystem for how to add or remove one.

Feature Plugin Configure
Pages, layouts, navigation, light/dark mode, theming al_folio_core Changing theme color
Publications from BibTeX al_folio_core + jekyll-scholar Adding a new publication
CV from RenderCV or JSONResume al_folio_cv Modifying the CV information
Distill-style posts al_folio_distill the example post
Math, TikZ diagrams al_math the math post
Charts, mermaid, plotly al_charts the charts post
Image zoom, galleries, sliders, lightbox al_img_tools the images post
Full-text search (ctrl k) al_search search_enabled in _config.yml
Comments (Giscus or Disqus) — setup al_comments giscus: in _config.yml
Analytics — Google, Cronitor, Pirsch, Openpanel, Cloudflare, Simple — setup al_analytics docs/ANALYTICS.md
GDPR cookie consent, gating analytics until opt-in — setup al_cookie GDPR Cookie Consent Dialog
Newsletter signup — setup al_newsletter newsletter: in _config.yml
Citation counts, altmetric/dimensions badges al_citations Adding a new publication
FontAwesome, Academicons, scholar icons al_icons third_party_libraries in _config.yml
Posts syndicated from Medium and other feeds al_ext_posts external_sources: in _config.yml
Legacy Bootstrap markup (opt-in, removed in v2.0) al_folio_bootstrap_compat al_folio.compat.bootstrap in _config.yml
Upgrade audits and codemods al_folio_upgrade bundle exec al-folio upgrade audit

Also included: Open Graph and schema.org previews, an Atom feed at /feed.xml, related posts, tabbed content, typograms, responsive image generation, and a Google Scholar citation-refresh workflow.

Light and dark mode

The theme follows the visitor's system preference and can be toggled with the sun/moon control in the navbar. The choice persists across visits.


The pages you get out of the box

Publications are generated from your BibTeX bibliography, the CV from a single cv.yml or resume.json, and the people page from _data. Everything is content-driven — you edit data files, not templates.

Projects are one of four Jekyll collections the starter ships (news, projects, books, teachings). You can add your own for courses, talks, or anything else — see Adding Collections.


Writing

Posts support the distill.pub layout, MathJax and TikZ, syntax-highlighted code, Jupyter notebooks, charts, image galleries, video and audio embeds.


GitHub repositories and stats

The /repositories/ page renders repository and profile cards via github-stats-extended. Profile trophies via github-profile-trophy are supported but off by default, because that project's free public instance is currently disabled — see docs/CUSTOMIZE.md to self-host and re-enable.

Configure which repositories and profiles appear under Modifying the user and repository information.

User community

Academics around the world use al-folio for their homepages, blogs, and lab pages, as well as webpages for courses, workshops, conferences, meetups, and more.

Browse the showcase →

Want your site listed? Post a request in the Showcase category of GitHub Discussions — we review and add entries periodically. Please do not open a pull request for this.

Lighthouse PageSpeed Insights

Desktop

Google Lighthouse PageSpeed Insights

Run the test yourself: Google Lighthouse PageSpeed Insights

Mobile

Google Lighthouse PageSpeed Insights

Run the test yourself: Google Lighthouse PageSpeed Insights

FAQ

For frequently asked questions, please refer to docs/FAQ.md.

Contributing

Contributions to al-folio are very welcome! Before you get started, please take a look at the guidelines.

If you would like to improve documentation or fix a minor inconsistency or bug, please feel free to send a PR directly to main. For more complex issues/bugs or feature requests, please open an issue using the appropriate template.

Code quality checks

CI runs the following on every pull request:

Axe accessibility checks are run manually, because the fixes are not always straightforward for contributors without web development experience.

Maintainers

Our most active contributors are welcome to join the maintainers team. If you are interested, please reach out!


Maruan

Rohan Deb Sarkar

Amir Pourmand

George

All Contributors

Star History

Star history chart for alshedivat/al-folio

Generated by bin/generate_star_history.py and refreshed automatically by star-history.yml.

License

al-folio is available as open source under the terms of the MIT License.

Originally, al-folio was based on the *folio theme (published by Lia Bogoev and under the MIT license). Since then, it got a full re-write of the styles and many additional cool features.

al-folio (alshedivat/al-folio)

Searching Database…

16.3K ·GitHub
这是什么?al-folio 是一个开源的 Jekyll 起始模板,用来搭建简洁、快速、响应式的学术网站:个人主页、博客、简历,以及实验室或课程页面。
它是一个可以安装的主题,还是一个需要复制后自己填充内容的网站?从 v1.x 开始,它是一个精简的起始模板,而不是主题:你复制整个仓库,运行时功能则以独立版本号的 Ruby 插件 gem 形式提供,由你在 Gemfile 中固定版本。
我怎样让自己的网站跑起来?在 GitHub 上点击 'Use this template' 创建一个独立副本(不是 fork),然后按照 docs/QUICKSTART.md 操作,它的目标是让网站在 5 分钟内跑起来;docs/INSTALL.md 则介绍 GitHub Pages 及其他部署方式。
想在本地改这个网站,我需要装什么?需要一套 Ruby 工具链:运行时以 Ruby gem 的形式发布,并通过 Gemfile 固定版本。如果你不想折腾 Ruby 环境,仓库里也自带 Docker 和 Docker Compose 文件。
为什么它推荐用 'Use this template' 而不是 fork?fork 会一直和主仓库保持关联,很容易不小心把你的个人改动推上去,或者误向 al-folio 发起 PR;而通过模板创建的副本是完全独立的。
都有谁在用?世界各地的学者,用它做个人主页、博客和实验室页面,也用于课程、工作坊和会议的网站;项目有一个展示页面,新网站通过 GitHub Discussions 提交收录。
博客文章可以包含什么内容?文章支持 distill.pub 排版、MathJax 和 TikZ 数学公式、语法高亮的代码、Jupyter notebook、图表(mermaid 和 plotly)、图片画廊和轮播,还可以嵌入视频和音频。
/repositories/ 页面是做什么的?它通过 github-stats-extended 展示 GitHub 仓库卡片和个人资料卡片。个人资料奖杯也支持,但默认关闭,因为该项目的免费公共实例目前停用了——docs/CUSTOMIZE.md 介绍了如何自行部署来重新启用。
在基于插件的 v1.x 里,更新是怎么进行的?修复和新功能通过在你的 Gemfile 中升级固定的插件 gem 版本来获得,而不是合并主题内部代码。al-folio-upgrade 插件会执行检查和代码迁移(codemods),还有一个迁移技能(migration skill)来引导 AI 代理完成定制过的 fork 的升级。
我能把 Medium 或其他来源的文章导入进来吗?可以——al-ext-posts 插件可以从 Medium 和其他订阅源导入外部文章,通过 _config.yml 中的 externalsources 进行配置。
Creator
alshedivat
Size
364 MB
Stars
16.3K
Age
10y
Commits · 90 Days