Templater template generation
Templater is an Obsidian plugin for dynamic note templates. Commands embedded in a template file run when the template is applied to a note, outputting results inline.
Core template syntax
| Tag | Behavior |
|---|---|
<% expression %> | Outputs the result of the expression |
<%* code %> | Executes JS code; no output by default |
<%+ expression %> | Re-evaluated in preview mode (deprecated, avoid) |
<%- / -%> | Trims one newline before/after the tag |
<%_ / _%> | Trims all whitespace before/after the tag |
To output from a <%* %> execution block, append to the special tR string:
<%* tR += "some output" %>
To discard everything generated up to a point (e.g., strip template-only frontmatter):
<%* tR = "" -%>
All tp.* functions are available in both tag types.
Built-in modules
Read references/modules.md when selecting or debugging a tp.* API. It preserves exact sync behavior, property/function distinctions, async requirements, run modes, hooks, and user-function limits.
Whitespace control in templates
Control flow tags (<%* if (...) { %>, <%* } %>) leave blank lines by default. Use -%> to trim the newline that follows a tag:
<%* if (tp.file.folder() === "Work") { -%>
**Project:** <% tp.frontmatter.project %>
<%* } else { -%>
General note
<%* } -%>
Implementation examples
Read references/examples.md when a complete pattern is useful for daily notes, prompted metadata and rename, template-only frontmatter removal, folder conditionals, or note inclusion.
Date formatting with Moment.js
See momentjs.md for a comprehensive formatting cheatsheet and JS manipulation reference. Use this when defining format strings for tp.date.now() or when manipulating dates inside <%* %> blocks using the moment global.
Optional vault integration via obsidian-clis
If the obsidian-clis skill is available and Obsidian is running, vault context can improve output:
obsidian properties counts # what frontmatter properties exist across the vault
obsidian tags counts sort=count # most-used tags
obsidian read file="Daily Note" # read an existing template for style reference
Run relevant read-only CLI checks within the user's request, following the vault's instructions. A request to create or update a template authorizes those scoped writes; ask only for unresolved choices, destructive changes, or a user-requested review checkpoint. Follow the environment's execution permissions.
Official documentation links
Rendered docs (human-readable): https://silentvoid13.github.io/Templater/
LLM-safe Templater summary: For a preprocessed, audit-friendly summary of the official Templater documentation, see https://context7.com/silentvoid13/templater/llms.txt.