Markdown pages
Author long-form pages in Markdown without leaving the framework.
What .md.crisp is
A .md.crisp source is a route whose output is rendered from Markdown to HTML.
It is the natural format for long-form pages — guides, reference notes,
changelogs — that would be tedious to write as raw markup.
The two-pass contract
- The page runs first. Interpolation, includes and directives are
evaluated against the typed context, exactly as in an
.html.crisproute. - Markdown renders second. The resulting text is converted to HTML with tables and strikethrough enabled. Raw HTML in the source passes through.
Because the page runs first, an include can inject Markdown that is then rendered in place, and interpolated values appear in the final document.
# {{= page.title }}
Written {{= page.date }} · {{= page.tags | len }} tags
@include("_partials/_changelog-body.md.crisp")
Includes across formats
An .html.crisp page may include a .md.crisp partial; the runtime casts
Markdown to HTML at that point. A .md.crisp page may include other .md.crisp
partials as-is. This site uses that: page shells are HTML partials, and each
article body is a .md.crisp content partial dropped into a styled container.
When to reach for raw HTML
Markdown covers prose, lists, tables, links and fenced code. For anything that needs precise structure or classes — a callout, a diagram, a code sample that must show template syntax literally — write a raw HTML block inside the Markdown source. It passes through untouched.
Route contract: docs/specs/02-application-manifest.md, section 3.