Templates
Pensum uses markdown templates stored in your vault at .pensum/templates/. Drop a .md file there and it becomes a command in the command palette.
Built-in templates
Section titled “Built-in templates”Pensum ships with three default templates:
- project.md — used by the New Project command
- meeting.md — used when starting a recording
- wiki-stub.md — used by the Capture Stub command
These are created automatically on first load. Edit them in .pensum/templates/ or reset them to defaults in Settings > Templates.
Creating a custom template
Section titled “Creating a custom template”Create any .md file in .pensum/templates/. For example, .pensum/templates/sprint-retro.md:
---pensum_template: output_folder: "Meetings/Retros" filename: "{{date}} Sprint Retro" prompt_for: - sprint_number---
---type: meetingid: {{id}}date: {{date}}tags: [retro]---
# Sprint {{sprint_number}} Retrospective
## What went well
## What could improve
## Action items
- [ ]Save the file. The command “Create from template: Sprint Retro” appears in the command palette immediately.
When you run it, Pensum prompts you for sprint_number, fills in all the variables, and creates the file at Meetings/Retros/2026-05-14 Sprint Retro.md.
Template configuration
Section titled “Template configuration”The pensum_template block in frontmatter controls behavior:
| Field | Description | Default |
|---|---|---|
output_folder | Where to create the file. Supports {{variables}}. | Vault root |
filename | File name (without .md). Supports {{variables}}. | Template name |
prompt_for | Variables to ask the user for before creating. | None (create immediately) |
Built-in variables
Section titled “Built-in variables”These are always available in every template:
| Variable | Value |
|---|---|
{{id}} | Unique ULID |
{{date}} | Today’s date (YYYY-MM-DD) |
{{time}} | Current time (HH:MM) |
{{year}} | Current year |
{{month}} | Current month (01-12) |
{{day}} | Current day (01-31) |
{{created}} | Same as {{date}} |
Prompted variables
Section titled “Prompted variables”Any variable listed in prompt_for shows as a text field in the creation modal. The user fills them in before the file is created.
pensum_template: prompt_for: - client_name - engagement_typeThis shows two fields: “Client Name” and “Engagement Type”.
Example templates
Section titled “Example templates”Client onboarding
Section titled “Client onboarding”---pensum_template: output_folder: "Clients/{{client_name}}" filename: "{{client_name}} Onboarding" prompt_for: - client_name - contact_email---
---type: projectid: {{id}}status: activecreated: {{created}}client: {{client_name}}tags: [onboarding]---
# {{client_name}} Onboarding
## Contact- Email: {{contact_email}}
## Kickoff tasks
- [ ] Schedule intro call- [ ] Send welcome packet- [ ] Set up shared workspace
## Notes1:1 meeting
Section titled “1:1 meeting”---pensum_template: output_folder: "Meetings/1-1s" filename: "{{date}} 1-1 {{person}}" prompt_for: - person---
---type: meetingid: {{id}}date: {{date}}attendees: [{{person}}]tags: [1-1]---
# 1:1 with {{person}} -- {{date}}
## Their updates
## My updates
## Action items
- [ ]
## NotesWeekly review
Section titled “Weekly review”---pensum_template: output_folder: "Reviews" filename: "{{date}} Weekly Review"---
# Weekly Review -- {{date}}
## What I accomplished this week
## What's carrying over
## Priorities for next week
- [ ]
## ReflectionsThis template has no prompt_for, so it creates immediately with no modal.
Using Templater alongside Pensum
Section titled “Using Templater alongside Pensum”Pensum’s template engine handles simple variable substitution. For advanced logic (conditionals, loops, date math, file lookups), you can use Templater alongside Pensum.
How they coexist: Any {{variable}} that Pensum doesn’t recognize is left as-is in the output. Templater uses <% %> syntax which Pensum never touches. So you can mix both in one template:
---pensum_template: output_folder: "Projects" filename: "{{name}}" prompt_for: - name---
---type: projectid: {{id}}created: {{created}}status: active---
# {{name}}
Created on <% tp.date.now("dddd, MMMM Do YYYY") %>
<% tp.web.daily_quote() %>
## Tasks
- [ ]Pensum fills in {{id}}, {{created}}, and {{name}}. Templater processes <% %> blocks when the file opens. Both work independently.
Setup: Install Templater from the Community Plugins browser. Enable “Trigger Templater on new file creation” in Templater’s settings. Pensum creates the file, Templater processes it on open.