vault-frontmatter

v2026.09.24

Offline YAML frontmatter maintenance for Obsidian notes. Use when stripping legacy `id:`, cleaning Templater markers, or fixing bare emoji tags.

GitHub
Install command
npx skhub add laurigates/vault-frontmatter
Markdown
SKILL.md

Vault Frontmatter Maintenance

When to Use This Skill

Use this skill when...Use the alternative instead when...
Bulk-stripping legacy id: fields or null tags: entries across many .md files offlineSetting a single property on one live note via the running CLI β€” use properties
Cleaning up unrendered {{title}} / <% tp.file.cursor() %> placeholders inside YAMLRepairing those markers in note body text β€” use vault-templates
Adding missing frontmatter blocks to notes that lack oneConsolidating the actual tag values once the YAML structure is sound β€” use vault-tags

Offline, file-level repair of YAML frontmatter. Complements the properties skill (which uses the Obsidian CLI) by operating on .md files directly β€” safe for bulk mechanical passes.

When to Use

  • Stripping the legacy id: field from a batch of notes
  • Removing unrendered Templater markers (<% tp.file.cursor() %>, {{title}})
  • Cleaning up null entries inside tags: lists
  • Adding missing frontmatter blocks to notes that lack one
  • Ensuring work-namespace notes carry context: work
  • Normalizing tag case / pluralization drift

Canonical Frontmatter Shape

---
tags:
  - πŸ› οΈ/neovim       # emoji-prefixed category tag
  - πŸ“/notes         # note-type tag
context: work        # work-namespace notes only
---

Rules:

  1. No id: field β€” removed from all current templates.
  2. 2–3 tags per note; every tag either emoji/subcategory or a bare note-type like πŸ“/moc.
  3. No bare emoji placeholders (πŸ“, 🌱, πŸ“/🌱) β€” they indicate the tag was never specified.
  4. No null tag values β€” YAML must be valid.
  5. Work-namespace notes (e.g. under work/) carry context: work; personal notes omit the field.

Detection Patterns

IssueGrep patternNotes
Legacy id:^id: inside frontmatter blockStrip entire line
Bare placeholder tagYAML tag value exactly πŸ“, 🌱, or πŸ“/🌱Remove if note has other useful tags; else leave
Null tagYAML tag value literally nullRemove list entry
Templater leak<% tp\. or \{\{title\}\} or \{\{date\}\}Replace {{title}} with filename stem; strip <% tp.* %>
Corrupt emojiTag contains Unicode replacement char \ufffdFlag for manual fix β€” don't guess
Missing work contextFile under the work namespace (e.g. work/) without context: workAdd the line

Edit Recipes

Strip legacy id

Before:

---
id: 20240118235900
tags: [πŸ› οΈ/neovim]
---

After:

---
tags: [πŸ› οΈ/neovim]
---

Remove bare placeholder (keeping useful tags)

Before:

tags:
  - πŸ“
  - πŸ› οΈ/ansible

After:

tags:
  - πŸ› οΈ/ansible

Legacy MOC tag β†’ current

Before:

tags:
  - πŸ—ΊοΈ

After:

tags:
  - πŸ“/moc

Edit Pattern

Use Edit with small targeted old_string / new_string replacements that preserve exact indentation. Never rewrite whole files when a line edit suffices β€” it minimizes the commit diff and makes reviews easy.

For bulk fixes across many files, drive from a script that emits one Edit call per file rather than running sed in Bash. The commit-per-category pattern (fix(tags): strip bare πŸ“ from 639 notes) relies on keeping all edits in one logical batch.

Safety

  • Never write to .obsidian/, .claude/, .git/, Files/. The safety hook enforces this.
  • Never add frontmatter to daily notes in Notes/ or work/notes/ without verifying β€” they often don't need any.
  • When in doubt about what a placeholder tag meant, leave the note unchanged and report it rather than guess.

Related Skills

  • properties β€” runtime property ops via Obsidian CLI (requires running Obsidian)
  • vault-tags β€” tag taxonomy consolidation rules
  • vault-templates β€” Templater convention reference
Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

MIT

Source path

obsidian-plugin/skills/vault-frontmatter

Default branch

main

Latest commit

1668324

Tree SHA

b2d4cc3