Agent 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.
Install this agent skill to your Project
npx add-skill https://github.com/ballred/obsidian-claude-pkm/tree/main/vault-template/.claude/skills/check-links
SKILL.md
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 isNote - Block references:
[[Note^block-id]]→ target isNote - Aliases:
[[Note|alias]]→ target isNote
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:
- Use Glob with a partial pattern:
**/*<partial-target>*.md - If a similar filename exists, suggest it:
- [[Projet Alpha]] — Did you mean [[Project Alpha]]? - 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-linksperiodically to catch link rot - After renaming files, run this to find links that need updating
- Combine with
/searchto find notes that reference deleted content
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
weekly
Facilitate weekly review process with reflection, goal alignment, and planning. Create review notes, analyze past week, plan next week. Use on Sundays or whenever doing weekly planning.
project
Create, track, and archive projects linked to goals. The bridge between goals and daily tasks. Use for project creation, status dashboards, and archiving completed work.
goal-tracking
Track progress toward 3-year, yearly, monthly, and weekly goals. Calculate completion percentages, surface stalled goals, connect daily tasks to objectives. Use for goal reviews and progress tracking.
review
Smart review router. Detects context (morning, Sunday, end of month) and launches the appropriate review workflow. Use anytime for the right review at the right time.
daily
Create daily notes and manage morning, midday, and evening routines. Structure daily planning, task review, and end-of-day reflection. Use for daily productivity routines or when asked to create today's note.
search
Search vault content by keyword using Grep. Zero dependencies — works in any vault without indexes or plugins. Groups results by directory for easy scanning.
Didn't find tool you were looking for?