Help us improve
Share bugs, ideas, or general feedback.
From acc
Validates Markdown documentation links, detecting broken relative links, missing anchor targets, malformed URLs, and orphaned documentation files. Use before releases or doc updates.
npx claudepluginhub dykyi-roman/awesome-claude-code --plugin accHow this skill is triggered — by the user, by Claude, or both
Slash command
/acc:check-doc-linksThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Analyze documentation files for broken links, missing targets, and navigation issues.
Scans markdown files for broken internal links, unreachable external URLs via HTTP checks, and missing images. Use before releases, after doc restructuring, or audits.
Validates documentation references including file paths, links, line numbers, and code examples using Read, Grep, Glob. Ensures docs accuracy across projects.
Audits and repairs Markdown link health across a repo using a four-tier pipeline (config hardening, intra-repo fixes, URL substitutions, residual exclusions). Designed for lychee-based CI link checkers.
Share bugs, ideas, or general feedback.
Analyze documentation files for broken links, missing targets, and navigation issues.
<!-- BROKEN: Target file doesn't exist -->
See [installation guide](docs/install.md)
<!-- File docs/install.md not found -->
<!-- BROKEN: Wrong path depth -->
See [API docs](../docs/api.md)
<!-- Should be ./docs/api.md -->
<!-- BROKEN: Case mismatch -->
See [README](readme.md)
<!-- Actual file is README.md -->
<!-- BROKEN: Anchor target doesn't exist in file -->
See [Configuration](#configuration)
<!-- No ## Configuration heading found -->
<!-- BROKEN: Anchor in another file -->
See [API Authentication](docs/api.md#auth)
<!-- docs/api.md exists but has no ## Auth heading -->
<!-- BROKEN: Wrong anchor format -->
See [Setup](#set-up)
<!-- Heading is "## Set Up" → anchor should be #set-up -->
<!-- MALFORMED: Missing protocol -->
See [docs](www.example.com/docs)
<!-- MALFORMED: Space in URL -->
See [guide](docs/getting started.md)
<!-- MALFORMED: Unencoded special characters -->
See [API](docs/api?version=2&format=json)
<!-- File exists but no other doc links to it -->
docs/deprecated-api.md <!-- Not linked from any other .md file -->
docs/internal-notes.md <!-- Not in any navigation/TOC -->
# All markdown links (relative)
Grep: "\]\([^http][^:][^/][^)]+\)" --glob "**/*.md"
# All markdown links (absolute)
Grep: "\]\(https?://[^)]+\)" --glob "**/*.md"
# Anchor links
Grep: "\]\(#[^)]+\)" --glob "**/*.md"
# Cross-file anchor links
Grep: "\]\([^)]+\.md#[^)]+\)" --glob "**/*.md"
# Image references
Grep: "!\[[^\]]*\]\([^)]+\)" --glob "**/*.md"
# HTML links in markdown
Grep: "href=\"[^\"]+\"" --glob "**/*.md"
# Find all relative links
Grep: "\]\(([^http][^)]+)\)" --glob "**/*.md"
# Find all anchor links
Grep: "\]\((#[^)]+)\)" --glob "**/*.md"
For each relative link [text](path):
Glob#anchor, verify heading exists in targetFor each anchor link [text](#heading):
-, remove special chars# List all .md files
Glob: **/*.md
# For each file, check if it's referenced by any other .md
Grep: "filename.md" --glob "**/*.md"
# If referenced by 0 files and not README/CHANGELOG → orphaned
| Pattern | Severity |
|---|---|
| Broken link to critical doc (README, install) | 🔴 Critical |
| Broken relative link | 🟠 Major |
| Broken anchor link | 🟡 Minor |
| Malformed URL | 🟡 Minor |
| Orphaned documentation | 🟡 Minor |
### Link Validation: [Description]
**Severity:** 🔴/🟠/🟡
**Source:** `file.md:line`
**Link:** `[text](target)`
**Type:** Relative/Anchor/External/Image
**Issue:**
[Description — target not found, anchor missing, etc.]
**Fix:**
- Correct path: `[text](correct/path.md)`
- Or remove dead link
## Link Validation Summary
| Metric | Count |
|--------|-------|
| Total links checked | X |
| Valid links | X |
| Broken relative links | X |
| Broken anchors | X |
| Malformed URLs | X |
| Orphaned files | X |
### Broken Links
| Source | Link | Issue |
|--------|------|-------|
| `README.md:45` | `[guide](docs/guide.md)` | File not found |
| `docs/api.md:12` | `[auth](#authentication)` | Anchor not found |