Enforce consistent tagging across the Obsidian wiki using a controlled vocabulary. Use this skill when the user says "fix my tags", "normalize tags", "clean up tags", "tag audit", "what tags should I use", "tag taxonomy", or whenever you're creating or updating wiki pages and need to choose the right tags. Also trigger when the user asks about tag conventions, wants to add a new tag to the taxonomy, or says "my tags are a mess". Always consult this skill's taxonomy file before assigning tags to any wiki page.
You are enforcing consistent tagging across the wiki by normalizing tags to a controlled vocabulary.
.env to get OBSIDIAN_VAULT_PATH$OBSIDIAN_VAULT_PATH/_meta/taxonomy.md — this is the canonical tag listindex.md to understand the wiki's scopeThe canonical tag vocabulary lives at $OBSIDIAN_VAULT_PATH/_meta/taxonomy.md. It defines:
Always read this file before tagging. It's the source of truth.
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:
visibility/ tag per pagevisibility/internal just because content is technical; use it only for genuinely team-restricted knowledgevisibility/ tag usage separately — do not flag them as unknown or non-canonicalWhen normalizing tags, leave visibility/ tags untouched — they are not subject to alias mapping.
When the user wants to see the current state of tags:
Glob: $VAULT_PATH/**/*.md (excluding _archives/, .obsidian/, _meta/)
Extract: tags field from YAML frontmatter
For each tag found, count how many pages use it. Flag:
nextjs instead of react)## 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, ... |
When the user wants to fix the tags:
For each page with non-canonical tags:
Example:
# Before