help · diff

git:20260612.882d663 to git:20260803.a224464

12 added, 7 removed. Audit A to A.

---
name: help
- description: "Passive on-demand index of installed user-invoke skills, grouped by category. Bundled with super-bootstrap. Invoke as `/super-bootstrap:help` (namespaced to avoid colliding with Claude Code's built-in `/help`); `/super-bootstrap:help <category>` filters. Reads installed-plugin manifest + project skills + per-plugin bundled skills. No active reminders — discovery is pull-only, zero ambient cost."
+ description: "Passive on-demand index of installed user-invoke skills, grouped by category. Bundled with super-bootstrap. Invoke as `/super-bootstrap:help` (namespaced to avoid colliding with Claude Code's built-in `/help`); `/super-bootstrap:help <category>` filters. Reads installed-plugin manifest + project skills + per-plugin bundled skills via a bundled script — zero-dispatch. No active reminders — discovery is pull-only, zero ambient cost."
tags: [help, discovery, menu, pipeline]
---
# Help — User-Invoke Skill Discovery Surface
Render an on-demand menu of slash commands the user can invoke in this project. Cold-by-nature user-invoke skills (slash commands the user must remember) need a discovery surface; passive `/super-bootstrap:help` is the right shape.
+ Extraction is mechanical (structured JSON + YAML frontmatter), so a bundled script does it in one tool call with zero model tokens; the one judgment in the pipeline — which discovered skills a *user* would actually invoke — stays with the gateway.
+
## When to Use
- User forgot which slash commands are available
- User just installed a new plugin and wants to see what it added
- User wants to filter by category (`/super-bootstrap:help git`, `/super-bootstrap:help docs`)
- ## Execution
-
- Protocol lives in the `help` agent — dispatch via `subagent_type: "help"`.
+ ## Execution (gateway-inline)
When the user invokes `/super-bootstrap:help [category]`:
- 1. Dispatch the `help` subagent (Agent tool, `subagent_type: "help"`). Forward the project root path and any category argument as the prompt body.
- 2. Relay the agent's rendered menu verbatim to the user. Do not re-do the work.
+ 1. **Extract** — run the bundled script, passing the project root (the session's working directory — `pwd`):
+ `python3 "${CLAUDE_PLUGIN_ROOT}/skills/help/assets/render-menu.py" "$(pwd)"`
+ It emits one candidate per line (`category<TAB>command<TAB>description`) from the installed-plugin manifest, `enabledPlugins`, per-plugin `skills/*/SKILL.md` frontmatter, and project `.claude/skills`. It deliberately over-reports — no filter lives in the script.
+ 2. **Filter to user-invoke** — drop rows a user would never type: delegation-only skills (dispatched by other skills or the model, e.g. process/reference skills another skill invokes), hook-fired skills, and reference-material bundles. Keep anything a user plausibly types as a slash command. This is the judgment step; do it from the emitted descriptions — no file reads.
+ 3. **Render** — group surviving rows under their category headers (`[meta]` `[pipeline]` `[git]` `[docs]` `[dev]` `[utils]`), one line per skill: command + one-line summary. Header: `Available slash commands ({N} total):`. A category argument renders only that category; unknown category → list available categories.
+ 4. **Fallback** — `python3` missing on the device: scan the same sources manually with Read/Grep (structure documented in the script header) and render the same shape.
## Rules
- **No active reminders.** Discovery is pull-only — the user invokes; nothing fires ambiently. Footer-hint convention on other surfaces (e.g. `/super-bootstrap:todo` ends with `more: /super-bootstrap:help`) is the only push.
- - **Namespaced invocation.** Always `/super-bootstrap:help`, never bare `/help` — bare `/help` is Claude Code's built-in. Footer hints elsewhere in this plugin must use the namespaced form too.
+ - **Namespaced invocation.** Always `/super-bootstrap:help` — bare `/help` is Claude Code's built-in. Footer hints elsewhere in this plugin must use the namespaced form too.
+ - **Script over-reports by design.** The user-invoke filter is the gateway's judgment at render time; never push it down into the script.