| name | quick-ref |
| description | Use when the user wants to see what DSO skills and scripts are available, list installed plugin commands, or look up the description of a skill they don't recognize. Auto-discovers and displays every script under the plugin scripts directory and every skill under the plugin skills directory, with each entry's description extracted from script comments or skill YAML frontmatter. No hardcoded lists — everything resolves dynamically at invocation time. Trigger phrases include 'list available skills', 'what skills are available', 'show plugins', 'what tools are installed', 'what can DSO do', 'list dso commands', 'show plugin scripts'. |
| user-invocable | true |
| allowed-tools | Read, Write, Edit, Glob, Grep, Bash |
Quick Reference: Plugin Scripts & Skills
Auto-discovers all available scripts and skills in the workflow plugin at invocation time. No hardcoded lists — everything is resolved dynamically.
Usage
/dso:quick-ref # Show all scripts and skills
/dso:quick-ref scripts # Show only scripts
/dso:quick-ref skills # Show only skills
Execution
Step 1: Resolve Plugin Root
REPO_ROOT="$(git rev-parse --show-toplevel)"
PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT}"
Step 2: Discover Plugin Scripts
List all .sh files in the plugin scripts/ directory and extract the first comment line (after the shebang and filename comment) as a description.
scripts_dir="${PLUGIN_ROOT}/scripts"
for script in "$scripts_dir"/*.sh; do
name="$(basename "$script")"
desc="$(sed -n '2s/^# *//p' "$script")"
if [[ "$desc" == *"$name"* ]] || [[ -z "$desc" ]]; then
desc="$(sed -n '3s/^# *//p' "$script")"
fi
echo "| $name | $desc |"
done
Present the results as a markdown table:
| Script | Description |
|---|
| (auto-discovered at invocation time) | (first comment line) |
Step 3: Discover Skills
List all skills by scanning for SKILL.md files under the plugin skills/ directory.
skills_dir="${PLUGIN_ROOT}/skills"
for skill_file in "$skills_dir"/*/SKILL.md; do
skill_dir="$(dirname "$skill_file")"
skill_name="$(basename "$skill_dir")"
desc="$(sed -n '/^description:/s/^description: *//p' "$skill_file")"
invocable="$(sed -n '/^user-invocable:/s/^user-invocable: *//p' "$skill_file")"
echo "| /$skill_name | $desc | $invocable |"
done
Present the results as a markdown table:
| Skill | Description | User-Invocable |
|---|
| (auto-discovered at invocation time) | (from frontmatter) | (true/false) |
Step 4: Output
Combine the two tables with section headers and present to the user. If the user passed scripts or skills as an argument, show only the relevant section.