███╗ ██╗███╗ ██╗ ██████╗███╗ ███╗███████╗ ███████╗████████╗ █████╗ ██████╗ ████████╗███████╗██████╗
████╗ ██║████╗ ██║ ██╔════╝████╗ ████║██╔════╝ ██╔════╝╚══██╔══╝██╔══██╗██╔══██╗╚══██╔══╝██╔════╝██╔══██╗
██╔██╗ ██║██╔██╗ ██║ ██║ ██╔████╔██║███████╗ ███████╗ ██║ ███████║██████╔╝ ██║ █████╗ ██████╔╝
██║╚██╗██║██║╚██╗██║ ██║ ██║╚██╔╝██║╚════██║ ╚════██║ ██║ ██╔══██║██╔══██╗ ██║ ██╔══╝ ██╔══██╗
██║ ╚████║██║ ╚████║ ╚██████╗██║ ╚═╝ ██║███████║ ███████║ ██║ ██║ ██║██║ ██║ ██║ ███████╗██║ ██║
╚═╝ ╚═══╝╚═╝ ╚═══╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝
Directives are line-based commands in the form ::name key=value::.
Built-in directives are:
- ::page_list ...::
- ::app name=...::
- ::downloads ...::
- ::ascii_image ...::
- ::comments::
Some ground rules for directives are:
- A directive must be on its own line to be interpreted
- Put directives in fenced code blocks if you want to show examples
- Directives can be used in Markdown pages and templates
- Argument values that contain spaces must be quoted: key="two words"
Each directive is explained in more detail below.
page_list
Renders a list of pages discovered from content metadata, usually for blog/archive sections.
Any frontmatter key can be used as a filter argument. Multiple filters are ANDed together.
md
::page_list section=blog limit=3::
::page_list section=blog author=Jane limit=5::
::page_list section=blog author="Mary Shelley" limit=5::
::page_list language=da limit=0::
The limit argument caps the number of results (default: 5). Set limit=0 or a negative value to show all matching pages.
Use display_field to show a different frontmatter field as the link text instead of title. Falls back to title if the specified field is absent on a given page.
md
::page_list section=authors display_field=sort_name limit=0::
All other arguments are treated as frontmatter filters — only pages whose frontmatter contains a matching key/value pair are included.
app
Embeds dynamic app output into the current page. The built-in chat app uses this directive.
md
::app name=chat::
Currently, only the chat-app is available:
downloads
Renders a file listing from a storage folder so users can download files from the node.
md
::downloads path=my-downloads::
The path-variable should target a folder inside /storage/files, all files inside the folder will be added to the download table.
ascii_image
Converts an image into ASCII-style Micron art and optionally shows a caption.
md
::ascii_image src=assets/test-pattern.ppm caption="Bundled test pattern" width=32::
Optional image arguments include:
- collapsed=true|false to force per-image collapse behavior
- show_label="..." to override the expand link label for collapsed images
- show_fast_label="..." and show_truecolor_label="..." to customize dual expand labels when truecolor is enabled
- id=... to give repeated images separate expand state keys
This directive it typically not called directly, since the project supports using regular markdown image syntax like this:
md

A default and max width can be defined in the site_theme file.
Default collapse behavior is also configured in the theme via ascii_image_collapse_mode() and ascii_image_inline_threshold_bytes().
When truecolor is enabled in the theme, collapsed images provide both fast and truecolor expand options.
comments
Embeds the comments form and thread for the current page.
md
::comments::
Uniquely, this directive is available in templates, and by default the post-template. Comments can be turned off on individual posts via frontmatter.
NomadNet CMS Starter - A reusable NomadNet site starter built from Markdown and Micron.
Page last updated 03/06/2026 13:36