vault-orphans

v2026.09.24

Triage orphaned notes (zero in/out wikilinks) in an Obsidian vault. Use when finding orphans, linking them into a MOC, or reconnecting Zettelkasten notes.

GitHub
安装命令
npx skhub add laurigates/vault-orphans
Markdown
SKILL.md

Orphan Triage

When to Use This Skill

Use this skill when...Use the alternative instead when...
Triaging orphan notes (zero incoming, zero outgoing wikilinks) for archive vs. reconnectBuilding a new MOC hub the orphans should link into — use vault-mocs
Distinguishing expected orphans (inbox, daily notes) from meaningful onesDiscovering the orphan list itself via the running CLI — use search-discovery
Suggesting archival paths for stale isolated Zettelkasten notesClassifying or consolidating work-namespace redirect stubs — use vault-stubs

An "orphan" is a note with no incoming wikilinks AND no outgoing wikilinks — disconnected from the knowledge graph. Some orphans are expected; others are the most productive places to add structure.

Classes of Orphan

ClassWhereTreat as
Inbox itemsInbox/*.mdExpected; process via /process-inbox
Daily notesNotes/YYYY-MM-DD.md, work/notes/…Expected; they link out but rarely in
Standalone referencesZettelkasten/*.md with 0↔0Meaningful — add linkage
Kanban board notesKanban/*.mdUsually acceptable; boards are self-contained
Archive / logsunder Archive/ subfoldersExpected; stale by design

The vault-agent graph analyzer classifies each automatically.

Offline Fallback (App Closed)

The detection methodology above is unchanged — only the data source changes when Obsidian (and its obsidian CLI / live link index) is closed. The obsidian CLI and vault-agent analyzers are the live-index path; parsing the .md corpus directly with Glob/Grep is the deterministic headless default, and for batch/scheduled audits it is often the better choice (reproducible, free of app/index state). vault-frontmatter already operates this way.

Parse the corpus directly:

  • Frontmatter — read each note's YAML block between the leading --- fences; extract tags, aliases, context. See vault-frontmatter for YAML-block mechanics.
  • Wikilinks — match [[Target]], [[Target|Alias]], [[Target#Heading]], [[folder/Target]], and ![[embed]]. Resolve each target to a note by basename, then relative path, then alias (from frontmatter), all case-insensitive. Resolve ![[embed]] against attachments as well as notes — the attachment folder is per-vault configurable, so read it from .obsidian/app.json (attachmentFolderPath) and fall back to the vault root / Files/ only when that key is unset.

Build the link graph from the resolved wikilinks: a note is an orphan when no resolved link targets it (zero incoming) and it emits no link that resolves (zero outgoing). The class table above (Inbox / daily / Archive) is path-derived and works identically offline.

Triage Workflow

For each meaningful orphan:

  1. Read the note — is the content still relevant, or is this old/dead content?
  2. Identify its primary category — by tag (e.g., 🛠️/neovim → Neovim MOC) or by title.
  3. Pick ONE action:
    • Link from a MOC — add [[Note]] to the appropriate MOC under the right section
    • Add an inbound link from a closely related note
    • Archive — move to an Archive/ subfolder if no longer useful
    • Delete — only if empty or entirely superseded

Never Do

  • Don't add dummy links like "See also: [[Random]]" just to take the note off the orphan list. That's link pollution.
  • Don't create a new MOC just to absorb one orphan — see vault-mocs for thresholds.
  • Don't assume empty = orphan — some orphans have substantive content that simply wasn't linked.

Linking Heuristics

When adding a note to a MOC, match on:

  1. Primary tag category — a note tagged 🛠️/neovim belongs in the Neovim MOC.
  2. Content topic — read the first paragraph; pick the MOC that covers that subject.
  3. Existing cluster — if notes A, B, C all link to each other but none link from a MOC, add the whole cluster to the MOC under one section heading.

MOC Section Placement

MOCs typically have sections like ## Core Concepts, ## Tools, ## Specific Configurations. Pick the most specific section that fits; create a new ## Something section only if 3+ notes fall under the same new heading.

Batch Pattern

Never modify 100+ MOC links in one commit — that's unreviewable. Use one commit per MOC:

feat(mocs): link 12 orphaned CLI tool notes into new CLI Tools MOC

Safety

  • If a note is substantive and the user's writing style suggests it was important, lean toward linking rather than deleting.
  • If tags are contradictory or missing, link to a broader MOC rather than guessing a specific one.
  • Preserve any existing heading structure in the MOC when inserting links.

Related Skills

  • vault-mocs — MOC conventions and when to create a new MOC
  • vault-wikilinks — link syntax and safe-rewrite rules
  • search-discovery — find-by-tag queries via Obsidian CLI
发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

Sep 24, 2026

分类

未分类

许可证

MIT

源路径

obsidian-plugin/skills/vault-orphans

默认分支

main

最新提交

1668324

Tree SHA

b2d4cc3