MarkUpDown Design Spec

The
MUD Language

Three primitives. No proprietary binary. No React island required for a hero band. MUD = structured markup humans and AI can agree on.

File format

Every page is pagename.mud with YAML frontmatter (title, menu, format: mud-spec, process: markdown: false).

@@@ — Design tokens

Opens a page-level design context (theme name, layout mode, optional CSS variables).

::: — Layout fences

Named blocks: hero, cards, pricing, timeline, compare, code, manifesto, and more.

++::: — NEXT Object Notation

Structured config inside fences — lists, nested keys, multiline bodies with |.

Grav discovers .mud via the grav-mud-alpha plugin (onPluginsInitialized registers the extension before page scan).

Extension competes with .md by priority — .mud wins when both exist in a folder.

Minimal example

mud
@@@
name: grav-official
layout: promo
@@@

::: hero
eyebrow: Hello
title: Grav
accent: MUD
lead: One file. Full section.
cta:
  - [Go](/) primary
:::

Copy this into user/pages/01.home/default.mud and clear Grav cache. Done.

Layout fences (Alpha)

hero · quote · cards

Promo landing patterns — CTAs use markdown link syntax with optional primary suffix.

pricing

Agency tier cards with plan: blocks, feature lists, and highlight flag. Built for the Services page.

timeline · compare

Roadmaps and before/after tables without hand-rolling HTML tables in Twig.

code

Fenced samples for docs — escaped pre blocks, language label, optional caption.

MUD vs plain Markdown

Plain .mdGrav MUD (.mud)
Free-form prose onlyDeclared layout sections
Theme guesses structureCompiler emits semantic HTML
AI edits break TwigAI edits fenced blocks
".md cosplay"Real .mud extension

Powered by Grav MUD Alpha v0.5.0 · MarkUpDown Design Spec (.mud) · NEXT Object Notation