check-links
The check-links skill scans an Obsidian vault for broken wiki-links by extracting all `[[link]]` patterns from markdown files, stripping anchors and aliases to identify unique targets, then verifying each target file exists using glob patterns. Use this read-only tool periodically to detect link rot and identify which files contain references to non-existent notes, with optional suggestions for similarly-named files as potential corrections.
git clone --depth 1 https://github.com/ballred/obsidian-claude-pkm /tmp/check-links && cp -r /tmp/check-links/vault-template/.claude/skills/check-links ~/.claude/skills/check-linksSKILL.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 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:
```markdown
## 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 contentAnalyze alignment between daily activities and long-term goals. Identify gaps, over/under-investment, and suggest rebalancing. Use for goal audits and priority checks.
Process inbox items using GTD principles. Categorize, clarify, and organize captured notes into actionable items. Use for inbox zero and capture processing.
Organize and restructure vault notes. Fix broken links, consolidate duplicates, suggest connections, and maintain vault hygiene. Use when managing vault organization or cleaning up notes.
Facilitate comprehensive weekly review process. Analyze past week's daily notes, calculate goal progress, and help plan next week. Use for Sunday/Monday weekly reviews.
Scaffold the PKM system onto an existing Obsidian vault. Scans your vault structure, maps folders interactively, and generates configuration — no template required.
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.
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.
Monthly review and planning. Roll up weekly reviews, check quarterly milestones, set next month's focus. Use at end of month or start of new month.