| name | list-skills |
| description | List all installed skills and show which plugin each belongs to |
List Skills
Show all installed skills with their source (project / personal / plugin) and a short purpose hint, names emphasised for scannability.
When to Use
- When the user wants to see what skills are installed
- When checking which plugin a skill belongs to
Process
Step 1: Run the collection script
The bundled script scans three locations — project (<cwd>/.claude/skills/**, walking up to find the nearest one), personal (~/.claude/skills/**), and plugin cache (~/.claude/plugins/cache/**) — extracts each skill's frontmatter, deduplicates across versions, shortens each description to a keyword-style summary, and groups the result. Project skills come first when present, then personal, then plugin groups alphabetically.
Step 2: Display the table
Run the script in a single Bash call with no flags — nothing else. The script auto-detects the user's Claude Code verbose setting (~/.claude/settings.json, with ~/.claude/settings.local.json taking precedence) and routes its own output:
python3 "${CLAUDE_PLUGIN_ROOT}/skills/list-skills/scripts/collect_skills.py"
verbose: true → prints the ANSI-colored text table to stdout. The Bash result panel shows the full table directly.
verbose !== true → writes the markdown version to ~/.claude/.cache/skills-cleaner-list.md and prints only wrote: <path> to stdout (so the Bash panel stays compact).
After the script returns:
- If stdout contained the table (the line
Installed Skills appears in the Bash output), stay silent — do not re-paste, summarize, or reformat.
- If stdout was just the cache-file path (one line starting with
wrote:), Read that file and paste its contents verbatim as plain markdown — NOT inside a fenced code block. Pasting in a code block would show literal `name` instead of rendered skill names. The pasted markdown becomes the user's only visible output. Don't rephrase or reformat.
Never read ~/.claude/settings.json yourself, never run grep/cat beforehand, and never add commentary before or after unless the user follows up. The script handles verbose detection internally so the user only sees the result.
Explicit flags (--format, --out, --color) skip the auto-routing and behave as documented below.
Flags worth knowing
--no-project — skip the project-local scan (useful when the cwd is irrelevant).
--project-dir <path> — point the project scan somewhere other than $PWD.
--format json — raw array, for piping into other tooling.