Obsidian Wiki Links

VerifiedSafe

Format and validate Obsidian wiki links according to vault conventions, verifying file and section existence before creating links.

Sby Skills Guide Bot
DocumentationIntermediate
8/6/2026
Claude Code
#obsidian#wiki-links#markdown#link-validation#knowledge-base

Recommended for

Automated summary

Formats and validates Obsidian wiki links (file, section, and folder) by verifying that targets exist before creating or fixing a link.

Strengths

  • Enforces concrete conventions: full filename with date prefix, folder prefix, and character-exact header text for section links
  • Always checks file and section existence before linking instead of guessing
  • Includes a procedure for locating and editing broken links
  • Handles quoted links inside YAML properties such as sources, links, and attendees

Limitations

  • Tied to one vault layout (Journal, Articles, Roundup, Topics, People folders) and a mandatory date-prefix naming scheme
  • Does not cover vault-wide automated validation, alias links, or block references
  • Relies on actually reading target files, which can be expensive for large notes
When to use it

Use it when writing or auditing Markdown notes in an Obsidian vault and you need to create, verify, or repair wiki links.

When not to use it

Skip it if your vault does not use date-prefixed filenames or this folder structure, or for Markdown outside Obsidian.

Security analysis

Safe
Quality score78/100

The skill is pure documentation about Obsidian wiki-link formatting conventions. Its declared tools (Read, Glob, Grep, Edit) are used only to search the vault, verify target files/headers, and fix broken links in markdown. There are no destructive commands, no exfiltration of secrets, no obfuscated payloads, and no attempts to bypass safety controls. The only potentially powerful capability is Edit, which is appropriately constrained to link corrections.

Findings
  • •Edit tool could modify files, but usage is scoped to correcting broken wiki links in markdown—legitimate and non-destructive
  • •No network, shell, or credential handling; all tools are read/search/edit only
How this analysis is made

Examples

Link to a journal entry section
Add a link in this note to the 'PKM System Maintenance' section of my 2025-10-31 journal entry — check the header exists first.
Fix broken links
Scan this note for broken Obsidian wiki links, find the correct files in the vault, and fix each link.
Frontmatter source links
Fill the sources property in this note's frontmatter with properly quoted wiki links to the original articles I referenced, verifying each file exists.

name: obsidian-links description: Format and validate Obsidian wiki links with proper filename, section, and folder conventions. Verify links exist before creation and fix broken links. Use when creating or checking wiki links in markdown files. allowed-tools:

  • Read
  • Glob
  • Grep
  • Edit license: MIT

Obsidian Wiki Links

Format, validate, and fix wiki links according to vault conventions.

When to Use This Skill

Activate when you need to:

  • Create wiki links to other vault files
  • Add section links to specific headers
  • Format links in YAML frontmatter properties
  • Verify links point to existing files/sections
  • Find and fix broken links
  • Validate link integrity in documents

Core Link Formatting Rules

1. Complete Filename Format

Always use full filename with date prefix:

✅ CORRECT: [[2025-10-31 Project Notes]]
❌ INCORRECT: [[Project Notes]] (missing date)
❌ INCORRECT: [[2025-10-31]] (missing title)

2. Folder Path Conventions

Include folder prefix for clarity:

✅ CORRECT: [[Journal/2025-10-31]]
✅ CORRECT: [[Articles/2025-10-31 Perennial Seller]]
✅ CORRECT: [[Roundup/2025-10-31]]

Rule: Use consistent folder prefixes for clarity and navigation.

3. Section Links

Use exact header text, character-for-character:

Source file header:
## PKM System Maintenance

✅ CORRECT:
[[Journal/2025-10-31#PKM System Maintenance]]

❌ INCORRECT:
[[Journal/2025-10-31#PKM System]] (truncated)
[[Journal/2025-10-31#pkm-system-maintenance]] (slug format)

Critical: Match characters, punctuation, spacing exactly as written.

4. Link to Sources, Not Indices

Always link to original content, not topic aggregations:

✅ CORRECT: [[Articles/2025-08-15 Skill Development]]
❌ INCORRECT: [[Topics/Career#Skill Development]]

Reason: Maintains source attribution and traceability

5. Properties Link Format

Wrap links in quotes when used in YAML lists:

sources:
  - "[[Journal/2025-10-31]]"
  - "[[Articles/2025-10-31 Title]]"

links:
  - "[[Roundup/2025-10-31]]"

attendees:
  - "[[People/John]]"

Link Validation Principles

1. Search Before Link

ALWAYS verify target exists before creating link:

Process:
1. Search for target file using Glob or Grep
2. Verify file exists
3. If section link, read file and verify header exists
4. Create link with exact filename and header text

❌ NEVER:
- Guess at filenames
- Assume files exist
- Fabricate section headers

2. Verify Section Headers

For section links, read source and match exactly:

Steps:
1. Read target file
2. Search for exact header text
3. Copy character-for-character (including special characters)
4. Create section link

If unsure about exact header:
✅ Link to file only: [[Journal/2025-10-31]]
❌ Don't guess: [[Journal/2025-10-31#Guessed Header]]

3. File Existence Checking

Use appropriate tools to verify files:

For specific file:
- Use Glob with full path pattern: "Journal/2025-10-31.md"
- Or Read the file directly

For finding files by keyword:
- Use Glob with pattern: "Articles/**/*keyword*.md"
- Check Topics directory before linking to topics

4. Fix Broken Links Immediately

When you find broken links, fix them:

Process:
1. Identify broken link
2. Search for correct target file
3. Update link with correct path/filename (use Edit tool)
4. Verify section header if applicable
5. Report fix to user

Complete Workflow

Creating New Links (Format + Validate)

Step 1: Determine Target
- Identify file to link to
- Note folder location
- Note complete filename

Step 2: Verify File Exists
- Use Glob: "**/{filename}.md"
- Or Read file directly
- If not found, search by keyword

Step 3: Verify Section (if needed)
- Read target file
- Search for exact header text
- Copy character-for-character
- If unsure, link to file only

Step 4: Format Link
- Use complete filename: [[YYYY-MM-DD Title]]
- Add folder prefix
- Add section if verified: [[File#Exact Header]]
- Wrap in quotes if in YAML property

Step 5: Create Link
- Link points to existing file
- Section header matches exactly (if used)
- Follows folder prefix conventions

Finding and Fixing Broken Links

Step 1: Detection
- Read document content
- Extract all wiki links
- For each link, verify file exists
- For section links, verify header exists

Step 2: Search for Correct Target
- Use context to determine intent
- Search vault with Glob/Grep
- Verify file exists

Step 3: Fix Link
- Use Edit tool to update broken link
- Replace with correct path/filename
- Verify section header if applicable

Step 4: Report
- Show old link (broken)
- Show new link (fixed)
- Explain reason for fix

Special Cases

Journal/Daily Files

Path: Journal/YYYY-MM-DD.md
Format: [[Journal/YYYY-MM-DD]]

Section links:
- Headers may vary by language
- ALWAYS verify exact text before linking
- If unsure, link to file only

Validation:
1. Check file: Journal/YYYY-MM-DD.md
2. Read file content
3. Search for exact header
4. Use exact match or file-only link

Topic Links

CRITICAL: Search Topics directory BEFORE linking

Validation:
1. Use Glob: "Topics/**/*{keyword}*.md"
2. Find matching topic page
3. Use complete category path

Examples:
- [[Topics/Technology/PKM]]
- [[Topics/Career/Skills]]

❌ NEVER link to non-existent topic pages

Person Names

Simple name: [[John]]
With context: [[People/John]] (if folder exists)

Validation: Verify person file exists before linking

Quality Checklist

Before completing link operations:

Formatting:

  • [ ] All links use complete filenames
  • [ ] Folder prefixes follow conventions
  • [ ] Section headers match exactly (character-for-character)
  • [ ] Links in YAML properties are wrapped in quotes
  • [ ] All links point to sources, not topic indices

Validation:

  • [ ] All target files verified to exist
  • [ ] Section headers verified (not guessed)
  • [ ] Topic links point to existing topic pages
  • [ ] Broken links identified and fixed

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/obsidian-wiki-links-msh3usw1/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/obsidian-wiki-links-msh3usw1' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/obsidian-wiki-links-msh3usw1/download' --output '.skill-downloads/obsidian-wiki-links-msh3usw1/SKILL.md.part' && mv '.skill-downloads/obsidian-wiki-links-msh3usw1/SKILL.md.part' '.skill-downloads/obsidian-wiki-links-msh3usw1/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/obsidian-wiki-links-msh3usw1/SKILL.md' && test -s '.skill-downloads/obsidian-wiki-links-msh3usw1/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/obsidian-links' && cp -R '.skill-downloads/obsidian-wiki-links-msh3usw1' '.claude/skills/obsidian-links'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/obsidian-wiki-links-msh3usw1'

openskills read 'obsidian-wiki-links-msh3usw1'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/obsidian-wiki-links-msh3usw1/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills