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.documentation
Manage software releases end-to-end: bump version, generate changelog, tag, push, GitHub release, publish to PyPI/npm. Use when user asks to ship, cut a release, tag a version, or list changes since last tag. Skip routine commits and marketplace publishing.
development
Review UI for usability issues using Steve Krug's principles and produce a scannable report. Use when asked for a usability audit, UX review, or UI feedback on screenshots, URLs, or code. Don't use for visual/brand design critique, accessibility (WCAG) audits, or backend/API review.
development
Validate app/startup ideas with market, feasibility, commercial, and open-source competitor analysis. Use when asked to evaluate, validate, or score a product idea. Don't use for PRDs, go-to-market plans, or investor decks.
testing
Install local-first security hardening: pre-commit secret detection, offline dependency scans, static analysis, reports, and gated free CI. Use when hardening repos or adding security hooks. Don't use for incident response or cloud security reviews.