health-plugin/skills/health-skill-audit/SKILL.md
Audit skill tree for overlap, split-pressure, and consolidation candidates. Use when finding confusing skill clusters or surfacing REFERENCE.md extraction candidates.
npx skillsauth add laurigates/claude-plugins health-skill-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Produce triageable evidence for skill-to-skill quality: overlap clusters, split-pressure inside a skill body, and consolidation candidates. The analyzer reports only — every recommendation is editorial.
Complements the other skill audits — this skill assumes frontmatter hygiene is already green.
| Use this skill when... | Use another approach when... |
|------------------------|------------------------------|
| Finding overlapping skills ambiguous to an invoking agent | Frontmatter / size / body corruption (use scripts/plugin-compliance-check.sh) |
| Scoring split-pressure in an oversized skill body | Missing "Use when…" triggers (use scripts/audit-skill-descriptions.py) |
| Locating name-prefix or name-suffix clusters | CLI-flag compactness (use /health:check --scope=agentic) |
| Surfacing small sibling skills that could merge | Plugin ↔ stack relevance (use /health:check --scope=stack) |
find scripts -maxdepth 1 -name audit-skill-structure.py -type ffind tmp/skill-audit -maxdepth 1 -type ffind scripts -maxdepth 1 -name plugin-compliance-check.sh -type ffind scripts -maxdepth 1 -name audit-skill-descriptions.py -type fParse these from $ARGUMENTS:
| Parameter | Description |
|-----------|-------------|
| --plugin <name> | Restrict scan to a single plugin directory (e.g. configure-plugin) |
| --strict | Exit non-zero on warn-tier findings in addition to error-tier |
Execute this skill-structure audit:
These audits own orthogonal concerns. Run them first and resolve their findings before triaging this skill's output:
scripts/plugin-compliance-check.sh — frontmatter, size budget, body corruptionpython3 scripts/audit-skill-descriptions.py --strict — description fields have trigger phrasesIf either reports errors, pause and ask the user whether to continue — a messy frontmatter baseline makes the overlap heuristics noisier.
python3 scripts/audit-skill-structure.py $ARGUMENTS
This writes five artefacts into tmp/skill-audit/:
| File | Contents |
|------|----------|
| report.json | Canonical machine-readable output (source of truth) |
| summary.md | Top-N by severity, intended for triage |
| overlap-clusters.md | Side-by-side description comparison per cluster |
| split-candidates.md | Per-skill evidence (lines, tables, fenced code, examples) |
| consolidation-candidates.md | Conservative merge suggestions |
The schema for report.json and the rationale for every threshold live in REFERENCE.md.
summary.md firstOpen tmp/skill-audit/summary.md. It lists:
REFERENCE.md)For each cluster in tmp/skill-audit/overlap-clusters.md, pick one:
| Disposition | When it fits |
|-------------|--------------|
| Merge | Two small skills describing the same intent → fold into one |
| Rename | Clear distinct intent but colliding names → disambiguate the slug |
| Rewrite descriptions | Intent is distinct but descriptions collide → sharpen trigger phrases |
| Leave | Cluster is a family by design (e.g. python-plugin ecosystem skills) — no change |
Do not auto-act. Each disposition lands in its own PR per the CLAUDE.md guidance.
For each row in tmp/skill-audit/split-candidates.md, pick one:
| Disposition | When it fits |
|-------------|--------------|
| Extract to REFERENCE.md | Warn/error-tier size or contiguous table block |
| Extract to scripts/ | Fenced-code aggregate exceeds threshold |
| Extract to examples/ | Multiple lengthy example blocks |
| Leave | Content is genuinely part of the skill's core instruction |
The report's reason column carries the quantitative evidence — cite it when opening the split PR.
Consolidation suggestions are conservative — both skills must be small, share a plugin, share a name prefix, and have high description similarity. Still, merge is editorial:
File a GitHub issue per consolidation decision rather than bundling them.
report.json is the source of truth for any follow-up PRs — cite the relevant JSON entries in PR descriptionstmp/fixtures/ if a fix should be prevented from recurring (see .claude/rules/regression-testing.md)| Context | Command |
|---------|---------|
| Full scan | python3 scripts/audit-skill-structure.py |
| Single-plugin scan | python3 scripts/audit-skill-structure.py --plugin configure-plugin |
| CI-gating run | python3 scripts/audit-skill-structure.py --strict |
| Top splits only | jq '.split_candidates \| sort_by(-.lines) \| .[:10]' tmp/skill-audit/report.json |
| Top clusters only | jq '.overlap_clusters \| sort_by(-(.pairs \| length)) \| .[:10]' tmp/skill-audit/report.json |
.claude/rules/skill-quality.md — size limits and required sectionsscripts/plugin-compliance-check.sh — frontmatter and body corruption ownerscripts/audit-skill-descriptions.py — trigger-phrase coverage owner/health:check --scope=agentic — CLI-flag compactness audittesting
Verify accumulated bug claims at upstream HEAD and dedup against trackers before filing issues. Use when filing upstream reports from backlogs, audit docs, or git-history findings.
documentation
Gate outward-bound text (upstream issues, docs, PR bodies) through isolated haiku fresh-reader critique before publishing. Use when an artifact must survive a reader with zero project context.
tools
Suggest improvements to SKILL.md content, descriptions, or tool config from eval results. Use when raising pass rates, fixing triggering, or iterating on a skill after evaluation.
tools
deadbranch CLI for stale-branch cleanup — dry-run preview, TUI or non-interactive delete, protects main/develop/WIP. Use when asked to clean up branches, prune branches, or remove stale branches.