Check LinksSAFE
A complete starter kit for an Obsidian + Claude Code personal knowledge management system.
Overview
A complete starter kit for an Obsidian + Claude Code personal knowledge management system.
855f65f39078OBSERVED · 2026-10-08What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
---
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:
```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 contentTrust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | NA |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (0)
No findings outside the package's declared scope.
Gates applied: no_behavioural_pass.
855f65f39078full audit observations/trust-audit/skill/ballred__check-links.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | 855f65f39078 | SAFE | B | 89 | first audit |
Questions
What does the Check Links skill do?
A complete starter kit for an Obsidian + Claude Code personal knowledge management system.
Is Check Links safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can Check Links access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
How current is this page?
The grade is for one exact copy of the source (855f65f39078), read on 2026-10-08. The repository is watched, and a new audit runs when it changes — this is the first audit.