Skip to content

extend: skill-doctor — find skills that silently won't load (structural complement to skill-lint)#7

Open
deemwario wants to merge 1 commit into
mainfrom
extend/skill-doctor-cycle17
Open

extend: skill-doctor — find skills that silently won't load (structural complement to skill-lint)#7
deemwario wants to merge 1 commit into
mainfrom
extend/skill-doctor-cycle17

Conversation

@deemwario

Copy link
Copy Markdown

Extend: skill-doctor — find skills that silently won't load

#ossengine cycle 17extend the family, additive, no owner gate. The structural-health complement to skill-lint.

Why

skill-lint judges a single skill's description quality. Nothing checked the skills directory for structural health — and a dead skill symlink or a missing/invalid SKILL.md makes the skill vanish silently: you think it's installed, the model never sees it.

What it does

Scans a skills dir (default ~/.claude/skills) and flags:

  • BROKEN_SYMLINK (HIGH) — symlinked skill whose target is gone
  • NO_SKILL_MD (HIGH) — skill dir with no SKILL.md
  • NO_FRONTMATTER / NO_NAME (HIGH) — won't register (registration only — not description quality)
  • DUP_NAME (MED) — two skills claim the same name
  • NAME_MISMATCH / STRAY_ENTRY (LOW, heuristic)
  • never tracebacks on permission errors / symlink loops

Exit 0/1/2; --json for CI; honest disclaimer (structural, not quality/correctness).

Verification (independently re-run)

  • test_skill-doctor.sh20/20 green.
  • Exit codes confirmed directly: findings→1, clean→0, missing/not-a-dir→2. --json{skills_dir, skills_scanned, findings, summary}.
  • Dogfood: run against a real ~/.claude/skills (38 skills) it caught a genuine issue (a skill dir with no SKILL.md).
  • Single-file python3, stdlib only. README house-style with the deemwar.com/contact CTA. MIT.

🤖 Generated with Claude Code

The structural-health complement to skill-lint (which judges a single
skill's description quality). A dead skill symlink or a missing/invalid
SKILL.md makes the skill VANISH silently — you think it's installed, the
model never sees it.

skill-doctor scans a skills dir (default ~/.claude/skills) and flags:
broken symlinks (BROKEN_SYMLINK), no SKILL.md (NO_SKILL_MD), missing
frontmatter / name so it won't register (NO_FRONTMATTER / NO_NAME),
duplicate skill names (DUP_NAME), name/dir mismatch + stray entries
(heuristic). Never tracebacks on permission errors / symlink loops.
Exit 0/1/2; --json for CI. Structural/registration only — not description
quality (that's skill-lint).

- single-file python3, stdlib only; test_skill-doctor.sh 20/20 green.
- house-style README with the deemwar.com/contact CTA. MIT.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant