Skip to content
Back to skills

Link Validator

ASecurity

Validate markdown link portability in skills. TRIGGERS - check links, validate portability, fix broken links, relative paths.

  • 75 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 7, 2026
toolsbashdocumentation

Works with

  • claude code

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned February 12, 2026

npx -y skills add terrylica/cc-skills --skill link-validator --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Link Validator?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Link Validator
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/terrylica-link-validator/badge)](https://www.skillsdirectory.com/skills/terrylica-link-validator)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: link-validator
description: Validate markdown link portability in skills. TRIGGERS - check links, validate portability, fix broken links, relative paths.
---

# Link Validator

Validates markdown links in Claude Code skills for portability across installation locations.

## The Problem

Skills with absolute repo paths break when installed elsewhere:

| Path Type       | Example                 | Works When Installed?   |
| --------------- | ----------------------- | ----------------------- |
| Absolute repo   | `/skills/foo/SKILL.md`  | No - path doesn't exist |
| Relative        | `./references/guide.md` | Yes - always resolves   |
| Relative parent | `../sibling/SKILL.md`   | Yes - always resolves   |

## When to Use This Skill

- Before distributing a skill/plugin
- After creating new markdown links in skills
- When CI reports link validation failures
- To audit existing skills for portability issues

---

## TodoWrite Task Templates

### Template A: Validate Single Skill

```
1. Identify skill path to validate
2. Run: uv run scripts/validate_links.py <skill-path>
3. Review violation report (if any)
4. For each violation, apply suggested fix
5. Re-run validator to confirm all fixed
```

### Template B: Validate Plugin (Multiple Skills)

```
1. Identify plugin root directory
2. Run: uv run scripts/validate_links.py <plugin-path>
3. Review grouped violations by skill
4. Fix violations skill-by-skill
5. Re-validate entire plugin
```

### Template C: Fix Violations

```
1. Read violation report output
2. Locate file and line number
3. Review suggested relative path
4. Apply fix using Edit tool
5. Re-run validator on file
```

---

## Post-Change Checklist

After modifying this skill:

1. [ ] Script remains in sync with latest patterns
2. [ ] References updated if new patterns added
3. [ ] Tested on real skill with violations

---

## Quick Start

```bash
# Validate a single skill
uv run scripts/validate_links.py ~/.claude/skills/my-skill/

# Validate a plugin with multiple skills
uv run scripts/validate_links.py ~/.claude/plugins/my-plugin/

# Dry-run in current directory
uv run scripts/validate_links.py .
```

## Exit Codes

| Code | Meaning                                 |
| ---- | --------------------------------------- |
| 0    | All links valid (relative paths)        |
| 1    | Violations found (absolute repo paths)  |
| 2    | Error (invalid path, no markdown files) |

## What Gets Checked

**Flagged as Violations:**

- `/skills/foo/SKILL.md` - Absolute repo path
- `/docs/guide.md` - Absolute repo path

**Allowed (Pass):**

- `./references/guide.md` - Relative same directory
- `../sibling/SKILL.md` - Relative parent
- `https://example.com` - External URL
- `#section` - Anchor link

## Reference Documentation

- [Link Patterns Reference](./references/link-patterns.md) - Detailed pattern explanations and fix strategies

---

## Troubleshooting

| Issue                     | Cause                         | Solution                                          |
| ------------------------- | ----------------------------- | ------------------------------------------------- |
| Script not found          | Path or plugin not installed  | Verify plugin installed with `claude plugin list` |
| Exit code 2               | Invalid path or no .md files  | Check target path exists and contains markdown    |
| False positive on URL     | Regex matched external link   | URLs starting with `http` should be ignored       |
| Anchor link flagged       | Script treating `#` as path   | Anchor links (`#section`) are allowed by design   |
| Relative path still fails | Wrong relative direction      | Use `./` for same dir, `../` for parent           |
| Validation passes locally | CI uses different working dir | Ensure CI runs from correct repo root             |
| Too many violations       | Legacy codebase               | Fix incrementally, prioritize high-impact files   |
| Can't determine fix       | Complex path structure        | Read link-patterns.md for detailed fix strategies |

Files in this skill

  • SKILL.md4 KB
  • references/link-patterns.md5.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.