Writing
Once your folder is a site, writing is the work: shaping each page and how pages connect. This section covers everything you do in your Markdown.
Control each page with frontmatter — title, date, visibility, and more. See how files, folders, and URLs fit together. Connect pages with wikilinks and embeds, shape the site's navigation and footer, call out content with callouts, and add layouts with shortcodes — grids, galleries, hero images. Your media is tidied for the web for you, and a site can be Multilingual sites. Write in the built-in editor or any Markdown editor you like.
Choosing the right primitive
When a page needs a specific visual treatment, try in this order:
- Plain markdown + CSS selector. Use
## Mission,> quote,*byline*,- item. Let the theme select the resulting HTML. Zero new vocabulary. - A moss-native shortcode.
:::grid N,::::buttons,:::hero,:::gallery,> [!pending]. These emit well-known class names that the default theme already styles. See shortcodes. - Named-class fenced div.
::: {.class}attaches a CSS class to a region without introducing a new shortcode. Pair with a CSS rule in.moss/theme/style.css. See shortcodes#Named-class fenced divs. - Custom shortcode. Rare; only when you need new behavior the parser doesn't already support.
Special cases
| Goal | Primitive |
|---|---|
| Deck / subtitle / lead paragraph after a title | > blockquote immediately after # H1, styled via h1 + blockquote |
| Identity line / tagline under the title | ::: {.tagline} fenced div after the H1 |
| Kicker / eyebrow before the title | ::: {.eyebrow} fenced div before the H1 |
| Pull quote inside a section | > quote styled differently from callouts via h2 ~ blockquote |
| Clickable compound card in a grid | Wrap cell content in […](/url); moss emits one <a> with block children |
| Repeated block across pages | Extract as a partial (unlisted: true, nav: false, children: false), transclude via ![[partial-name]] |
| Placeholder / in-progress section | > [!pending] Title callout |
Markdown attributes that do NOT work
These Pandoc-style attribute syntaxes are not supported by moss:
# Title {.class}: heading attributesparagraph\n{.class}: paragraph attributes---\n{.section-divider}: hr attributes
Use ::: {.class} fenced divs or CSS element selectors instead.
Frontmatter
Metadata fields that control how moss treats each page.
Structure
How files and folders become pages, sections, and navigation.
Navigation & footer
Control what appears in the header nav, the footer, and the breadcrumb trail.
Links & Embeds
Wikilinks, embeds, cross-references, and bilingual content.
Callouts
Highlighted blockquote callouts for notes, warnings, tips, and more.
Shortcodes
Layout blocks and components that extend markdown.
Media
Images, video, notebooks, and other files in your site.
Multilingual sites
Folder-per-language structure, translation keys, and automatic language toggle.
Editor Shortcuts
Keyboard shortcuts for formatting text in the moss editor.
Markdown editors
Which markdown editor pairs well with moss: Obsidian, iA Writer, Typora, VS Code, and the new wave.