Chat formatting
Agent replies render as GitHub-flavoured Markdown: headings, lists, tables, code blocks, links. On top of that the chat understands two container directives an agent can use to structure a long, layered answer — no product change required, just a mention in the agent's system prompt.
Both start with ::: at the beginning of a line and are closed by a line containing
only :::.
Collapsible sections: ::: detail
::: detail Evidence in full
| Document | Statutory reference |
| --- | --- |
| Pension record | § 9(2) sent. 1 no. 3 |
:::
The text after the keyword is the heading, which stays visible; everything else is
collapsed and revealed on click. With no heading it reads Details. ::: details
works the same way.
This is the tool for answers that carry both a summary and the full reasoning: the summary stays readable and the reasoning is one click away instead of two screens down.
While the agent is still typing, a section that has not been closed yet renders
expanded — so you watch it being written — and collapses the moment its closing
::: arrives.
Callouts: ::: warning and friends
::: warning Unreviewed draft
This answer was generated automatically and has not been approved.
:::
Seven keywords, four appearances:
| Keyword | Appearance |
|---|---|
note, info | neutral |
tip, success | green |
warning, caution | amber |
danger | red |
note and info stay neutral deliberately: an aside as loud as the warning beside it
devalues the warning.
The text after the keyword is an optional title. Use a callout for the one line that must not be missed — a caveat, an open question, a deadline. Not for every other paragraph; a document made entirely of callouts has no hierarchy left.
Nesting and limits
- Containers may nest (a callout inside a
::: detail), up to eight levels deep. - The body is ordinary Markdown — tables, lists, code and quotes all work inside it.
- Nothing is transformed inside a fenced code block (
```), so an example of the syntax stays an example. - Containers must sit at the top level, not indented inside a list item.
- An unknown keyword (
::: sidebar) is left as literal text rather than disappearing.
Wide tables
A table wider than the window scrolls horizontally instead of squeezing its columns,
and column headers are never broken mid-word. That said: on a phone, three to four
columns is the most that stays readable without scrolling. Anything that wants more
columns usually belongs in more rows, or in a ::: detail.
Citations
When an agent draws on a knowledge set it points at the retrieved passages with [1],
[2]. Those markers become clickable chips; for a PDF the click opens the file at
the cited page. A prose reference ((file, page 47)) cannot do that — it stays text
someone has to look up by hand. An agent that should point at pages ought to use the
[n] markers.