| name | cross-linker |
| description | Use when the user wants to find and insert missing wikilinks across vault notes. Triggers on "cross-link", "find missing links", "weave links", "unlinked mentions", "add wikilinks", or "link notes together". |
Cross-Linker
Discover unlinked mentions of vault concepts and insert [[wikilinks]]. Complements link-audit (which finds broken/orphan links) by finding links that should exist but don't.
Workflow
Phase 1 — Build Page Registry
- Call
obsidian_list_notes on the target scope (default: Engineering/).
- For each note, call
obsidian_read_note and extract from frontmatter:
- Title (from
# heading or filename)
- Aliases (from
aliases: frontmatter field, if present)
- Type (pattern, trap, decision, concept)
- Build a registry:
{ title, aliases[], path, type } for each note.
For large scopes (>50 notes), batch reads and process incrementally.
Phase 2 — Scan for Unlinked Mentions
For each note in scope:
- Call
obsidian_read_note to get the full body text.
- For each other page in the registry, check if the page's title or any alias appears in the body text without being wrapped in
[[...]].
- Skip matches inside:
- Existing wikilinks
[[...]]
- Code blocks (fenced or inline)
- Frontmatter
- The note's own title/heading
- Record each match:
{ source_note, target_note, matched_text, line_context, confidence }
Phase 3 — Score and Rank
Assign confidence to each proposed link:
- High — exact title match (case-insensitive), target is a Pattern/Trap/Decision note
- Medium — alias match, or title match in a less structured note
- Low — partial match or only semantically related (use
obsidian_rag_query to verify)
Sort findings: high confidence first, grouped by source note.
Phase 4 — Present Findings
Show the user a report:
## Cross-Link Report for: Engineering/
### High Confidence (auto-apply)
- Engineering/Patterns/table-driven-tests.md
Line 12: "table driven tests" → [[Table-Driven Tests]]
### Medium Confidence (confirm each)
- Engineering/Traps/mock-drift.md
Line 8: "interface injection" → [[Interface Injection]]
### Low Confidence (review)
- working/appiary/knowledge/auth.md
Line 23: "token" → possibly [[Token Rotation]] ?
### Summary
- X high-confidence links ready to apply
- Y medium-confidence links for review
- Z low-confidence suggestions
Phase 5 — Apply Links
- High confidence: Apply automatically using
obsidian_replace_in_note, replacing the first unlinked mention with [[Target Title]] or [[path/to/note|display text]].
- Medium confidence: Apply one at a time, asking user to confirm each.
- Low confidence: List for reference only — don't auto-apply.
Only link the first unlinked mention of each target per source note. Repeated mentions stay as plain text (standard wiki convention).
Arguments
- Optional scope:
/cross-linker Engineering/Patterns/ (default: Engineering/)
- Optional depth:
/cross-linker --deep to include working/ and reference/ scopes
Tips
- Run on a narrow scope first (
Engineering/Patterns/) to calibrate before going vault-wide
- If a note has many false positives, it may need
aliases: in frontmatter to disambiguate
- Short titles (1-2 words like "Testing" or "Auth") generate noise — prefer linking specific concept names
- After running, consider
/link-audit to verify no broken links were introduced