Quick-Start Guide
Welcome to the documentation site of Minimal Mistakes Plus! Minimal Mistakes Plus is a plugin extending the beloved Jekyll theme Minimal Mistakes.
I’ve been using Minimal Mistakes for blogging and documenting my projects for a long time, and I have made lots of customizations along the way. I figure maybe I should release them in a standalone Gem so that others and I can reuse those features painlessly.
It provides additional features besides everything in Jekyll and Minimal Mistakes, such as:
- Dark mode toggling
- Drafting in Org Mode
- Numbering headings automatically
- Encrypting posts with a password
- and more…
This site itself is both the documentation and demonstration of the plugin.
Here’s how to quickly install and use Minimal Mistakes Plus for your site!
Installation
Using Scaffold (Fastest)
I’ve provided a scaffold or template project called Minimal Mistakes Plus Scaffold, which uses the minimal-mistakes-jekyll theme and the minimal-mistakes-plus plugin. You can clone or download the repository, and then in its root folder run these commands:
bundle install
bundle exec jekyll serveNow you can view the site instantly on your computer and start adding contents to it without making any setup or configuration!
Scaffold from Scratch
Let’s say you want to set up a documentation site in the docs/ folder of your project. You need to configure a local Jekyll environment and deploy it using GitHub Actions. Standard GitHub Pages builds block custom plugins for security, so a custom Action is required.
Here is the step-by-step process from scratch:
1. Scaffold the directory
-
Navigate to the root of your
foorepository and create thedocs/folder.cd ~/projects/foo mkdir docs cd docs -
Create the
GemfileInside the
docs/directory, create aGemfilewith the following content:source 'https://rubygems.org' gem 'faraday-retry' gem 'jekyll', '~> 3.9' gem 'kramdown-parser-gfm' gem 'minima', '~> 2.5' gem 'minimal-mistakes-jekyll' gem 'org-ruby' gem 'webrick' group :jekyll_plugins do gem 'jekyll-algolia' gem 'jekyll-feed' gem 'jekyll-gist' gem 'jekyll-include-cache' gem 'jekyll-paginate' gem 'jekyll-sitemap' gem 'jemoji' gem 'minimal-mistakes-plus', github: 'josephtesfaye/minimal-mistakes-plus', branch: 'main' end # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem # and associated library. platforms :mingw, :x64_mingw, :mswin, :jruby do gem 'tzinfo', '~> 1.2' gem 'tzinfo-data' end # Performance-booster for watching directories on Windows gem 'wdm', '~> 0.1.1', :platforms => [:mingw, :x64_mingw, :mswin] -
Create the
_config.ymlCreate your Jekyll configuration file in
docs/_config.ymlto set the theme and activate your plugin.theme: minimal-mistakes-jekyll title: Foo Documentation url: "https://<your-github-username>.github.io" baseurl: "/foo" # Crucial for project pages on GitHub author: name: Jane Doe avatar: https://mmistakes.github.io/minimal-mistakes/assets/images/mm-free-feature.png bio: An explorer at heart location: Tokyo, Japan links: - label: GitHub icon: fab fa-fw fa-github url: https://github.com/<your-github-username>/foo/ footer: links: - label: GitHub icon: fab fa-fw fa-github url: https://github.com/<your-github-username>/foo/ copyright: Jane Doe copyright_url: /foo/about/ search: true search_full_content: true include: - _pages exclude: - "*.sublime-project" - "*.sublime-workspace" - vendor - .asset-cache - .bundle - .jekyll-assets-cache - .sass-cache - assets/js/plugins - assets/js/_main.js - assets/js/vendor - Capfile - CHANGELOG - config - Gemfile - Gruntfile.js - gulpfile.js - LICENSE - log - node_modules - package.json - package-lock.json - Rakefile - README - tmp encoding: "utf-8" markdown_ext: "markdown,mkdown,mkdn,mkd,md" markdown: kramdown highlighter: rouge lsi: false excerpt_separator: "\n\n" incremental: false kramdown: input: GFM hard_wrap: false auto_ids: true footnote_nr: 1 entity_output: as_char toc_levels: 1..6 smart_quotes: lsquo,rsquo,ldquo,rdquo enable_coderay: false # Outputting permalink: /:categories/:title/ # paginate: 10 # paginate_path: /page:num/ timezone: Tokyo/Japan plugins: - jekyll-paginate - jekyll-sitemap - jekyll-gist - jekyll-feed - jemoji - jekyll-include-cache whitelist: - jekyll-paginate - jekyll-sitemap - jekyll-gist - jekyll-feed - jekyll-include-cache category_archive: type: liquid path: /categories/ tag_archive: type: liquid path: /tags/ compress_html: clippings: all ignore: envs: development # Collections collections: docs: output: true permalink: /:collection/:path/ defaults: # _docs - scope: path: "" type: docs values: layout: single read_time: false author_profile: false share: false comments: false toc_sticky: true sidebar: nav: "docs"
2. Create the landing page
-
In
_config.ymladd:include: - _pages -
In
docs/_pages/create a new file namedhome.mdwith the following content:--- layout: splash permalink: / hidden: true header: overlay_color: "#5e616c" actions: - label: "<i class='fas fa-download'></i> Install now" url: "/docs/quick-start-guide/" excerpt: > A flexible two-column Jekyll theme. Perfect for building personal sites, blogs, and portfolios.<br /> <small><a href="https://github.com/mmistakes/minimal-mistakes/releases/tag/4.26.0">Latest release v4.26.0</a></small> --- This is the landing page...
3. Create the “User Guide” documentation
-
In
_config.ymldefine a collection calleddocsand set the default values for pages in the collection:collections: docs: output: true permalink: /:collection/:path/ defaults: - scope: path: "" type: docs values: layout: single read_time: false author_profile: false share: false comments: false toc_sticky: true sidebar: nav: "docs" -
Create the main menu and sidebar menus in
_data/navigation.yml:main: - title: "User Guide" url: /docs/quick-start-guide/ docs: - title: Getting Started children: - title: "Quick-Start Guide" url: /docs/quick-start-guide/ -
Create the page
_docs/01-quick-start-guide.md:--- title: "Quick-Start Guide" permalink: /docs/quick-start-guide/ excerpt: "How to quickly install and setup Minimal Mistakes Plus for use with GitHub Pages." last_modified_at: 2026-03-15 redirect_from: - /theme-setup/ toc: true --- Welcome to project foo...
4. Run Locally
While still inside the docs/ directory, install the dependencies and start the local server.
bundle install
bundle exec jekyll serveVisit http://127.0.0.1:4000/foo/ to ensure the site renders with the Minimal Mistakes layout and that your plugin loads without errors.
Deployment with GitHub Actions
1. Configure GitHub Actions for Deployment
Because standard GitHub Pages will silently disable minimal-mistakes-plus as an “unrecognized plugin,” you must use GitHub Actions to build the site.
-
At the root of your repository (not in
docs/), create the file.github/workflows/pages.ymland paste this workflow:name: Build and Deploy Docs on: push: branches: - main - master permissions: contents: read pages: write id-token: write jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Ruby uses: ruby/setup-ruby@v1 with: ruby-version: '3.1' bundler-cache: true working-directory: docs - name: Setup Pages uses: actions/configure-pages@v4 - name: Build with Jekyll working-directory: docs run: bundle exec jekyll build --destination ../_site env: JEKYLL_ENV: production - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: _site deploy: environment: name: github-pages url: $ runs-on: ubuntu-latest needs: build steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 -
To install dependencies correctly on GitHub Actions you need to add the platform
x86_64-linuxto your lockfiles (Gemfile.lock). Run the following command underdocs/:bundle lock --add-platform x86_64-linuxThen commit the changes:
git add Gemfile.lock docs/Gemfile.lock git commit -m "Add x86_64-linux platform to Gemfile.lock for CI compatibility" git push
2. Enable GitHub Actions Deployment:
- Go to your repository on GitHub.
- Click Settings > Pages.
- Under Build and deployment, change the Source dropdown from “Deploy from a branch” to GitHub Actions.
- Commit all your files and push to GitHub. The action will trigger, build your site from the
docs/directory using your parent gem, and publish it.