obsidian-plugin/skills/vault-mocs/SKILL.md
Map-of-Content (MOC) curation for Obsidian vaults. Use when creating a MOC for a tag, extending with orphans, fixing legacy MOC tags, or analyzing coverage.
npx skillsauth add laurigates/claude-plugins vault-mocsInstall 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... |
|---|---|
| Creating or extending a Map of Content hub for a tag category | Reconnecting individual orphaned notes without building a hub — use vault-orphans |
| Migrating legacy 🗺️ MOC tags to canonical 📝/moc | Renaming or consolidating non-MOC tags across the vault — use vault-tags |
| Auditing MOC coverage and linking orphans into existing hubs | Repairing broken [[...]] references inside an existing MOC — use vault-wikilinks |
A Map of Content (MOC) is a structured hub note that organizes related content via wikilinks. It's the primary navigation surface of a mature Obsidian vault — more useful than tags, more discoverable than search.
---
tags: [📝/moc]
---
# Neovim MOC
Central hub for Neovim configuration, plugins, and workflows.
## Core
- [[Neovim]] — base configuration
- [[Lazy.nvim]] — plugin management
## Plugins
- [[nvim-treesitter]]
- [[Mason LSP]]
## Keybindings and Workflow
- [[Neovim Keybindings]]
- [[Neovim Session Management]]
Rules:
📝/moc — not 🗺️ (legacy), not MOC (flat), not 📝/MOC (wrong case).Zettelkasten/ (personal) or FVH/MOC/ (work).{Subject} MOC.md — suffix, not prefix.## section headings, then bullet-list wikilinks.id: or other legacy frontmatter.| Issue | Fix |
|-------|-----|
| tags: 🗺️ | Rewrite to tags: [📝/moc] |
| tags: [🗺, 📝/moc] | Deduplicate to tags: [📝/moc] |
| MOC in FVH/z/ instead of FVH/MOC/ | Move file |
| Uses [[Kanban/Foo]] path-qualified links | Rewrite to [[Foo]] when basename unique |
For each tag category (🛠️/, 🔌/, 💻/, etc.), the vault-agent mocs.analyze_mocs analyzer reports how many tagged notes are NOT linked from any MOC. High uncovered counts indicate:
Thresholds (heuristic):
If all three hold, create Zettelkasten/{Category} MOC.md:
---
tags: [📝/moc]
---
# {Category} MOC
{One-paragraph framing of the category.}
## {Section}
- [[Note1]]
- [[Note2]]
Pick 2–4 ## sections that reflect natural groupings within the notes — don't force a deep hierarchy.
When the analyzer reports orphaned notes that belong in an existing MOC:
## section (or create a new one if 3+ notes fit a new grouping).Don't add a "See also" or "Random" section as a dumping ground. If a note doesn't fit any section, reconsider whether it belongs in this MOC at all.
📝/moc tag to a note that isn't actually a MOC — it pollutes MOC inventories.vault-wikilinks rewrite patterns).| Action | Commit |
|--------|--------|
| New MOC | feat(mocs): add {Category} MOC covering N notes |
| Fixup tag | fix(mocs): 🗺️ → 📝/moc on FVH MOCs |
| Add orphans | feat(mocs): link 12 notes into Neovim MOC |
| Rewrite path-qualified link | fix(mocs): unqualify [[Kanban/X]] → [[X]] across 6 MOCs |
testing
Verify accumulated bug claims at upstream HEAD and dedup against trackers before filing issues. Use when filing upstream reports from backlogs, audit docs, or git-history findings.
documentation
Gate outward-bound text (upstream issues, docs, PR bodies) through isolated haiku fresh-reader critique before publishing. Use when an artifact must survive a reader with zero project context.
tools
Suggest improvements to SKILL.md content, descriptions, or tool config from eval results. Use when raising pass rates, fixing triggering, or iterating on a skill after evaluation.
tools
deadbranch CLI for stale-branch cleanup — dry-run preview, TUI or non-interactive delete, protects main/develop/WIP. Use when asked to clean up branches, prune branches, or remove stale branches.