Skip to content
Productivity
Skill

/check-links

Find broken wiki-links in the vault. Read-only analysis — scans for [[links]] and verifies target files exist. No writes, no dependencies.

From plugin
obsidian-claude-pkm
1.9k13 skills4 agents

Claude Code

$ npx -y skills add ballred/obsidian-claude-pkm --skill check-links --agent claude-code

SKILL.md

check-links.SKILL.md
name: check-links
description: Find broken wiki-links in the vault. Read-only analysis — scans for [[links]] and verifies target files exist. No writes, no dependencies.
allowed-tools: Grep, Glob, Read
user-invocable: true

Check Links Skill

Finds broken `[[wiki-links]]` across your vault by extracting link targets and verifying that each target file exists. Read-only — never modifies files.

Usage

/check-links

Or ask:

  • "Check for broken links in my vault"
  • "Find dead wiki-links"
  • "Are there any broken links?"

How to Execute

Step 1: Extract all wiki-links

Use **Grep** to find all `[[...]]` patterns in markdown files:

Grep:
  pattern: "\\[\\[([^\\]|]+)"
  glob: "*.md"
  output_mode: content
  -n: true

This captures the link target (before any `|` alias). Exclude `.claude/` and `.obsidian/` directories from results.

Step 2: Build unique target list

From the grep results, extract the unique link targets. For each match like `[[My Note]]` or `[[My Note|display text]]`, the target is `My Note`.

Strip:

  • Heading anchors: `[[Note#heading]]` → target is `Note`
  • Block references: `[[Note^block-id]]` → target is `Note`
  • Aliases: `[[Note|alias]]` → target is `Note`

Step 3: Verify each target exists

For each unique target, use **Glob** to check if a matching file exists:

Glob:
  pattern: "**/<target>.md"

A link is **broken** if no file matches. A link is **valid** if at least one file matches.

Step 4: Report results

Group broken links by source file:

## Broken Links Report

### Daily Notes/2024-01-15.md
- [[Projet Alpha]] — no matching file found
- [[Old Goal]] — no matching file found

### Projects/Project Beta.md
- [[Meeting Notes Jan]] — no matching file found

---

**Summary:** 3 broken links across 2 files (out of 45 total links checked)

Step 5: Suggest fixes

For each broken link, try to find a close match:

1. Use **Glob** with a partial pattern: `**/*<partial-target>*.md` 2. If a similar filename exists, suggest it:

   - [[Projet Alpha]] — Did you mean [[Project Alpha]]?

3. If no close match, just report "no matching file found"

Edge Cases

  • **Embedded images** (`![[image.png]]`) — skip these, they reference attachments
  • **External links** (`[text](https://...)`) — skip these, they are not wiki-links
  • **Template placeholders** (`[[{{date}}]]`) — skip anything with `{{` in the target
  • **Empty links** (`[[]]`) — report as malformed, not broken

No Broken Links

If all links are valid:

✅ All wiki-links verified — no broken links found across X files (Y links checked)

Tips

  • Run `/check-links` periodically to catch link rot
  • After renaming files, run this to find links that need updating
  • Combine with `/search` to find notes that reference deleted content
Read more
@ballred
Ships withobsidian-claude-pkm

Not another PKM starter kit. This is an execution system that connects your 3-year vision to what you do today — and holds you accountable with AI. Every layer connects. /daily surfaces your ONE Big Thing from the weekly review. /weekly shows project progress.

1.9k13 skills4 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
1.9k
Star history of ballred/obsidian-claude-pkm on GitHub, a chart by star-history.com

Other skills on obsidian-claude-pkm.

adopt

adopt

Scaffold the PKM system onto an existing Obsidian vault. Scans your vault structure, maps folders interactively, and generates…

daily

daily

Create daily notes and manage morning, midday, and evening routines. Structure daily planning, task review, and end-of-day…

monthly

monthly

Monthly review and planning. Roll up weekly reviews, check quarterly milestones, set next month's focus. Use at end of month or…

onboard

onboard

Interactive vault setup and context loading. On first run, personalizes your vault. On subsequent runs, loads full context. Use…

More skills from other plugins.

i-have-adhd

i-have-adhd

Shape output for a reader with ADHD: lead with the next action, number multi-step work, restate state across turns, suppress…

@ayghri@ayghriInstall Skill
ab-test-analysis

ab-test-analysis

Analyze A/B test results with statistical significance, sample size validation, confidence intervals, and ship/extend/stop…

@phuryn@phurynInstall Skill
distilly

distilly

Set up the owner profile so a personal agent knows who it works for (first-run setup, \"get to know me\"), or distill colleague,…

Questions about check-links.

Which coding agents can use check-links?
check-links installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.