From link-tools
Validate markdown link portability in skills. TRIGGERS - check links, validate portability, fix broken links, relative paths.
How this skill is triggered — by the user, by Claude, or both
Slash command
/link-tools:link-validatorThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Validates markdown links in Claude Code skills for portability across installation locations.
Validates markdown links in Claude Code skills for portability across installation locations.
Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.
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 |
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
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
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
After modifying this skill:
# 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 .
| Code | Meaning |
|---|---|
| 0 | All links valid (relative paths) |
| 1 | Violations found (absolute repo paths) |
| 2 | Error (invalid path, no markdown files) |
Flagged as Violations:
/skills/foo/SKILL.md - Absolute repo path/docs/guide.md - Absolute repo pathAllowed (Pass):
./references/guide.md - Relative same directory../sibling/SKILL.md - Relative parenthttps://example.com - External URL#section - Anchor link| 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 |
After this skill completes, check before closing:
Only update if the issue is real and reproducible — not speculative.
npx claudepluginhub terrylica/cc-skills --plugin link-toolsUniversal link validation using lychee for Claude Code sessions. Detect broken links and path policy violations on demand.
Validates skills, agents, or plugins for token complexity, broken links, frontmatter issues, and structural problems. Invoke via /lint <path-to-skill-or-plugin>.
Validates Claude Code skills for schema, naming, documentation, and security. Helps troubleshoot skill loading errors and dangerous command detection.