About umbraco-skill-validator
A skill for checking repository SKILL.md files for broken links, missing skill references, invalid paths, and imports. It combines deterministic validation with an AI fixer workflow that proposes changes for approval before applying them.
Key features
- 01Check external URLs and internal links
- 02Verify skill references and file paths
- 03Validate Umbraco and import paths
- 04Produce structured JSON reports
- 05Propose fixes for approval
Use cases
- 01Check skill files before a release
- 02Run link validation in CI/CD
- 03Review suggested corrections before editing
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ umbraco/ umbraco-cms-backoffice-skills --skill umbraco-skill-validatorAfter installing, type/umbraco-skill-validatorin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
scripts/.gitignorepackage-lock.jsonpackage.jsonvalidate-links.tsDetails
From the project READMESkill Content Validator
Validates all SKILL.md files in the repository for broken links, missing references, and invalid paths.
What This Skill Does
- Runs deterministic validation script - Fast, consistent checking of all links
- Generates structured report - JSON output with all issues found
- Spawns fixer subagent - AI-powered fix suggestions for issues
- Presents fix plan - Diff-style changes for approval
- Executes approved fixes - Only applies changes user approves
Validation Checks
| 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 |
Running the Validator
Via Slash Command
/validate-skills
Via Script Directly (CI/CD)
cd .claude/skills/umbraco-skill-validator/scripts
npm install
npm run validate
Report Format
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: |
Fix Plan Format
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: ...
Link Patterns Detected
External URLs
https://docs.umbraco.com/...
https://github.com/umbraco/...
Skill References
`umbraco-dashboard`
`umbraco-workspace`
Internal Pattern Links
[Pattern Name](patterns/pattern-name.md)
[Example](examples/example-name/)
File Paths
/Umbraco-CMS/src/Umbraco.Web.UI.Client/...
src/packages/core/...
Import Paths (in code blocks)
import { ... } from '@umbraco-cms/backoffice/notification';
Workflow Instructions
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-fixeragent:- Pass the JSON report as context
- Request fix suggestions with diffs
-
Present fix plan to user with AskUserQuestion
-
Execute only approved fixes using Edit tool
Edge Cases
- Rate limiting: Script batches URL checks with 100ms delays
- Redirects: Reported as warnings with new URL suggestion
- Missing Umbraco-CMS: Falls back to GitHub API
- Timeouts: 5 second timeout per URL request
- Large repos: Processes files in batches of 10