Tag Taxonomy — Controlled Vocabulary for Wiki Tags You are enforcing consistent tagging across the wiki by normalizing tags to a controlled vocabulary. Before You Start Read .env to get OBSIDIAN_VAULT_PATH Read $OBSIDIAN_VAULT_PATH/_meta/taxonomy.md — this is the canonical tag list Read index.md to understand the wiki's scope The Taxonomy File The canonical tag vocabulary lives at $OBSIDIAN_VAULT_PATH/_meta/taxonomy.md . It defines: Canonical tags — the tags that should be used Aliases — common alternatives that should be mapped to the canonical form Rules — max 5 tags per page, lowercase/hyphenated, prefer broad over narrow Migration guide — specific renames for known inconsistencies Always read this file before tagging. It's the source of truth. Reserved System Tags visibility/ is a reserved tag group with special rules. These tags are not domain or type tags and are managed separately from the taxonomy vocabulary: Tag Purpose visibility/public Explicitly public — shown in all modes (same as no tag) visibility/internal Team-only — excluded in filtered query/export mode visibility/pii Sensitive data — excluded in filtered query/export mode Rules for visibility/ tags: They do not count toward the 5-tag limit Only one visibility/ tag per page Omit entirely when content is clearly public — no tag needed Never add visibility/internal just because content is technical; use it only for genuinely team-restricted knowledge When running a tag audit, report visibility/ tag usage separately — do not flag them as unknown or non-canonical When normalizing tags, leave visibility/ tags untouched — they are not subject to alias mapping. Mode 1: Tag Audit When the user wants to see the current state of tags: Step 1: Scan all pages Glob: $VAULT_PATH/*/.md (excluding _archives/, .obsidian/, _meta/) Extract: tags field from YAML frontmatter Step 2: Build a tag frequency table For each tag found, count how many pages use it. Flag: Unknown tags — not in the taxonomy's canonical list Alias tags — using an alias instead of the canonical form (e.g., nextjs instead of react ) Over-tagged pages — pages with more than 5 tags Untagged pages — pages with no tags or empty tags field Step 3: Report
Tag Audit Report
Summary
Total unique tags: 47
Canonical tags used: 32
Non-canonical tags found: 15
Pages over tag limit (5): 3
Untagged pages: 2
Non-Canonical Tags Found | Current Tag | → Canonical | Pages Affected | |
|
|
|
|
nextjs
|
react
|
4
|
|
next-js
|
react
|
2
|
|
robotics
|
ml
|
1
|
|
windows98
|
retro
|
3
|
Unknown Tags (not in taxonomy) | Tag | Pages | Recommendation | |
|
|
|
|
flutter
|
1
|
Add to taxonomy under Frameworks
|
|
kubernetes
|
2
|
Add to taxonomy under DevOps
|
Over-Tagged Pages | Page | Tag Count | Tags | |
|
|
|
|
entities/jane-doe.md
|
8
|
ai, ml, founder, ...
|
Mode 2: Tag Normalization
When the user wants to fix the tags:
Step 1: Run audit (above)
Step 2: Apply fixes
For each page with non-canonical tags:
Read the page
Replace alias tags with their canonical form from the taxonomy
If page has > 5 tags, suggest which to drop (keep the most specific/relevant ones)
Write the updated frontmatter
Example:
Before
tags : [ nextjs , ai , ml - engineer , windows98 , creative - coding , game , 8 - bit , portfolio ]
After
tags : [ react , ai , ml , retro , generative - art ] Step 3: Handle unknowns For tags that aren't in the taxonomy and aren't aliases: If the tag is used on 2+ pages, suggest adding it to the taxonomy If the tag is used on 1 page, suggest replacing it with the closest canonical tag Ask the user before making changes to unknown tags Step 4: Update taxonomy If new canonical tags were agreed upon, append them to _meta/taxonomy.md in the correct section. Mode 3: Tagging a New Page When you're creating a wiki page and need to choose tags: Read _meta/taxonomy.md Select up to 5 tags that best describe the page: 1-2 domain tags (what subject area) 1 type tag (what kind of thing) 0-1 project tags (if project-specific) 0-1 additional descriptive tags Use only canonical tags — never aliases If no existing tag fits, check if it's worth adding to the taxonomy Mode 4: Adding a New Tag When the user wants to add a tag to the vocabulary: Check if an existing tag already covers the concept (suggest it if so) If genuinely new, determine which section it belongs in (Domain, Type, Project) Add it to _meta/taxonomy.md with: The canonical tag name What it's used for Any aliases to redirect After Any Tag Operation Append to log.md : - [TIMESTAMP] TAG_AUDIT tags_normalized=N unknown_tags=M pages_modified=P Or for normalization: - [TIMESTAMP] TAG_NORMALIZE tags_renamed=N pages_modified=M new_tags_added=P