The project is in a healthy, maintained state
GitHub alerts, status badges, sectioned pages, install tabs and agent-readable Markdown twins for Jekyll and GitHub Pages, plus a checker (modootoday-check).
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

>= 3.9, < 5.0
 Project Readme

jekyll-theme-modootoday

A Jekyll theme that keeps page bodies in plain GitHub Markdown and styles them with layouts, includes and CSS.

CI Gem Version License: MIT

Documentation · 한국어

Why

  • Only standard Markdown in your pages. GFM plus GitHub alerts; the same file reads well on github.com.
  • Works on GitHub Pages. Layouts and includes are Liquid only, so remote_theme works on the classic build; Jekyll 4 works too.
  • Components without markup. Alerts, status badges, card grids, tabs, buttons, accordion, steps, timeline and more come from plain Markdown patterns.
  • Readable by agents. Every page can have a byte-identical Markdown twin, plus llms.txt and llms-full.txt.
  • Accessible. Keyboard shortcuts, visible focus, safe areas on phones, 44 px touch targets, high contrast and reduced motion are built in.
  • Checked. modootoday-check validates the sources and the built site.

Install

As a gem (theme:):

# Gemfile
gem "jekyll-theme-modootoday", "~> 1.2"
# _config.yml
theme: jekyll-theme-modootoday

On GitHub Pages without a Gemfile (remote_theme:):

# _config.yml
remote_theme: modootoday/jekyll-theme-modootoday@v1.2.0
plugins:
  - jekyll-remote-theme

Pin a tag or a commit. More options: Install guide.

Quick start

mkdir my-docs && cd my-docs
printf 'source "https://rubygems.org"\ngem "jekyll", "~> 4.4"\ngem "jekyll-theme-modootoday", "~> 1.2"\n' > Gemfile
printf 'theme: jekyll-theme-modootoday\nmarkdown: kramdown\nkramdown: {input: GFM}\nsass: {style: compressed, silence_deprecations: [import, global-builtin]}\n' > _config.yml
printf -- '---\nlayout: doc\ntitle: Home\n---\n# Hello\n\n> [!TIP]\n> Plain Markdown, styled.\n' > index.md
bundle install && bundle exec jekyll build
bundle exec modootoday-check . _site

Walkthrough: Write your first page.

Concepts

  • Plain body, rich layout. The body is GFM; sections: front matter maps each ## to a component. See Components and the kitchen sink.
  • Rules. What may appear in a body, and what each pattern becomes, is defined in RULES.md (md-components v1).
  • Settings and tokens. One modootoday: block in _config.yml, CSS custom properties --mt-*, one Sass partial per component. See Configuration and Customize.
  • Blog and news. blog, news, news-article, author and feed layouts: paginated card lists (list, grid, magazine), bylines from _data/authors.yml, series, related posts, share, JSON-LD, per-language Atom feeds; Liquid only, styles and script in an optional bundle. See Blog and news.
  • Twins: three ways — stub files (default, classic Pages), the jekyll-theme-modootoday plugin (Jekyll 4 / Actions), or modootoday.twins: source with front-matter-less pages (classic Pages, no stubs). See RULES.md §5a.

Commands

modootoday-check SRC SITE [options] (run after jekyll build):

Option Checks
SRC SITE always: front matter, forbidden syntax, alerts, fence info strings, status:/tag:/kbd: values (since: is rejected), sections: count, _data/i18n/<lang>.yml keys against the default language and translated pages against default-language pages, _data/components.yml (keys, slot contract counts per section, parts against api.md and the built HTML), Sass/CSS rules, unconverted markers in the build, schema.org JSON-LD in the build (valid JSON, vocabulary, required properties per type, absolute URLs, ISO 8601 dates, one graph per page, agreement with Open Graph)
--twins every page has a byte-identical Markdown twin, per-language llms.txt and llms-full.txt
--github-pages[=VERSION] Gemfile.lock pins github-pages VERSION (default 232)
--schema-recommended also warn about schema.org properties Google Search recommends (author, image, dates, ...) that a JSON-LD node lacks
--strict warnings fail the run
--i18n _data/i18n/<lang>.yml against the theme registry (i18n/en.yml in the gem): unknown keys, %{name} placeholder mismatches, and pages marked translation: pending
--i18n-pages warn about default-language pages with no translation in a modootoday.full_languages language (the page with the same ref:, else the same path under <lang>/); with --strict they fail
--i18n-init=LANG,... copy the theme's catalogs (i18n/<lang>.yml, 23 languages) into SRC/_data/i18n/ as a starting point for overrides (optional; the theme already uses them), and list keys an existing catalog lacks
--gh also render each page with gh api markdown (network, gh login)
--help, -h print usage and options (--help=markdown prints the README table)
--version print the rules version

AI agents

  • Each page guide.md has a twin at /guide/index.md with the same bytes as its body, linked with rel="alternate" type="text/markdown".
  • llms.txt and llms-full.txt exist at / and under each /<lang>/.
  • Jekyll 4: plugins: [jekyll-theme-modootoday] creates them; the classic GitHub Pages build uses one-file stubs.
  • Details: Agents guide and this repository's own llms.txt.

Guides

Exit codes

Code Meaning
0 no problems
1 problems found (listed on stderr) or bad usage

Contributing

Issues and pull requests are welcome. English is the canonical language; translations follow it. See CONTRIBUTING.md.

License

MIT © modootoday (모두의오늘)