From skillry-skill-library-and-installation
Use when you need to detect duplicate and overlapping skills, choose canonical versions, and document deferred alternatives.
How this skill is triggered — by the user, by Claude, or both
Slash command
/skillry-skill-library-and-installation:72-skill-deduplicationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Scan the installed skill library for functional overlap, name collisions, and redundant coverage. For each conflict cluster, designate one canonical skill, propose a disposition for each duplicate (merge, archive, redirect, delete), and produce a deduplication report. Nothing is deleted or moved without explicit per-skill user confirmation, and agent bindings are checked before any disposition ...
Scan the installed skill library for functional overlap, name collisions, and redundant coverage. For each conflict cluster, designate one canonical skill, propose a disposition for each duplicate (merge, archive, redirect, delete), and produce a deduplication report. Nothing is deleted or moved without explicit per-skill user confirmation, and agent bindings are checked before any disposition so no agent loses the procedure it references.
71-skill-librarian.73-skill-to-agent-router.name: and description: frontmatter. Build a flat list: [number, name, description_text].~/.claude/skills/archive/, keep for traceability), redirect (add Superseded by: [skill-name] note), or delete (only for an exact duplicate with zero unique content — requires explicit confirmation).skills: list to reference the canonical skill instead.~/.claude/skills/archive/) exists or is created first.cp SKILL.md SKILL.md.bak) before any merge edit.# Inventory: name + description per skill, paired onto one line
grep -rn "^name:\|^description:" ~/.claude/skills/*/SKILL.md | \
awk -F: '{print $1, $3}' | paste - -
# Find candidate name collisions (differ by plural/hyphen)
grep -rh "^name:" ~/.claude/skills/*/SKILL.md | sort | \
sed 's/s$//' | uniq -d
# Check agent bindings before archiving/deleting a skill
grep -rn "skill-name" ~/.claude/agents/*/AGENT.md
# Body completeness signal (line count) to break a canonical tie
for d in ~/.claude/skills/*/; do
printf "%5s %s\n" "$(wc -l < "$d/SKILL.md")" "$(basename "$d")"
done | sort -n
## Skill Deduplication Report
Scan date: [date] Skills scanned: [count] Conflict clusters: [count]
### Cluster [N]: [domain / verb]
| Skill name | # | Completeness | Specificity | Refs | Role |
|------------|---|--------------|-------------|------|------|
| [name] |[#]| H/M/L | H/M/L | [n] | CANONICAL |
| [name] |[#]| H/M/L | H/M/L | [n] | [merge/archive/redirect/delete] |
Canonical rationale: [one sentence]
Unique content to merge: [list or "none"]
Agent binding impact: [agents referencing non-canonical, or "none"]
### Proposed actions (awaiting confirmation)
| Action | Skill | Details |
|----------|-------|---------|
| archive | [name]| Move to ~/.claude/skills/archive/ |
| redirect | [name]| Add "Superseded by: [canonical]" |
| merge | [name] → [canonical] | Merge section: [name] |
| delete | [name]| Exact duplicate — CONFIRM |
### No action needed
[skills reviewed with no conflict]
The inventory surfaces three skills whose descriptions all contain "review … API":
12-api-and-interface-design — "designing stable APIs, module boundaries, type contracts, REST/GraphQL endpoints". Body: full procedure, 200+ lines.55-api-test-suite-review — "review API test coverage, contract tests, request/response assertions". Body: full, test-focused.96-api-design-principles — "API design principles, naming, versioning, idempotency". Body: shorter, principle list.Clustering check: do they share a core verb-object? 12 and 96 both cover API design; 55 covers API testing — a different action. So 55 is not in the cluster (specialisation, not duplication). Within the 12/96 cluster, score: 12 is more complete and more canonical (lower number, broader and deeper), 96 is a narrower principles reference.
Disposition: keep 12 canonical; for 96, propose redirect (add Superseded for design workflows by: 12-api-and-interface-design, but keep it as a quick principles reference) rather than archive, because it has unique content (the idempotency/versioning checklist) that is not in 12. Before any change, grep -rn "api-design-principles" ~/.claude/agents/ confirms whether an agent binds 96 directly. The lesson: synonymous descriptions are a signal to investigate, not proof of duplication — the action verb and the unique content decide.
sql-query-review and technical-writing-review both "review" but are not duplicates.product-review vs product-requirements-review may be intentionally distinct — check description scope before clustering..bak loses recoverable content.Before presenting the report, sanity-check the inventory itself:
ls -d ~/.claude/skills/*/ | wc -l); a mismatch means some frontmatter failed to parse and was skipped.A deduplication report is only trustworthy if the inventory it rests on is complete; a skill with malformed frontmatter that the scan skipped is exactly the kind of orphan that later causes ambiguous routing.
Once a cluster has a canonical skill, pick each non-canonical skill's fate by its unique content and its bindings:
| Has unique content? | Bound to an agent? | Disposition | Rationale |
|---|---|---|---|
| No (exact duplicate) | No | delete (confirm) | nothing is lost |
| No | Yes | redirect | keep the name resolvable so the binding still loads |
| Yes, small | Either | merge into canonical | fold the unique section in, then redirect/archive the shell |
| Yes, distinct audience | Either | keep both | not a duplicate — different caller |
| Yes, but stale/superseded | No | archive | preserve for traceability, exclude from routing |
Delete is the rarest outcome and always requires explicit confirmation; redirect is the safest default when an agent binding exists, because it keeps the name resolvable while pointing future use at the canonical skill. Never delete a skill that an agent binds without first updating that agent's skills: list, or the agent loses its procedure silently.
Return the deduplication report block above: scan metadata, one table per conflict cluster with the canonical designation and per-skill role, an "awaiting confirmation" actions table, and a "no action needed" list. Every archive/delete must be marked as requiring explicit confirmation, and every affected agent binding must be listed.
cp SKILL.md SKILL.md.bak) before a merge operation.Done means the inventory was built from frontmatter only, conflict clusters were scored, a canonical skill and a disposition were assigned per cluster, agent bindings were checked, and no file was moved or modified without explicit confirmation.
npx claudepluginhub fluxonlab/skillry --plugin skillry-skill-library-and-installationCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.