From obsidian
Recommend notes in the vault-of-markus Obsidian vault that may not be worth keeping — orphans, abandoned stubs, duplicates, never-revisited captures. Use when the user says "clean up my vault", "/cull-vault", "find notes to delete", or wants a pruning pass. Reports candidates with reasons; the user decides — never deletes anything.
How this skill is triggered — by the user, by Claude, or both
Slash command
/obsidian:cull-vaultThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Identify notes that have likely lost their value: orphans with no graph connections, stubs that haven't grown, duplicates of richer notes, captures that were never returned to. Output is a ranked candidate list with a reason per note. **No deletions.** The user decides note-by-note.
Identify notes that have likely lost their value: orphans with no graph connections, stubs that haven't grown, duplicates of richer notes, captures that were never returned to. Output is a ranked candidate list with a reason per note. No deletions. The user decides note-by-note.
Vault: /Users/markusjohansen/vault-of-markus/. Skip:
Templates/ and .obsidian/CLAUDE.md, README.md, AGENTS.md, Home.md, Index.mdYYYY-MM-DD.md) — they're append-only logs; don't propose deleting themScore each note on the signals below. Multiple signals on the same note → stronger candidate. None of these is conclusive on its own.
Zero inbound [[wikilinks]] from any other note and zero outbound [[wikilinks]] (excluding links inside the abstract callout). Cheap to compute:
# Outbound: count wikilinks outside the abstract block (use the awk shape
# from vault-stub-check.sh to strip frontmatter + callout).
# Inbound: for note title T,
grep -lF "[[T]]" /Users/markusjohansen/vault-of-markus/*.md | wc -l
Account for aliases: a note's aliases: frontmatter list also matches inbound [[Alias]] links.
Body is short (run the same logic as vault-stub-check.sh) and the file hasn't been modified in ≥ 90 days. A note that's been a stub for three months is unlikely to grow.
# mtime check
find /Users/markusjohansen/vault-of-markus -maxdepth 1 -name '*.md' -mtime +90
Another note shares ≥ 3 distinctive keywords with this one and is materially longer or better-developed. Detection is expensive — delegate to the vault-librarian agent for the candidate set, not the main session. Ask the librarian: "Find pairs of notes where one looks like a thinner draft of the other."
Note contains placeholder markers (TODO, TBD, FIXME, ???) and hasn't been modified in ≥ 60 days. The user captured an intention and never returned to it.
The entire body is essentially one URL or one wikilink with no surrounding thought. Either fold the link into a richer note or drop it.
Filenames like Untitled, Untitled 1, New note, test, asdf, xxx. Cheap regex.
ls /Users/markusjohansen/vault-of-markus/*.md, apply exclusions.vault-librarian and ask it to find duplicate or near-duplicate pairs across the vault.## Cull candidates — N notes scanned, M flagged
### Strong candidates (multiple signals)
- [[Note Title]] — orphan + stale stub + abandoned capture
- 18 words, last modified 142 days ago
- "TODO: come back to this" at line 12
- No inbound or outbound links
- [[Other Note]] — orphan + likely duplicate of [[Richer Note]]
- 32 words; [[Richer Note]] (210 words) covers the same topic
- No inbound links
### Single-signal candidates
- [[Note A]] — orphan only (worth keeping if you'll link it later)
- [[Note B]] — scratch-name leftover (`Untitled 3.md`)
- [[Note C]] — single-link bookmark to https://example.com
### Possibly stale, but check first
- [[Note Title]] — last modified 187 days ago, but has 4 inbound links — keep
- [[Note Title]] — stub, but linked from [[Active Project]] — keep, may grow
## Suggested actions
- Delete: <list of strong candidates the skill is confident about — usually scratch names and single-link bookmarks>
- Merge: <duplicate pairs, with merge direction>
- Revisit: <stale stubs that have inbound links — worth filling in, not deleting>
- Leave: anything not above
rm, no Edit, no Write from this skill. The user reviews and either runs the deletions themselves or asks Claude to delete them one by one with explicit names.npx claudepluginhub markusjohansen/mj-plugins --plugin obsidianCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.