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.development
Scan a live site with isitagentready.com, then approve each step: triage the 0-5 agent-readiness score, write agent-ready-plan.md, file issues via /plan-to-issues. Don't use for applying llms.txt/SEO fixes (seo-ai-optimizer) or app-store ASO.
development
Review a product codebase and landing page against 32 viral principles and produce a Virality Score plus ranked fixes. Use to audit virality or prioritize growth. Don't use for SEO, ASO, copywriting, or code review.
development
Generate a Technical Architecture Document (TAD) from a PRD. Use when asked to design system architecture or define how a product is built. Updates tad.md and reports GitHub links. Don't use for PRD authoring, sprint tasks, or code implementation.
development
Check product and brand names for conflicts across trademarks, domains, social handles, and package registries. Returns a risk level and Proceed/Modify/Abandon recommendation. Skip for name brainstorming, logo design, or trademark filings.