adopt
Scaffold the PKM system onto an existing Obsidian vault. Scans your vault structure, maps folders interactively, and generates…
Find broken wiki-links in the vault. Read-only analysis — scans for [[links]] and verifies target files exist. No writes, no dependencies.
Claude Code
$ npx -y skills add ballred/obsidian-claude-pkm --skill check-links --agent claude-code
Codex
$ npx skills add ballred/obsidian-claude-pkm --skill check-links -a codex -y
Cursor
$ npx skills add ballred/obsidian-claude-pkm --skill check-links -a cursor -y
Gemini CLI
$ npx skills add ballred/obsidian-claude-pkm --skill check-links -a gemini-cli -y
GitHub Copilot
$ npx skills add ballred/obsidian-claude-pkm --skill check-links -a github-copilot -y
OpenCode
$ npx skills add ballred/obsidian-claude-pkm --skill check-links -a opencode -y
Windsurf
$ npx skills add ballred/obsidian-claude-pkm --skill check-links -a windsurf -y
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
Finds broken `[[wiki-links]]` across your vault by extracting link targets and verifying that each target file exists. Read-only — never modifies files.
/check-links
Or ask:
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.
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:
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.
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)
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"
If all links are valid:
✅ All wiki-links verified — no broken links found across X files (Y links checked)
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.
Scaffold the PKM system onto an existing Obsidian vault. Scans your vault structure, maps folders interactively, and generates…
Create daily notes and manage morning, midday, and evening routines. Structure daily planning, task review, and end-of-day…
Track progress toward 3-year, yearly, monthly, and weekly goals. Calculate completion percentages, surface stalled goals, connect…
Monthly review and planning. Roll up weekly reviews, check quarterly milestones, set next month's focus. Use at end of month or…
Read and write Obsidian vault files, manage wiki-links, process markdown with YAML frontmatter. Use when working with vault file…
Shape output for a reader with ADHD: lead with the next action, number multi-step work, restate state across turns, suppress…
Set up the owner profile so a personal agent knows who it works for (first-run setup, \"get to know me\"), or distill colleague,…