stichpunkt.

Expressions

${ ausdruck } is evaluated by stichpunkt with a small, own expression language. It runs on the server, can only read the index and always terminates: no loops, no user functions, no assignment. It is a Pratt parser and a tree-walking evaluator written in TypeScript; there is no eval, no Lua and no JavaScript runtime.

Three outcomes are possible:

Outcome How it looks
A value the value itself: a number, true/false, a muted dash for null, a comma-separated list, a wikilink for a page, or a page list through the pages renderer
Not run a quiet chip "expression · not run", for a Lua remnant or a body that is not valid syntax
Runtime error a red error chip with the message and the source text, never blank

A few live examples:

2

offen

18

The full reference

${...} is only ever escaped output: an expression never produces HTML, and a frontmatter string that looks like an expression is left as data.

More:

  • Reference: every builtin and every operator with a live example.
  • Examples: realistic cases from a knowledge base.
  • Expressions/Errors: what the red and the quiet chips look like.

The kb.* helpers still work

The four SilverBullet helper calls remain recognised before the expression grammar and render exactly as before, from the index. Every other ${...} in the old Lua style stays a quiet chip. Live examples:

Features18 notes · last 2026-10-09Start
20 notes in 2 categories

An unknown category shows a warning:

Unknown category: does-not-exist

A Lua remnant that is not one of the four presets stays inert: expression · not run and expression · not run.