Validate and normalize tags against the vault's canonical taxonomy
Enforce consistent tagging across the vault using the canonical vocabulary in _meta/taxonomy.md.
{vault_path}/_meta/taxonomy.md for the canonical tag listScan all pages, extract tags: from frontmatter, and report:
_meta/taxonomy.mdwalkforward -> walk-forward)tags: fieldcd {vault_path}
python3 -c "
import re, os
from collections import Counter
tags = Counter()
for root, dirs, files in os.walk('.'):
dirs[:] = [d for d in dirs if d not in {'.obsidian','.git','.claude-plugin','.github','.notebooklm','_Templates'}]
for f in files:
if not f.endswith('.md'): continue
try: content = open(os.path.join(root, f), encoding='utf-8').read()
except: continue
m = re.match(r'^---\s*\n(.*?)\n---', content, re.DOTALL)
if not m: continue
in_tags = False
for line in m.group(1).split('\n'):
if re.match(r'^tags:', line):
in_tags = True
inline = re.match(r'^tags:\s*\[(.+)\]', line)
if inline:
for t in inline.group(1).split(','): tags[t.strip().strip('\"').strip(\"'\")] += 1
in_tags = False
continue
if in_tags:
item = re.match(r'^ - (.+)', line)
if item: tags[item.group(1).strip()] += 1
else: in_tags = False
for tag, count in tags.most_common(): print(f'{count:4d} {tag}')
"
Compare output against _meta/taxonomy.md. Flag discrepancies.
After audit, fix non-canonical tags:
When a new tag is needed:
_meta/taxonomy.md with name, purpose, and any aliases