Markdown Syntax
Templates are written in a small markdown-style syntax. This page covers every element you can use, plus how variables and conditionals work.
Headers
A line beginning with one or more # characters followed by a space is a header.
# Morning RoutineTasks
A task is an empty checkbox [] followed by whitespace and a label. Consecutive tasks are grouped together.
[] Make the bed
[] Brush teeth
[] Pack lunchThe checkbox must be exactly [] — any marker between the brackets, a second checkbox, or a missing label is reported as an error.
Paragraphs
Any other non-blank line is treated as prose. Consecutive prose lines are joined with a space into a single paragraph. A blank line ends the current paragraph (or task group) and starts a new block.
Remember to stretch before
you start your workout.
This is a separate paragraph.Fill Lines
A fill line pairs a label and a value, separated by exactly five dots: ...... Consecutive fill lines are grouped together, similar to tasks.
Current Weather.....20F
Current Precipitation Chance.....89%A run of four or six dots is not a separator and is left as ordinary text. Either side may contain !name variables, which are interpolated the same way as elsewhere in the document.
Current Weather.....!currentVariables
A variable is written as !name, where the name may contain letters, numbers, and underscores. When a template is exported, each variable is replaced with the value you provide (or its configured default).
# !day Checklist
[] Email !owner the reportEach variable's type is inferred from how it is used:
| Type | Inferred when |
|---|---|
text | The variable is used inside a line — a header, task label, or paragraph. Its value must be a string. |
yes / no | The variable is used as a condition (see Conditionals below). Its value must be a boolean. |
conflict | The same name is used both as text and as a condition. No single value can satisfy both uses, so the conflict must be resolved. |
Substituted values are inserted literally — they are never re-parsed as markup. A variable that is referenced but not provided, or provided with the wrong type, prevents the document from resolving.
Conditionals
A condition uses a boolean variable to include or exclude content. It is written as !name && …. When the variable is true, the governed content is included; when false, it is dropped entirely.
Inline form
The rest of the line after && is the single item governed by the condition.
!includeNotes && [] Review meeting notesBlock form
Follow && with { to govern every line up to a closing } on its own line.
!weekend && {
[] Sleep in
[] Go for a long walk
}The condition variable must be a boolean. The block must be closed with }, otherwise an error is reported.