Skip to content

Jekyll page schema

Built-in id: jekyll:page:4.4

Published at https://hawkeyexl.github.io/manni/schemas/jekyll/4.4.json. A $schema that names this URL resolves to the bundled copy, with no network call.

jekyll:page:4.4 checks the front matter Jekyll 4.4 reads from a .md or .markdown page. It requires nothing. In Jekyll it is the presence of the --- block, not its contents, that marks a file for processing. It is one of the platform schemas, which say what a generator accepts rather than what your team agreed.

PropertyValue
Idjekyll:page:4.4
TitleJekyll front matter v4.4
Files it fits.md, .markdown
DialectDraft 2020-12
Required fieldsNone
Additional propertiesAllowed (additionalProperties: true)
Reference kindbuiltin
On by defaultNo
Upstream referenceFront matter
JSONjekyll/4.4.json

Jekyll keeps pages at the repo root, so an override names the directory the schema covers:

manni.config.yaml
meta:
overrides:
- files: "_posts/**"
schemas:
- jekyll:page:4.4

For a one-off run, pass the id directly:

Terminal window
manni meta validate _posts/ -s jekyll:page:4.4

Deliberately the smallest built-in, because Jekyll’s own contract is small: three global variables and four more for posts.

FieldTypeNotes
layoutstring | nullnull or none suppresses the layout, so null is allowed.
permalinkstringOverrides the built URL.
publishedbooleanfalse keeps the document out of the site.
datestringOverrides the date parsed from the file name.
category, categories, tagsstring | string arrayA YAML list or a space-separated string.

The check worth having is published. published: "false" is a string, every string is truthy, and the post you meant to hold back goes live.

Allowed. A key Jekyll does not define passes unchecked.

A post carrying every variable Jekyll defines. This is test/fixtures/platform/jekyll-valid.md, and it passes.

_posts/2026-06-25-deploy.md
---
layout: post
permalink: /guides/deploy/
published: true
date: 2026-06-25 09:30:00 +0200
categories: [guides, deploy]
tags: ci
---

A quoted published flag is a string, and Jekyll publishes the post anyway:

test/fixtures/platform/jekyll-bad-published.md
---
layout: post
published: "false"
---
✗ test/fixtures/platform/jekyll-bad-published.md
/published must be boolean (line 3) [jekyll:page:4.4]
1 file checked, 0 passed, 1 failed, 1 error

Drop the quotes, so the value is the boolean false.