skills/skill-inventory-auditor/SKILL.md
Audit all installed agent skills across global and project scopes to find and remove duplicate skills. Use when asked to audit my skills, deduplicate skills, clean up skills, or find duplicate skill installations. Don't use for creating or improving a single skill, running skill evals, or packaging/publishing skills.
npx skillsauth add luongnv89/skills skill-inventory-auditorInstall 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.
Find and remove duplicate skills across installed skill directories.
Before removing skills from git-tracked directories, sync the current branch with remote:
branch="$(git rev-parse --abbrev-ref HEAD)"
git fetch origin
git pull --rebase origin "$branch"
If the working tree is not clean, stash first, sync, then restore:
git stash push -u -m "pre-sync"
branch="$(git rev-parse --abbrev-ref HEAD)"
git fetch origin && git pull --rebase origin "$branch"
git stash pop
If origin is missing, pull is unavailable, or rebase/stash conflicts occur, stop and ask the user before continuing.
Run the duplicate scanner with scope both (default) unless the user specifies otherwise:
python3 {SKILL_DIR}/scripts/scan_inventory.py --scope both --project-dir {cwd}
Scopes: global (~/.claude/skills/, ~/.agents/skills/), project (.claude/skills/), or both.
Parse the JSON output. If the script fails, report the error and stop.
If no duplicates are found, say so and stop.
For each duplicate group:
Ask the user which skills to keep/remove for each group. Wait for confirmation.
Present a summary of planned removals, then ask for confirmation.
Symlink removal (preserves the source):
rm {symlink_path}
Directory removal:
rm -rf {directory_path}
Safety rules:
skills/ in a git repo)After removals, rerun the scanner to verify no duplicates remain.
After the audit completes, the skill presents:
Skill Inventory Audit — 2 duplicate group(s) found
Group 1: "release-manager"
| Location | Version | Description excerpt |
|-----------------------------------|---------|----------------------------------|
| ~/.claude/skills/release-manager | 2.3.1 | Automate the full release... |
| .claude/skills/release-manager | 2.1.0 | Complete release automation... |
Recommendation: keep ~/.claude/skills/release-manager (higher version)
Similarity: exact name match
Removed: .claude/skills/release-manager
Rescan: 0 duplicates remaining.
skill.md file: If a directory in a skills folder lacks a skill.md, skip it during scanning and report it separately as an unrecognized entry. Do not attempt to remove it automatically.scripts/scan_inventory.py is missing (e.g., the skill was installed without its scripts), report the missing dependency and stop. Do not attempt to scan manually.~/.claude/skills/, ~/.agents/skills/, or .claude/skills/ are eligible for removalAfter completing each major step, output a status report in this format:
◆ [Step Name] ([step N of M] — [context])
··································································
[Check 1]: √ pass
[Check 2]: √ pass (note if relevant)
[Check 3]: × fail — [reason]
[Check 4]: √ pass
[Criteria]: √ N/M met
____________________________
Result: PASS | FAIL | PARTIAL
Adapt the check names to match what the step actually validates. Use √ for pass, × for fail, and — to add brief context. The "Criteria" line summarizes how many acceptance criteria were met. The "Result" line gives the overall verdict.
Phase 1 — Scan
◆ Scan (step 1 of 3 — inventory collection)
··································································
Global skills scanned: √ pass (~/.claude/skills/, ~/.agents/skills/)
Project skills scanned: √ pass (.claude/skills/)
Duplicates identified: √ pass (N duplicate groups found)
____________________________
Result: PASS | FAIL | PARTIAL
Phase 2 — Report
◆ Report (step 2 of 3 — findings presentation)
··································································
Findings presented: √ pass (table shown per duplicate group)
Severity classified: √ pass (exact name match | similar description)
Removal plan ready: √ pass (keep/remove recommendations made)
____________________________
Result: PASS | FAIL | PARTIAL
Phase 3 — Cleanup
◆ Cleanup (step 3 of 3 — duplicate removal)
··································································
Duplicates removed: √ pass (N skills removed)
No side effects: √ pass (source repos untouched)
Inventory verified: √ pass (rescan: 0 duplicates remaining)
____________________________
Result: PASS | FAIL | PARTIAL
~/.claude/skills/, ~/.agents/skills/, or .claude/skills/). It never touches source repositories.~/.claude/skills/ and ~/.agents/skills/ pointing to the same target are shared installations, NOT duplicates. The scanner excludes these automatically.tools
Run Herdr loops for one open GitHub issue (resolve→review→fix) or an existing PR (review→lazy fixer) until CLEAN. Don't use for plain resolution without review, review-only/no-fix requests, backlog automation, or merging.
tools
Manage AI agent fleets in Herdr: split root + sub-agents into one tab as a tiled grid, message/wait/read via herdr CLI, steer any pane. Use for Herdr multi-agent fleets. Don't use for tmux, screen, or non-Herdr terminals.
development
Generate or update docs to match the code, citing each claim to path:line and asking on ambiguity; runbook docs also get a check-only validation script. Don't use for API-reference autogen (JSDoc/Sphinx), landing pages, or CLAUDE.md/AGENTS.md.
testing
Generate a diagram and route to the right engine — draw.io XML (precise, editable, C4, swimlanes) or Excalidraw JSON (hand-drawn, sketch, wireframes). One entry for flowcharts, architecture, ER, sequence, mind maps. Don't use for Mermaid or slides.