Skip to content

Mistakes Keystone can't catch

Keystone checks your document after Pandoc has read your Markdown into a document tree. A mistake that stops Pandoc from building an element in the first place leaves nothing for Keystone to inspect — so it passes through silently and leaks into your book. Knowing this boundary matters as much as knowing the checks.

Malformed fences

A fenced div needs three or more colons. Type two and it isn't a fence at all — Pandoc sees plain text, no element is created, and the line prints verbatim in your book:

:: vspace size="medium" ::

No warning, no error — the literal text :: vspace size="medium" :: appears on the page. Keystone never saw a vspace.

Unclosed spans

The same applies to a bracketed span you forget to close. Pandoc treats the stray [ as ordinary text; no span is created, nothing is flagged:

Here is [an unclosed span with no closing bracket, so it stays literal.

The one that is caught

An unclosed div — an opened ::: with no close — is the single structural slip Pandoc reports, with a line number. Every other structural mistake is silent.

What fills the gap

Because these slip through, two habits do the checking Keystone can't:

  • Always close your fences and brackets — every ::: opener needs its closer; every [ needs its ].
  • Turn on strict mode before you publish — it turns the mistakes Keystone does catch as warnings into hard stops, so a clean strict build is a real signal.