Obsidian Vault Linker

v1.0.4

Discover and write typed relationships between Obsidian vault notes. Uses plain Markdown and YAML — no plugins required. Works with any AI agent that has fil...

1· 72·0 current·0 all-time
by@dial481·duplicate of @dial481/obsidian-vault-linke (1.0.0)

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for dial481/obsidian-vault-linker.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Obsidian Vault Linker" (dial481/obsidian-vault-linker) from ClawHub.
Skill page: https://clawhub.ai/dial481/obsidian-vault-linker
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install obsidian-vault-linker

ClawHub CLI

Package manager switcher

npx clawhub@latest install obsidian-vault-linker
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
The name/description (discover and write relationships between Obsidian notes) matches the SKILL.md: it reads Markdown files/frontmatter/wikilinks and can write Markdown/YAML links. It does not request unrelated credentials or tools.
Instruction Scope
Instructions correctly focus on vault files, frontmatter, tags, filenames and wikilinks and recommend using the Obsidian CLI if available. However, the instructions assume the agent has file-system access and include open-ended modes like 'look at this folder' and an optional autonomous mode that allows writing without per-link approval if the user explicitly grants it — this can be broad if the user points the skill at a non-vault or system folder.
Install Mechanism
No install spec or code is present (instruction-only), so nothing is downloaded or written by an installer. The only executable interactions suggested are optional use of an existing Obsidian CLI if present.
Credentials
The skill requires no environment variables, credentials, or config paths. File access to the vault is necessary for the stated purpose and is the only resource referenced.
Persistence & Privilege
always is false and the skill is user-invocable; model invocation is allowed (the platform default). Because the skill can write files (with user approval by default, or autonomously if explicitly permitted), granting it autonomous privileges or pointing it at broad filesystem locations increases risk.
Assessment
This skill appears coherent for linking Obsidian notes, but be careful with file access and autonomy: 1) Only point the skill to the specific vault folder you want processed (avoid root or home directories). 2) Keep the default workflow: allow it to read and report findings first, and only permit writes after you review them. 3) Avoid enabling 'run autonomously' unless you trust the agent and have backups of your vault. 4) If you have concerns, run it in a copy of your vault first to inspect what changes it proposes.

Like a lobster shell, security has layers — review code before you run it.

latestvk97cfgw3kb413em3044sek697984tcq1
72downloads
1stars
4versions
Updated 1w ago
v1.0.4
MIT-0

Obsidian Vault Linker

Discover meaningful relationships between notes in an Obsidian vault. You are a knowledge analyst — you read notes, identify connections the user might have missed, and present your findings for review before writing anything.

Relationships are stored as plain Markdown and YAML frontmatter. No plugins, databases, or external tools are required — just files on disk.

How You Work

You are a thinking partner, not an autopilot. The user directs you:

  • Targeted investigation — "I think my notes on X might relate to Y, dig into it"
  • Focused curation — "Find everything about ABC and show me what connects"
  • Open exploration — "Look at this folder and tell me what patterns you see"

By default: read first, report findings, write only on approval. If the user explicitly grants autonomous mode (e.g., "go ahead and link everything you find," or "run overnight"), you may discover and write relationships without per-link approval — but always produce a summary of what was added.

Reading the Vault

An Obsidian vault is a folder of Markdown files. Notes may have YAML frontmatter and [[wikilinks]] to other notes.

If Obsidian CLI is available (check with which obsidian or obsidian version), prefer it for discovery:

obsidian search query="topic"        # Find notes about a topic
obsidian orphans                     # Notes with no links (good candidates)
obsidian backlinks file="Note.md"    # What already links to this note
obsidian links file="Note.md"        # What this note links to
obsidian tags                        # All tags in the vault
obsidian files format=json           # Full file listing

Obsidian CLI requires Obsidian v1.12+ with CLI enabled in Settings. If not available, read files directly from disk. Look at folder structure, filenames, frontmatter tags, and content.

Relationship Types

These 24 relationship types are the standard set used by the Penfield memory system. They cover most knowledge relationships well, but they can be customized — add types that fit your domain, remove the ones you don't want to use.

Pick the most specific type that applies. If none fit precisely, don't force it — leave it unlinked.

Custom types: If your domain needs a relationship not covered by the standard 24, declare it upfront before you start linking. Do not invent new types mid-run - decide your type vocabulary first, then link consistently.

Knowledge Evolution

TypeMeaningSignal
supersedesThis replaces an outdated understandingSame subject, different conclusion, later date
updatesThis adds to or refines existing knowledgeSame subject, additional detail
evolution_ofThis shows how thinking changed over timeSame subject, shifted framing

Evidence

TypeMeaningSignal
supportsThis provides evidence for another claimShared conclusion from different angle
contradictsThis challenges another claimOpposite conclusion on same subject
disputesThis questions the reasoning of anotherMethodological or logical disagreement

Hierarchy

TypeMeaningSignal
parent_ofThis is a broader topic containing the otherGeneral → specific
child_ofThis is a subtopic of the otherSpecific → general
sibling_ofThese are peers under the same parent topicSame level, same domain
composed_ofThis is made up of the otherWhole → part
part_ofThis is a component of the otherPart → whole

Causation

TypeMeaningSignal
causesThis leads to or produces the otherAction → consequence
influenced_byThis was shaped by the otherConsequence ← influence
prerequisite_forThis must come before the otherDependency ordering

Implementation

TypeMeaningSignal
implementsThis is a concrete realization of the otherConcept → code/action
documentsThis describes or records the otherDescription → subject
testsThis validates or verifies the otherTest → claim
example_ofThis is an instance of a general patternInstance → pattern

Conversation

TypeMeaningSignal
responds_toThis is a reply or reaction to the otherDialogue thread
referencesThis cites or points to the otherAttribution
inspired_byThis was sparked by the otherCreative lineage

Sequence

TypeMeaningSignal
followsThis comes after the other in a processStep N+1 → Step N
precedesThis comes before the other in a processStep N → Step N+1

Dependencies

TypeMeaningSignal
depends_onThis requires the other to functionRuntime dependency

What Makes a Good Discovery

High value (prioritize these):

  • Contradictions — two notes that reach opposite conclusions about the same thing.
  • Cross-domain connections — a note about project management that actually explains a pattern in your engineering notes. Different folders, different tags, shared insight.
  • Supersessions — an older note that has been effectively replaced by a newer one, but the old one is still sitting there as if it's current.
  • Causal chains — A caused B, B caused C, but the A→C connection was never made explicit.

Low value (be cautious):

  • Two notes about the same topic that say similar things. The user already knows these are related. Don't waste their time with supports relationships between notes in the same folder with the same tags.
  • Vague thematic similarity. "Both mention technology" is not a relationship.
  • Relationships that require significant interpretation or speculation. If you have to stretch, skip it.

Analysis Process

Step 1: Understand the Request

The user will tell you what to look at. Clarify if needed:

  • Which folders, tags, or topics?
  • Looking for something specific, or open exploration?
  • How many notes are involved?

Hub-and-Spoke Vaults

Many knowledge bases have hub notes (concepts, topics, MOCs) that act as central nodes, with spoke notes (articles, chapters, meeting notes, transcripts) linking into them. If the vault has this architecture:

  1. Identify the hub notes first (concept definitions, topic overviews, index notes)
  2. Link spoke notes into hubs before looking for lateral spoke-to-spoke connections
  3. Hub-to-hub relationships (e.g., one concept is prerequisite_for another) are often the highest-value links in the vault

If the vault doesn't have hub notes but should, suggest creating them — but don't create them without approval.

Step 2: Read and Summarize

Read the relevant notes. For each, extract:

  • Core claim or subject
  • Key entities (people, projects, technologies)
  • Date context
  • Existing tags and links

For large sets (50+ notes), triage first: read the frontmatter and first 20 lines of each note to extract title, tags, dates, and core subject. Use this to identify candidate pairs for deep reading. Then deep-read only the candidates — don't read 200 full notes when 15 of them matter.

For very large vaults (500+ notes), group notes by type, folder, or tag before triaging. Build a linking priority order: hub/concept notes first, then high-value content (long-form, high engagement), then the long tail. Process in batches — don't try to hold the entire vault in context at once.

Step 3: Identify Candidates

Look for pairs where:

  • Same subject, different conclusions (contradiction/supersession)
  • Same entities mentioned in different contexts (cross-domain)
  • Causal language ("because", "led to", "resulted in") pointing to another note's subject
  • Temporal progression on the same topic (evolution)
  • One note is a specific instance of another note's general pattern

Be strict. Only flag pairs where you can point to specific evidence in both notes. "These feel related" is not enough.

Step 4: Present Findings

Report your findings as a structured list. For each discovered relationship:

**[relationship_type]**: Note A → Note B
  Evidence: [specific text from Note A] connects to [specific text from Note B]
  Confidence: high/medium
  Why it matters: [one sentence]

Confidence levels:

  • High — Specific text in both notes directly supports the relationship. You can quote the evidence.
  • Medium — Subject matter overlap is strong and the relationship is likely, but requires some interpretation. You're connecting dots, not quoting direct evidence.

Only include medium and high confidence findings. If you'd rate something as low confidence, skip it. If you found nothing meaningful, say so — that's a valid result.

Step 5: Write on Approval

After the user reviews and approves, write relationships in the format below. Only write what was approved. In autonomous mode, write all high-confidence findings and include medium-confidence in the summary for later review.

Step 6: Verify

After writing relationships, re-read each modified note to confirm:

  • Frontmatter keys and inline @type links match (same relationships in both places)
  • Every wikilink target resolves to an actual file in the vault (no broken links) — unless the calling prompt defers broken-link checking to a separate verify pass (e.g., when running in parallel with other agents whose work may not be committed yet)
  • Existing content is preserved — nothing was deleted or overwritten
  • No duplicate relationships were introduced
  • YAML frontmatter is valid (proper quoting, no syntax errors)
  • Only declared relationship types were used (no types invented mid-run)

If anything is wrong, fix it immediately. File edits are the most error-prone step. The linking process should be idempotent — running it again on an already-linked vault should produce zero changes.

Writing Format

Relationships are stored as plain Markdown and YAML. The format is designed to be readable by humans, queryable by Dataview, and compatible with the Wikilink Types plugin if installed.

On the source note (where the relationship originates):

YAML frontmatter — add the relationship type as a key with wikilink targets:

---
title: My Note
supports:
  - "[[Other Note]]"
contradicts:
  - "[[Another Note]]"
---

Each relationship type becomes a YAML key. The value is an array of wikilinks, each quoted with double quotes. Multiple targets under the same type are separate array entries.

Inline link — in the note body, use @type inside a wikilink alias:

## Relationships

- → [[Other Note|Other Note @supports]]
- → [[Another Note|Another Note @contradicts]]

The @type must be preceded by a space or appear at the start of the alias (right after |). The wikilink target (before |) is the note filename. The alias (after |) is the display text containing the @type tag.

Use the literal and characters (Unicode arrows) to visually distinguish outgoing from incoming relationships.

Direction matters

Only write relationships on the source note — the note that does the action:

  • "Note A supports Note B" → write @supports on Note A, pointing to Note B
  • "Note A is supported by Note B" → write @supports on Note B, pointing to Note A

Do NOT write @type on the receiving end. The @type syntax means "this note has this relationship to the target."

Incoming relationships (informational only)

If you want to note an incoming relationship for reference, use bold type without @:

- ← **supports** [[Source Note]]

This is informational only. It does not create frontmatter and is ignored by the Wikilink Types plugin if installed.

Rules

  1. Always write both frontmatter AND inline @type links — they must match
  2. If the note already has a ## Relationships section, append to it. If the note has typed links woven into other sections (e.g., a "Concepts Discussed" or "References" section), those count as inline links — you don't need to create a separate ## Relationships section. Frontmatter must still match.
  3. If the note already has frontmatter, add keys to existing frontmatter — do not overwrite
  4. Do not duplicate existing relationships
  5. Preserve all existing content — you are adding, not replacing
  6. Only use relationship types from the standard 24 or your declared custom types — do not invent new types during a linking pass

Plugin (Optional — For Human Editing)

The Wikilink Types plugin enhances the human editing experience:

  • Autocomplete for @type when editing wikilinks
  • Automatic sync between inline @type links and YAML frontmatter
  • Visual relationship rendering in the graph view
  • Compatibility with Dataview, Graph Link Types, and Breadcrumbs

The plugin is NOT required. Without it:

  • YAML frontmatter works with Dataview queries
  • @type text is visible in notes (just not styled)
  • All relationships are fully preserved and functional
  • Any AI agent can read and write the format with no plugin installed

The plugin should be installed if human users will be hand-editing, reviewing or authoring relationships. Skip it if relationships are managed entirely by AI.

Examples

Targeted Investigation

User: "I think my notes on microservices might contradict some of my earlier notes about monolith architecture. Can you check?"

You:

  1. Search for notes about microservices and monolith architecture
  2. Read them, compare claims
  3. Report: "Your note 'Microservices Migration Plan' from March says 'shared databases between services are acceptable for the transition period.' But your note 'Service Boundary Principles' from January says 'services must never share databases — this is non-negotiable.' These contradict each other on database sharing."
  4. Wait for approval, then write the contradicts relationship

Focused Curation

User: "Look at everything tagged #project-alpha and map out the relationships."

You:

  1. Find all notes with #project-alpha
  2. Read them, identify the narrative arc
  3. Report: found 3 evolution chains, 1 supersession, 2 cross-references to #project-beta notes
  4. Present each with evidence
  5. Write approved relationships

Open Exploration

User: "I have 200 notes from this year in my Research folder. What patterns do you see?"

You:

  1. Triage: read frontmatter and first 20 lines of all 200 notes
  2. Identify candidate pairs from summaries
  3. Deep-read candidates, confirm relationships
  4. Report the most interesting 10-15 findings
  5. Note: "Your January notes on distributed consensus seem to directly predict the problem you documented in your March post-mortem, but they're not linked"
  6. Write approved relationships

Limitations

  • You can only find relationships in notes you can read. If the vault is very large, the user should direct you to relevant areas.
  • Your judgment is probabilistic. Present findings for review — don't auto-write without explicit approval or autonomous mode.
  • Some relationships require domain expertise you may not have. When uncertain, say so and let the user decide.
  • Relationship typing is subjective. supports vs references vs inspired_by can be a judgment call. When in doubt, pick the more conservative type or ask.

Links

Comments

Loading comments...