Validate links and references in SKILL.md files using deterministic scripts
Validates all SKILL.md files in the repository for broken links, missing references, and invalid paths.
| Check Type | Description |
|---|---|
| External URLs | HTTP HEAD request to verify accessibility |
| Skill references | Verify referenced skills exist (e.g., umbraco-dashboard) |
| Internal links | Check relative paths resolve (e.g., patterns/foo.md) |
| File paths | Verify Umbraco-CMS paths via GitHub API if not local |
| Import paths | Check @umbraco-cms/backoffice/* imports are valid |
/validate-skills
cd .claude/skills/umbraco-skill-validator/scripts
npm install
npm run validate
The script outputs JSON that gets formatted as:
# Skill Validation Report
## Summary
- Skills scanned: 25
- Issues found: 3
- Auto-fixable: 2
## Issues by Skill
### `umbraco-dashboard`
| Line | Type | Issue | Status |
|------|------|-------|--------|
| 45 | Broken URL | [example-broken-url] returns 404 | :x: |
### `umbraco-tree`
| Line | Type | Issue | Status |
|------|------|-------|--------|
| 72 | Missing skill | [example-missing-skill] not found | :x: |
When issues are found, the fixer subagent generates:
# Fix Plan
## Fix 1: Update broken URL
**File:** plugins/.../umbraco-dashboard/SKILL.md
**Line:** 45
**Action:** Replace with current documentation URL
- [Dashboard docs][old-url]
+ [Dashboard docs][new-url]
## Approval
- [ ] Fix 1: Update broken URL
- [ ] Fix 2: ...
https://docs.umbraco.com/...
https://github.com/umbraco/...
`umbraco-dashboard`
`umbraco-workspace`
[Pattern Name](patterns/pattern-name.md)
[Example](examples/example-name/)
/Umbraco-CMS/src/Umbraco.Web.UI.Client/...
src/packages/core/...
import { ... } from '@umbraco-cms/backoffice/notification';
When this skill is invoked:
Run the validation script
cd .claude/skills/umbraco-skill-validator/scripts
npx tsx validate-links.ts
Read the JSON output from stdout or validation-report.json
Format as markdown report using the template above
If issues found, spawn the skill-content-fixer agent:
Present fix plan to user with AskUserQuestion
Execute only approved fixes using Edit tool