From obsidian
Find and propose missing links for a single target note in the vault-of-markus Obsidian vault. Trigger when the user says "add backlinks", "link this to related notes", "/link-notes", or asks which existing notes a target note should connect to. Always proposes — never edits silently. For a cross-vault pass over many notes at once, use `/weave-notes` instead.
How this skill is triggered — by the user, by Claude, or both
Slash command
/obsidian:link-notesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Surface candidate links between a single target note and the rest of the vault. The vault embraces graph-style connections (no folders, no MOCs going forward — connections come from `[[wikilinks]]`), so good links are load-bearing for the user's workflow.
Surface candidate links between a single target note and the rest of the vault. The vault embraces graph-style connections (no folders, no MOCs going forward — connections come from [[wikilinks]]), so good links are load-bearing for the user's workflow.
These match /weave-notes — same discipline, same exclusions.
Never propose a link from the target to a MOC, or from a MOC to the target. Detect MOCs by:
MOC, Map of Content, Index, or starts with Map - / MoC -.categories: includes MOC, Map, or Index.If unsure whether a candidate is a MOC, ask once and remember the answer.
Meta-files (CLAUDE.md, README.md, AGENTS.md, Home.md, Index.md) are also out of scope as link targets.
A link is justified when the two notes are about the same thing or directly engage with each other's content — not when they happen to share a category or broad topic. "Both about fishing" is grouping, not relationship; drop it.
See /weave-notes for the full justified / not-justified list. When in doubt, drop.
Vault: /Users/markusjohansen/vault-of-markus/. Operate on one target note per invocation. Other vaults are out of scope.
Read the target note. Extract:
.md)aliases from frontmatter (if any)categories from frontmatterFind candidate matches.
ls /Users/markusjohansen/vault-of-markus/*.md | xargs -n1 basename | sed 's/\.md$//'grep -inwF "<candidate>" /Users/markusjohansen/vault-of-markus/<target>.md
aliases: lists of other notes.vault-librarian agent rather than grepping yourself; it can read many files without polluting this context.Filter.
[[X]] already appears).Apply the two hard rules to every candidate. Drop MOCs. Drop pairs that fail the direct-relationship test.
Propose. Show each surviving candidate with the line number where it occurs in the target. Format:
- [[Candidate Note]] (line 42: "...some phrase mentioning Candidate Note...")
Why: <one-line direct relationship>
Placement: inline at line 42 / footnote at end of note
For placement, decide one of:
Inline link when the prose already names the concept naturally — substitute [[Wikilink]] into the existing sentence.
Footnote link when the relationship is real but prose doesn't accommodate it inline. Use a numbered markdown footnote at the end of the note:
...the approach I've been refining since 2024.[^1]
[^1]: Related: [[Earlier note on the same approach]] — captures the original framing.
Footnote rules: numbered ([^1], [^2]), continue existing numbering if the note already has footnotes, prefix the text with Related: / See also: / Cf. / Contrast:, one footnote per related note.
Default to inline when it fits; fall back to footnote rather than forcing a grafted-on sentence.
Do not add a ## Related / ## See also section unless the user explicitly asks.
Apply with Edit (one edit at a time, never replace_all for prose).
If asked "what should link to this note":
categories items if specific).grep -lnwiF "<term>" /Users/markusjohansen/vault-of-markus/*.md | grep -v "<target>.md"
## Related / ## See also section by default. Inline or footnote only.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub markusjohansen/mj-plugins --plugin obsidian