Create custom Templater-compatible note templates via interactive wizard
Creates custom Templater-compatible note templates via interactive wizard.
/plugin marketplace add nathanvale/side-quest-marketplace/plugin install claude-code-docs@side-quest-marketplacetemplate-nameCreate custom Templater-compatible note templates via interactive wizard.
The /para-obsidian:create-note-template command helps you create new note templates for non-inbox note types like projects, areas, resources, or custom workflows.
Unlike inbox classifiers (which process incoming documents), these templates are for manually creating notes via the create --template command or MCP tools.
Use this command to create templates for:
The command runs an interactive wizard with these steps:
Template name (kebab-case): custom-project
Display name: Custom Project
Note type (frontmatter type field): custom-project
Template version: 1
For each field, specify:
projectStatus)Example field definitions:
{
name: "title",
displayName: "Title",
type: "string",
required: true
}
{
name: "created",
displayName: "Created",
type: "date",
required: true,
autoFill: 'tp.date.now("YYYY-MM-DD")'
}
{
name: "status",
displayName: "Status",
type: "enum",
required: true,
enumValues: ["active", "on-hold", "completed"],
default: "active"
}
{
name: "area",
displayName: "Area",
type: "wikilink",
required: true
}
For each section, specify:
Example section definitions:
{
heading: "Why This Matters",
hasPrompt: true,
promptText: "What is the goal?"
}
{
heading: "Success Criteria",
hasPrompt: true,
promptText: "How will you know it's done?"
}
{
heading: "Next Actions",
hasPrompt: false // Static section, no prompt
}
Given the configuration above, the wizard generates:
---
title: "<% tp.system.prompt("Title") %>"
created: <% tp.date.now("YYYY-MM-DD") %>
status: "<% tp.system.prompt("Status", "active") %>"
area: "[[<% tp.system.prompt("Area") %>]]"
template_version: 1
---
# <% tp.system.prompt("Title") %>
## Why This Matters
<% tp.system.prompt("What is the goal?") %>
## Success Criteria
<% tp.system.prompt("How will you know it's done?") %>
## Next Actions
The generated templates use Templater plugin syntax:
<% tp.system.prompt("Label", "default?") %><% tp.date.now("YYYY-MM-DD") %>[[ ]] bracketsAfter generation, the template is validated for:
--- delimiters)<% %>)[[ ]])Warnings (non-blocking):
template_version field (recommended for migrations)Templates are saved to your vault's Templates directory:
${PARA_VAULT}/Templates/{template-name}.md
Overwrite behavior: If a template with the same name exists, you'll be prompted to confirm overwrite.
bun run src/cli.ts create --template custom-project "My New Project"
await para_create({
path: "Projects/My New Project.md",
template: "custom-project"
});
| Type | Description | Example |
|---|---|---|
| string | Text value | "My Project" |
| number | Numeric value | 42 |
| date | Date string | 2025-12-16 |
| array | Comma-separated list | ["tag1", "tag2"] |
| wikilink | Note reference | [[Area/Health]] |
| enum | Predefined values | "active" or "on-hold" |
type field to match note typecreated date with auto-filltemplate_version for migration supportcustom-project, weekly-reviewclient-meeting not just meeting// Metadata
name: "simple-note"
displayName: "Simple Note"
noteType: "note"
version: 1
// Fields
[
{ name: "title", displayName: "Title", type: "string", required: true },
{ name: "created", displayName: "Created", type: "date", required: true,
autoFill: 'tp.date.now("YYYY-MM-DD")' }
]
// Sections
[
{ heading: "Notes", hasPrompt: true, promptText: "Content" }
]
// Metadata
name: "project"
displayName: "Project"
noteType: "project"
version: 2
// Fields
[
{ name: "title", displayName: "Project Title", type: "string", required: true },
{ name: "created", displayName: "Created", type: "date", required: true,
autoFill: 'tp.date.now("YYYY-MM-DD")' },
{ name: "status", displayName: "Status", type: "enum", required: true,
enumValues: ["planning", "active", "on-hold", "completed", "cancelled"],
default: "planning" },
{ name: "area", displayName: "Area", type: "wikilink", required: true },
{ name: "dueDate", displayName: "Target Completion (YYYY-MM-DD)",
type: "date", required: false },
{ name: "tags", displayName: "Tags", type: "array", required: false }
]
// Sections
[
{ heading: "Why This Matters", hasPrompt: true,
promptText: "What is the desired outcome?" },
{ heading: "Success Criteria", hasPrompt: true,
promptText: "How will you know it's done?" },
{ heading: "Context & Background", hasPrompt: true,
promptText: "What's the background or motivation?" },
{ heading: "Resources & References", hasPrompt: false },
{ heading: "Next Actions", hasPrompt: false },
{ heading: "Notes", hasPrompt: false }
]
Error: Template "my-template" not found
Solution: Ensure template exists in ${PARA_VAULT}/Templates/ directory.
Problem: When creating notes, Templater doesn't show prompts.
Solutions:
TemplatesError: Template validation fails with quote/bracket errors.
Solution: Check the generated template for:
[[ or ]] in wikilinks<% %> tagsProblem: Area/project links don't resolve in Obsidian.
Solution: Ensure wikilink fields use proper quoting:
# ✅ Correct (quoted)
area: "[[<% tp.system.prompt("Area") %>]]"
# ❌ Wrong (unquoted)
area: [[<% tp.system.prompt("Area") %>]]
/para-obsidian:create - Create a note from template/para-obsidian:create-classifier - Create inbox classifier with template/para-obsidian:list-templates - View available templates/para-obsidian:validate-template - Validate existing template syntax