Here are some frequently asked questions. If you have a different question, please check if it was not already answered in the Q&A section of the GitHub Discussions. If not, feel free to ask a new question there.
- Frequently Asked Questions
- After I create a new repository from this template and setup the repo, I get a deployment error. Isn't the website supposed to correctly deploy automatically?
- I am using a custom domain (e.g., foo.com). My custom domain becomes blank in the repository settings after each deployment. How do I fix that?
- My webpage works locally. But after deploying, it fails to build and throws Unknown tag 'toc'. How do I fix that?
- My webpage works locally. But after deploying, it is not displayed correctly (CSS and JS are not loaded properly). How do I fix that?
- Atom feed doesn't work. Why?
- My site doesn't work when I enable related_blog_posts. Why?
- When trying to deploy, it's asking for github login credentials, which github disabled password authentication and it exits with an error. How to fix?
- When I manually run the Lighthouse Badger workflow, it fails with Error: Input required and not supplied: token. How do I fix that?
- My code runs fine locally, but when I create a commit and submit it, it fails with prettier code formatter workflow run failed for main branch. How do I fix that?
- After I update my site with some new content, even a small change, the GitHub action throws an error or displays a warning. What happened?
- How do I upgrade from al-folio
v1.0tov1.1+with minimal friction? - Do I need to fork every v1 gem to customize layouts and Liquid files?
- How do I handle legacy Bootstrap-marked pages on Tailwind-first
v1.x? - I am trying to deploy my site, but it fails with Could not find gem 'jekyll-diagrams' in locally installed gems. How do I fix that?
- How can I update icon library versions on the template
- How should I name plugins in
v1.x? - How can I propose featuring my plugin in
al-folio? - Why does plugin integration use
Gemfile+_config.ymlinstead of a gemspec? - What do all these GitHub actions/workflows mean?
- How can I use Google Search Console ID on the template?
- What are Code Wiki and DeepWiki?
After I create a new repository from this template and setup the repo, I get a deployment error. Isn't the website supposed to correctly deploy automatically?
Yes, if you are using release v0.3.5 or later, the website will automatically and correctly re-deploy right after your first commit. Please make some changes (e.g., change your website info in _config.yml), commit, and push. Make sure to follow deployment instructions. (Relevant issue: 209.)
I am using a custom domain (e.g., foo.com). My custom domain becomes blank in the repository settings after each deployment. How do I fix that?
You need to add CNAME file to the main or source branch of your repository. The file should contain your custom domain name. (Relevant issue: 130.)
My webpage works locally. But after deploying, it fails to build and throws Unknown tag 'toc'. How do I fix that?
Make sure you followed through the deployment instructions in the previous section. You should have set the deployment branch to gh-pages. (Related issue: 1438.)
My webpage works locally. But after deploying, it is not displayed correctly (CSS and JS are not loaded properly). How do I fix that?
If the website does not load the theme, the layout looks weird, and all links are broken, being the main page displayed this way:
make sure to correctly specify the url and baseurl paths in _config.yml. Set url to https://<your-github-username>.github.io or to https://<your.custom.domain> if you are using a custom domain. If you are deploying a personal or organization website, leave baseurl empty (do NOT delete it). If you are deploying a project page, set baseurl: /<your-project-name>/. If all previous steps were done correctly, all is missing is for your browser to fetch again the site stylesheet. For this, you can:
- press Shift + F5 on Chromium-based or Ctrl + F5 on Firefox-based browsers to reload the page ignoring cached content
- clean your browser history
- simply try it in a private session, here's how to do it in Chrome and Firefox
Make sure to correctly specify the url and baseurl paths in _config.yml. RSS Feed plugin works with these correctly set up fields: title, url, description and author. Make sure to fill them in an appropriate way and try again.
This is probably due to the classifier reborn plugin, which is used to calculate related posts. If the error states Liquid Exception: Zero vectors can not be normalized... or sqrt': Numerical argument is out of domain - "sqrt", it means that it could not calculate related posts for a specific post. This is usually caused by empty or minimal blog posts without meaningful words (i.e. only stop words) or even specific characters you used in your posts. Also, the calculus for similar posts are made for every post, which means every page that uses layout: post, including the announcements. To change this behavior, simply add related_posts: false to the front matter of the page you don't want to display related posts on. Another solution is to disable the lsi (latent semantic indexing) entirely by setting the lsi flag to false in _config.yml. Related issue: #1828.
When trying to deploy, it's asking for github login credentials, which github disabled password authentication and it exits with an error. How to fix?
Open .git/config file using your preferred editor. Change the https portion of the url variable to ssh. Try deploying again.
When I manually run the Lighthouse Badger workflow, it fails with Error: Input required and not supplied: token. How do I fix that?
You need to create a personal access token and add it as a secret named LIGHTHOUSE_BADGER_TOKEN to your repository. For more information, check lighthouse-badger documentation on how to do this.
My code runs fine locally, but when I create a commit and submit it, it fails with prettier code formatter workflow run failed for main branch. How do I fix that?
We implemented support for Prettier code formatting in #2048. It basically ensures that your code is well formatted. If you want to ensure your code is compliant with Prettier, you have a few options:
- if you are running locally with
Dockerand using development containers,Prettieris already included - if you don't use
Docker, it is simple to integrate it with your preferred IDE using an extension - if you want to run it manually, you can follow the first 2 steps in this tutorial (
Installing node version manager (nvm)andInstalling Node (latest version)), then, install it usingnpm install prettierinside the project directory, or install it globally on your computer usingnpm install -g prettier. To runPrettieron your current directory usenpx prettier . --write.
You can also disable it for your repo. For this, just delete the file .github/workflows/prettier.yml.
After I update my site with some new content, even a small change, the GitHub action throws an error or displays a warning. What happened?
Probably your GitHub workflow is throwing an error like this:
/opt/hostedtoolcache/Ruby/3.0.2/x64/lib/ruby/gems/3.0.0/gems/bundler-2.5.5/lib/bundler/runtime.rb:304:in `check_for_activated_spec!': You have already activated uri 0.10.1, but your Gemfile requires uri 0.13.0. Since uri is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports uri as a default gem. (Gem::LoadError)or maybe displaying a warning like one of these:
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/checkout@v3. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/checkout@v2, actions/cache@v2. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
The following actions uses node12 which is deprecated and will be forced to run on node16: actions/checkout@v2, actions/cache@v2. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
If that's the case, you are using deprecated libraries/commands. This happens because you are using an old version of al-folio. Follow the upgrade guide and run the upgrade CLI:
bundle exec al-folio upgrade audit
bundle exec al-folio upgrade apply --safe
bundle exec al-folio upgrade reportNote that libraries tend to be deprecated and support for them dropped as they are no longer maintained, and keep using them involves security breaches. Also, some of these deprecations are enforced, for example, by GitHub itself, so there's so much we can do. We have also added tons of new functionality, as well as tidying things up and improving the overall speed and structure, so you could also benefit from these improvements.
Use the SemVer migration flow:
bundle updatebundle exec al-folio upgrade auditbundle exec al-folio upgrade overrides auditbundle exec al-folio upgrade apply --safe(optional)bundle exec al-folio upgrade report
Then resolve all Blocking findings in al-folio-upgrade-report.md. Non-blocking findings are deprecated patterns you can migrate incrementally.
For starter-based sites, keep theme: al_folio_core and avoid copying theme internals into your repo unless you intentionally need overrides.
No. In v1.x, gem-owned layouts/includes/assets provide the default runtime, but your site can still override a file locally by adding the same path in your starter repo, for example _layouts/bib.liquid or _includes/repository/repo.liquid.
Use this rule of thumb:
- Keep site-specific content, data, Sass, and intentional local overrides in your site repo.
- Remove old copied runtime files when v1 gems own them now, especially
_includes/head.liquid,_includes/scripts.liquid,assets/js/distillpub/**,assets/js/search/**, and old citation/external-post helper plugins. - Fork or pin a plugin only when you want to change plugin-owned behavior for every site using that plugin.
- Run
bundle exec al-folio upgrade overrides auditafter dependency updates to identify local overrides whose upstream plugin files changed. - Commit
.al-folio-overrides.ymlafter reviewing intentional overrides so future gem updates can flag stale copies explicitly.
Use the override audit workflow:
bundle exec al-folio upgrade overrides audit
bundle exec al-folio upgrade overrides diff _includes/repository/repo.liquid
bundle exec al-folio upgrade overrides accept _includes/repository/repo.liquidThe audit compares local overrides with files shipped by installed al-* gems. The acknowledgement file .al-folio-overrides.yml stores the upstream checksum you reviewed. When a future gem update changes that upstream file, the audit marks your local override as stale so you can reconcile it.
al-folio is a thin starter in v1.x. Tailwind/runtime build ownership moved to gem repos (primarily al_folio_core and feature gems), so starter builds do not require local npm CSS build commands.
Use starter tests for:
- visual regression/parity checks
- cross-gem integration checks
Use gem repos for:
- component correctness/unit tests
- plugin/runtime asset contract tests
See BOUNDARIES.md for the ownership contract.
jekyll-jupyter-notebook depends on Python tooling (jupyter + nbconvert), and Bundler cannot install Python packages for you.
Recommended options:
- Install Python deps locally:
./bin/setup-python-deps- Or install manually in your Python environment:
python3 -m pip install --user --break-system-packages jupyter nbconvert- If you do not need notebook rendering, disable/remove the plugin from
_config.yml.
In v1.x, missing jupyter-nbconvert is treated as warn-and-continue; notebook rendering is skipped until deps are installed.
v1.x core is Tailwind-first. If your content still relies on Bootstrap-marked classes or data-toggle behavior, enable compatibility mode temporarily:
al_folio:
compat:
bootstrap:
enabled: trueCompatibility timeline:
- Supported through
v1.2 - Deprecated in
v1.3 - Removed in
v2.0
The compatibility runtime (/assets/css/bootstrap-compat.css and /assets/js/bootstrap-compat.js) is provided by the al_folio_bootstrap_compat gem when enabled.
v1.x uses Tocbot for sidebar TOC rendering when page front matter includes:
toc:
sidebar: left # or right
collapse: expanded # or autoTocbot runtime assets are loaded from pinned CDN entries in _config.yml under third_party_libraries.tocbot.
If needed, heading labels can be overridden using data-toc-text attributes.
Use collapse: auto to expand nested TOC branches as the active section changes during scrolling.
When al_folio.compat.bootstrap.enabled: false, v1.x uses a built-in vanilla Tailwind table engine for table[data-toggle="table"] markup.
It supports search, pagination, sortable columns, and click-to-select without requiring Bootstrap Table runtime.
When compatibility is enabled, Bootstrap Table remains available for legacy content.
In v1.x, al_img_tools provides a plugin-owned lightbox adapter for data-lightbox markup, so lightbox galleries no longer depend on jQuery.
Author-facing markup stays the same (images.lightbox2: true and data-lightbox links).
I am trying to deploy my site, but it fails with Could not find gem 'jekyll-diagrams' in locally installed gems. How do I fix that?
jekyll-diagrams support was dropped in #1992 in favor of using mermaid.js directly. Simply update your code to get the latest changes.
In v1.x, icon runtime ownership is provided by al_icons, and icons are loaded from pinned CDN URLs configured in _config.yml under third_party_libraries.
Update flow:
- Confirm
al_iconsis enabled inplugins. - Update version values in
_config.yml:third_party_libraries.fontawesome.versionthird_party_libraries.academicons.versionthird_party_libraries.scholar-icons.version
- Update corresponding
integrity.csshashes. - Rebuild your site and verify icon rendering on pages with socials/publications.
Do not copy icon fonts into assets/fonts/ or assets/webfonts/ in the starter for v1.x; those local runtime assets are no longer starter-owned.
Use the hybrid naming model:
- Theme-coupled plugins:
- repo:
al-folio-<feature> - gem/plugin id:
al_folio_<feature>
- repo:
- Reusable plugins:
- repo:
al-<feature>or neutral name - gem/plugin id aligned with plugin namespace
- repo:
Third-party non-al-* plugins are still valid and can be featured.
Use the Plugin Feature Proposal issue template in this repo and include:
- plugin repo URL
- gem name and Jekyll plugin id
- compatibility range (
al_folio_min/al_folio_max) - owner/maintainer contact
- demo page/post path
If maintainers decide to list it, update _data/featured_plugins.yml through a PR.
If maintainers decide to bundle it by default, that is a separate decision and requires wiring updates in Gemfile and _config.yml.
al-folio starter currently does not have a gemspec. Plugin integration is controlled by:
- Gemfile for dependency declarations
- _config.yml for Jekyll plugin activation/configuration
Any contribution guidance that references gemspec updates should be interpreted as starter wiring updates to those two files.
GitHub actions are a way to automate tasks in the repository. They are defined in .github/workflows/ directory. Each file in this directory is a workflow. Workflows are made up of one or more jobs, and each job runs on a virtual machine hosted by GitHub. You can see the status of the workflows in the Actions tab of your repository. For more information, check the GitHub Actions documentation.
Currently we have the following workflows:
axe.yml: does some accessibility testing in your site. It uses the axe cli tool with a chrome driver to render the webpage and allow the analysis. Must be run manually, since fixing some of the issues is not straightforwardbroken-links-site.yml: checks for broken links in your built website with the lychee-actionbroken-links.yml: checks for broken links in your repository with the lychee-actiondeploy-docker-tag.yml: adds some metadata to the docker image and pushes it to Docker Hubdeploy-image.yml: deploys a new docker image with the latest changes to Docker Hubdeploy.yml: deploys the website to GitHub Pagesdocker-slim.yml: deploys a smaller version of the docker image to Docker Hub with the docker-slim-actionlighthouse-badger.yml: runs a lighthouse test for your site with the lighthouse-badger-action, saving the results in the repository for easy inspecting, as can be seen here. For more information on how to enable this workflow, check our FAQ question about itprettier-comment-on-pr.yml: not working. For now, this action is disabled. It was supposed to run prettier on the PRs and comment on them with the changes needed. For more information, check issue 2115prettier.yml: runs prettier on the code to ensure it is well formatted. For more information, check our FAQ question about it
In the configuration file _config.yml the tag google-site-verification should be updated to use this functionality. Here is how you can proceed,
- Generate your HTML tag by following https://support.google.com/webmasters/answer/9008080?hl=en#meta_tag_verification&zippy=%2Chtml-tag with URL prefix option.
- In the verify ownership option choose HTML tag and copy the tag contents which should look like
<meta name="google-site-verification" content="GoogleSearchConsoleID" />. - The string against
contentis the Google Search Console ID that can be used in the template. e.g.google-site-verification: GoogleSearchConsoleID. Now set the propertyenable_google_verification: true.
It looks like the Domain type property in the Google Search Console to verify the ownership of all URLs across all subdomains with GitHub Pages does not work.
Code Wiki and DeepWiki are AI-powered tools that help you understand GitHub repositories through interactive documentation. They should be treated as supplementary resources when you cannot find the information you need in the official project documentation.
Use Code Wiki and DeepWiki only after:
- You have reviewed the relevant documentation files in this repository (
README.md,INSTALL.md,CUSTOMIZE.md,FAQ.md, orCONTRIBUTING.md) - You have checked the GitHub Discussions Q&A section for similar questions
- You have searched existing GitHub Issues
Code Wiki (powered by Google Gemini) generates interactive documentation from your repository code. It allows you to:
- Browse your repository's structure and architecture
- Search for specific functions or modules
- Understand how different parts of the codebase work together
- Get diagrams and visual representations of your code architecture
DeepWiki provides an AI-powered interface to ask questions about a repository, similar to having an engineer available 24/7. It allows you to:
- Ask natural language questions about the codebase
- Get instant answers about how specific features work
- Search for code patterns and implementations
These tools are generated automatically from our code and may not always reflect the most current documentation standards or best practices specific to this project. They should not replace official documentation but rather complement it when you need deeper technical insights.
- Code Wiki: Code Wiki for al-folio
- DeepWiki: DeepWiki for al-folio
