From obsidian-wiki
Use when the user asks for a vault health check, mentions "/vault-lint", or asks about orphan pages, broken wikilinks, contradictions between notes, stale claims, or missing backlinks in their Obsidian vault. Trigger on "lint my vault", "check wiki health", "find orphans", or "any broken links in my notes".
How this skill is triggered — by the user, by Claude, or both
Slash command
/obsidian-wiki:vault-lintThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Run a health check over the Obsidian vault at `~/dev/knowledge` and report problems.
Run a health check over the Obsidian vault at ~/dev/knowledge and report problems.
Default mode is report-only — never auto-edit the vault during a lint unless the user explicitly asks for fix mode. The vault is hand-curated and a silent "cleanup" can destroy user work.
The check has five categories. Run each one and collect its findings before reporting. Do not stop at the first finding.
A page is an orphan if no other page in the vault links to it with [[Name]]. Excluded
from orphan detection:
Home.md (the index is expected to have no inbound links)raw/ (sources, not wiki pages).obsidian/ (Obsidian internal)To find orphans: for each .md file in the six category directories, grep the rest of
the vault for the file's basename (without extension) inside [[...]]. Zero hits = orphan.
Case-insensitive match. Handle [[Name]], [[Name|alias]], and [[Name#section]] as
link forms.
For every [[target]] that appears anywhere in the vault, verify a matching file exists
under the six category directories. Match by basename, case-insensitive, with or without
.md suffix. Also check for aliases declared in the target file's frontmatter
(aliases: [...]).
Report broken links grouped by the file that contains them, so the user can open each source file once and fix all its broken links together.
A page is missing frontmatter if it does not start with a --- block containing at
least title: or tags:. The schema in CLAUDE.md defines the required fields. If
CLAUDE.md is not present, treat title and created as the minimum.
Report only. Never auto-add frontmatter — the user chose the current state intentionally.
This is fuzzy and should be flagged as candidates, not verdicts. Look for:
updated: timestamps are very close but whose content disagrees.Report each candidate as a pair of pages plus the specific sentences that appear to conflict. Let the user judge.
A claim is possibly stale if:
updated: frontmatter is more than 6 months old, ANDReport as candidates. Do not edit.
Produce a single markdown report with this structure:
# Vault Lint Report — <YYYY-MM-DD>
## Orphans (N)
- `Gotchas/Example Orphan.md`
- ...
## Broken wikilinks (N, in M files)
- In `Architecture/X.md`:
- `[[Nonexistent Page]]`
- ...
## Missing frontmatter (N)
- `Patterns/Y.md`
## Possible contradictions (N)
- `Gotchas/A.md` vs `Gotchas/B.md`
- A says: "..."
- B says: "..."
## Possibly stale (N)
- `Technologies/Z.md` (updated 2025-08-01, references "Xray v1.8 experimental")
Include counts in each heading so the user can scan the severity at a glance.
After producing the report, append a single entry to ~/dev/knowledge/log.md:
## [YYYY-MM-DD] lint | <N orphans, M broken, K missing frontmatter, L contradictions, P stale>
The log entry is a one-liner. The report itself is printed to the chat, not saved to
log.md.
If the user says "fix the orphans" or "add frontmatter" or similar, enter fix mode for that category only. Fix mode rules:
title, created = file mtime,
updated = today). Do not invent tags.raw/ and .obsidian/. That produces
false-positive broken links and orphans.Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub sureserverman/obsidian-wiki-plugin --plugin obsidian-wiki