From obsidian
Enrich ingested content in an Obsidian knowledge base vault by leveraging Obsidian CLI commands for backlinks, tags, search, properties, and file operations. Use when the user asks to connect notes, cross-reference content, audit vault quality, fix metadata, find orphans, or run maintenance on their knowledge base.
How this skill is triggered — by the user, by Claude, or both
Slash command
/obsidian:kb-enrichThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Enrich ingested content in an Obsidian knowledge base vault by discovering and creating connections through the vault's own index.
Enrich ingested content in an Obsidian knowledge base vault by discovering and creating connections through the vault's own index.
Always use Obsidian CLI commands as the primary discovery mechanism. Never guess at relationships — discover them through the vault's own index.
Use these CLI commands to understand the vault state before making changes:
# Find what already links TO a note (incoming references)
obsidian backlinks file="Note Name"
# Find notes matching a concept (keyword search across vault)
obsidian search query="consensus" limit=20
# List all tags in use with frequency
obsidian tags sort=count counts
# Read a specific note's full content
obsidian read file="Note Name"
# Read a note at a specific path
obsidian read path="01-books/DDIA/DDIA - Chapter 9.md"
# List files in a folder
obsidian files folder="01-books/"
# List all properties for a note
obsidian properties file="Note Name"
# Read a specific property value
obsidian property:read name="tags" file="Note Name"
# Find unresolved links (wikilinks pointing to non-existent notes)
obsidian unresolved
# Find notes with no incoming links
obsidian orphans
# Find notes with no outgoing links
obsidian deadends
# List outgoing links from a note
obsidian links file="Note Name"
# Search with matching line context
obsidian search:context query="consensus" limit=10
Use these to make changes:
# Set or update a frontmatter property
obsidian property:set name="tags" value="distributed-systems, consensus" file="Note Name"
# Append content to an existing note
obsidian append file="Note Name" content="## See also\n- [[Related Note]]"
# Create a new note
obsidian create name="New Note" content="---\ntitle: New Note\n---\n# Content"
Goal: Find broken, incomplete, or inconsistent content.
Steps:
obsidian unresolved to find broken wikilinksobsidian tags sort=count counts to find tag inconsistenciesobsidian files folder="01-books/" then for each file run obsidian properties file="<note>" to check frontmatter completeness — verify required properties: title, type, tags, date-addedobsidian property:setGoal: Connect one note to all relevant notes in the vault.
Steps:
obsidian read file="Target Note" — understand the contentobsidian search query="<concept>" limit=10obsidian backlinks file="Target Note" — see what already links hereobsidian read file="<result>" to confirm relevanceobsidian append file="Target Note" content="\n- [[Result Note]] — <one-line reason>" obsidian append file="<Result Note>" content="\n- [[Target Note]] — <one-line reason>" Important: Before appending links, read the target note to check if a "See also", "Cross-references", or "Related" section already exists. Append to that section. If none exists, create one with ## See also heading.
Goal: Connect all notes in a folder (e.g., all chapters of a book) to each other and to the rest of the vault.
Steps:
obsidian files folder="<folder>/" — list all notes in the folderobsidian backlinks on each to verify bidirectional links were createdGoal: Bridge the gap between theory (books/articles) and practice (personal notes).
Steps:
obsidian files folder="02-notes/" — list personal notesobsidian read file="<note>" — extract key conceptsobsidian search query="<concept>" — find matching book chapters and articlesobsidian backlinks file="<note>" — check what already links here## Source material:
- [[Book Chapter]] — covers the theory behind this## Applied in:
- [[Personal Note]] — practical implementation## Applied in (pointing to practice)## Source material (pointing to theory)Goal: Ensure all notes on a shared concept are fully interconnected.
Steps:
obsidian search query="consensus" limit=30 — find all notes mentioning itobsidian search query="raft" limit=10 — search synonyms and subtopicsobsidian search query="paxos" limit=10 — continue with related termsobsidian backlinks file="<note>" — check existing connectionsobsidian append bidirectional links for missing connectionsGoal: Add queryable properties that make future searches more precise.
Steps:
obsidian files folder="01-books/" — iterate book chaptersobsidian read and analyze content to determine:
perspective: theoretical | practical | mixedquestions: 2-4 questions this note answers, written as a practitioner would askobsidian property:set:
obsidian property:set name="perspective" value="theoretical" file="Note Name"
questions, read the note's frontmatter, modify it, and rewrite — property:set with type=list may not handle multi-value lists predictably. Verify behavior first or instruct the user to add list properties manually.Goal: Eliminate disconnected notes that can't be found through graph traversal.
Steps:
obsidian orphans — find notes with no incoming linksobsidian deadends — find notes with no outgoing linksobsidian search for related notes by key conceptsGoal: Find notes that discuss the same concept differently and surface the disagreement.
Steps:
obsidian read both conflicting notesobsidian append a callout to the relevant notes:
> [!conflict] Conflicting with [[Other Note]]
> This note says X, while [[Other Note]] says Y. The difference may be because...
obsidian backlinks to verify.## See also — general cross-references## Cross-references — links across different books## Source material — on personal notes, pointing to theory## Applied in — on book/article notes, pointing to practice## Related chapters — within-book links## Related articles — book chapters linking to articles## Deeper reading — articles linking to book chaptersobsidian read a note before appending to check if the target section exists and if the link is already there. Never create duplicate links.create and append don't open the file unless you pass the open or newtab flag — no special flag needed for batch operations.obsidian backlinks on the modified notes to confirm the links registered correctly.| Mistake | Fix |
|---|---|
| Adding links without checking existing ones | Always obsidian read first to check for duplicate links and existing sections |
| One-directional linking | Every link must be bidirectional — add A→B and B→A |
| Inventing tags not in the taxonomy | Only use tags from CLAUDE.md taxonomy; flag new ones for user approval |
| Enriching entire vault at once | Work incrementally — folder by folder, book by book |
| Guessing at relationships | Use obsidian search and obsidian backlinks to discover — never assume |
| Creating MOCs without asking | Suggest MOC creation when cluster has 5+ notes, but confirm with user first |
| Manually checking each note for orphans | Use obsidian orphans and obsidian deadends to find disconnected notes efficiently |
npx claudepluginhub ozthemagician/obsidian-skills --plugin obsidianGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Implements work from a spec or tickets using TDD at agreed seams, with regular typechecking and test runs, followed by code review.