Three checks, one job each
DSH won't start after installing a skill? Run the doctor. Shipping a page? Check the UI. Sending out copy? Check the text. Everything runs in the browser, nothing is uploaded, and nothing is scored.
Does this read like a machine wrote it
Template transitions, buzzword density, equal-length paragraphs, an ending that repeats the opening, numbers with no source, absolute claims — mechanical markers are deterministic. Paste an article and see which lines trip.
Rules run in this tab. Anything quoted, in a code fence, in a table, or inside inline code is skipped — that is other people’s words or data, not your prose.
Does this page look generated
Purple-blue gradients, gradient text, coloured glow, emoji as icons, spacing off the 4px grid, placeholder data — the main reasons an interface reads as machine-made. Paste CSS or markup and each hit gets named, with the fix.
Paste CSS or an HTML fragment. Only 8 patterns are checked, and each one is mechanical enough to be reproducible.
A skill broke DSH on startup
A dead skill link, broken frontmatter, or an unresolvable plugin package takes DSH down the moment it starts — without telling you which one. This reads your profile and skills tree and names the trap before you spend an hour on code that never runs.
git clone https://github.com/FindSomeSkills/Skills.git
node Skills/dsh-tools/dsh-profile-doctor/src/cli.ts| Code | What it finds | Severity |
|---|---|---|
SKILL-001 | Skill link points at a directory that no longer exists | error |
SKILL-003 | Skill directory has no SKILL.md | error |
SKILL-004 | Frontmatter is not valid YAML | error |
BUNDLE-003 | A bundle is declared in package.json but cannot be resolved | error |
CORDIS-004 | Duplicate plugin ids in cordis.yml | error |
PATCH-009 | An override targets an id that does not exist (silently does nothing) | warn |
SKILL-006 | Skill name does not match its directory name | warn |
Static reads only. A clean report means no known trap, not a guarantee that DSH starts.
Same rules on the command line
The page and the command line share one rule set. For a pre-commit hook or CI, use the command line: it exits 1 on anything that must be fixed.
git clone https://github.com/FindSomeSkills/Skills.git
cd Skills/dsh-tools/deai-tool
node src/cli.ts text article.md --json
node src/cli.ts ui ../your-project/src --fix
npm run panelSame input, same report, every time — no model is called. That is what makes it usable as a gate.
Rule set
| Rule | What it flags | Default |
|---|