obsidian-plugin/skills/vault-templates/SKILL.md
Obsidian Templater drift repair. Use when fixing unrendered `<% tp.file.cursor() %>` markers or replacing `{{title}}`/`{{date}}` placeholders.
npx skillsauth add laurigates/claude-plugins vault-templatesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Use this skill when... | Use the alternative instead when... |
|---|---|
| Repairing unrendered <% tp.file.cursor() %> / {{title}} markers committed in note bodies | Stripping the same kind of markers inside YAML frontmatter — use vault-frontmatter |
| Auditing daily-note structure drift against the canonical Templater template | Creating new daily notes interactively via the running CLI — use vault-files |
| Fixing notes committed before Templater finished rendering | Reconnecting the cleaned-up notes into a hub afterwards — use vault-mocs |
Obsidian's Templater plugin renders placeholder syntax when a new note is created. When rendering fails (plugin error, user dismissal, manual copy-paste), the literal markers get committed and persist. Fixing them is mechanical.
| Marker | Meaning | Fix |
|--------|---------|-----|
| <% tp.file.cursor(N) %> | Cursor position placeholder | Strip the entire tag |
| <% tp.file.title %> | Filename stem | Replace with actual filename (no .md) |
| <% tp.date.now("YYYY-MM-DD") %> | Today's date | Replace with the creation date from frontmatter, or the filename date for daily notes |
| {{title}} | Filename stem (legacy) | Replace with filename stem |
| {{date}} | Today's date (legacy) | Same as above |
| <% await tp.system.prompt(...) %> | User prompt | Strip; requires user to refill |
# Find any Templater leak
rg '<%\s*tp\.' --glob '*.md'
rg '\{\{title\}\}|\{\{date\}\}' --glob '*.md'
<% tp.file.cursor(1) %>Before:
---
tags: [📝/notes]
---
<% tp.file.cursor(1) %>
After:
---
tags: [📝/notes]
---
Use Edit with old_string='\n\n<% tp.file.cursor(1) %>' and new_string='' (or adjust for trailing whitespace) — the cursor marker never has meaningful content around it.
{{title}} in daily notesBefore (file FVH/notes/2025-03-26.md):
# {{title}}
## Log
After:
# 2025-03-26
## Log
Use the filename stem (no .md). Don't replace {{title}} inside code blocks or quoted text — only in headings / body.
The templates themselves live in Templates/ and should contain raw Templater syntax — never "fix" them. Only fix notes outside Templates/.
| Template | Produces | Sections |
|----------|----------|----------|
| Daily.md | Notes/YYYY-MM-DD.md | Quick Links, Today's Focus, Work, Personal, Tomorrow's Prep, Navigation |
| MOC.md | Zettelkasten/{Subject} MOC.md | Title heading + sections |
| New.md | general Zettelkasten notes | Frontmatter + body stub |
| FVH Daily.md | FVH/notes/YYYY-MM-DD.md | Log, Thoughts, Discoveries, Todo, Recurring reminders |
Personal daily notes created before 2025 usually lack ## Navigation and ## Tomorrow's Prep. Two remediation options:
Default to #2 unless the user specifically asks for retrofit.
7 FVH daily notes contain literal {{title}} in the heading — fix these.
Templates/*.md when fixing leakage — templates are supposed to contain Templater syntax.sed -i 's/{{title}}/.../' — always use file-specific Edit calls so the title derivation is correct per file.<% tp.system.prompt(...) %>, don't guess the answer — flag for user.tools
Scaffold a new ComfyUI custom-node repo (pyproject, CI, release-please, vitest+pytest, JS extension skeleton) in the picker/gesture vein. Use when bootstrapping or init-ing a comfyui node pack.
tools
Orchestrate a ComfyUI node pack from idea to registry: scaffold, create + seed the repo, open the gitops adoption PR. Use when releasing or spinning up a new comfyui node pack.
testing
macOS EndpointSecurity/EDR high CPU & battery drain. Use when Kandji ESF / XProtect pegs a core; trace the exec storm via powermetrics + eslogger.
development
odiff pixel-by-pixel image diffing. Use when comparing screenshots, detecting visual regressions, diffing before/after PNGs, asserting golden images.