/ccc-browse — Skill + Agent Catalog
A click-first browser for the entire CC Commander surface: 11 CCC domains, 9 workflow skills, 22 specialist agents, plus meta skills. User never scrolls a wall of markdown — we cascade through AskUserQuestion 4-at-a-time.
Response shape (EVERY time)
Output exactly these three sections in order:
1. Brand header (one line, markdown)
**CC Commander** · v{VERSION} · Browser · 60 skills · 22 agents · 11 domains
Read VERSION from ${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json.
2. Context strip (one paragraph, markdown)
Count categories live with a single Bash call:
ls ${CLAUDE_PLUGIN_ROOT}/skills/ | wc -l→ total skillsls ${CLAUDE_PLUGIN_ROOT}/agents/*.md | wc -l→ agentsls ${CLAUDE_PLUGIN_ROOT}/skills/ccc-* -d 2>/dev/null | wc -l→ ccc-* skills
Render:
🧭 Catalog:
<N>skills ·<M>agents ·<K>CCC domains · filter by category below.
3. The picker — AskUserQuestion with the Cockpit + 4 categories
Never dump a numbered list. Never ask the user to type a name. Call AskUserQuestion:
question: "What do you want to browse?"
header: "CC Commander catalog"
multiSelect: false
options:
- label: "🎛️ Open the Commander Cockpit — the whole catalog, clickable"
description: "Generate and publish the searchable, offline catalog as a living Artifact page."
preview: "Every Commander skill, agent, idea, and prompt pattern in one private client-side page."
- label: "🎯 Domains (11)"
description: "MEGA skills — design, marketing, saas, devops, seo, testing, security, data, research, mobile, makeover."
preview: "Each domain bundles 8-45 sub-skills behind one entry point. Pick one to drill in."
- label: "🛠️ Workflows (9)"
description: "Step-by-step skills — plan, build, review, ship, start, learn, xray, linear, fleet."
preview: "These are the click-first workflows you'll use 80% of the time."
- label: "🤖 Agents (15)"
description: "Specialist personas — architect, builder, debugger, reviewer, qa, security, designer, devops, pm, writer, researcher, data, content, perf, fleet."
preview: "Each agent has a persona voice. Delegate to one from any /ccc flow."
- label: "🗺️ Show everything as grid"
description: "One-shot overview — sorted table of all skills + agents with one-line descriptions."
preview: "No cascading. Dump once and let the user scan. Use when they're window-shopping."
Recommendation (⭐):
- User asks for the full, visual, searchable, or offline catalog → ⭐ "🎛️ Open the Commander Cockpit — the whole catalog, clickable"
- First-time browser (no prior
/ccc-browseuse in session) → ⭐ "Workflows (9)" — most actionable - User came from
/ccc-start→ ⭐ "Domains (11)" - Argument
allpassed → skip picker, go straight to grid
Handle the selection
Commander Cockpit → generate and publish the living page
Use the same stable path on every run:
<scratchpad>/commander-cockpit.html. Do not add timestamps or alternate filenames; republishing the same file preserves the living page URL./ccc-console publishdeliberately writes to this same path (v7.4.0, Kevin's call): the Cockpit and the console snapshot share one living Commander page rather than minting a fifth URL, so keep the favicon🎛️in both and never move this path.Run the generator — prefer the in-plugin copy first (works for every install, marketplace or dev checkout), falling back to the repo-root shim only if that path doesn't exist:
if [ -f "${CLAUDE_PLUGIN_ROOT}/scripts/build-cockpit.mjs" ]; then node "${CLAUDE_PLUGIN_ROOT}/scripts/build-cockpit.mjs" --out <scratchpad>/commander-cockpit.html else node scripts/build-cockpit.mjs --out <scratchpad>/commander-cockpit.html fi(v7.3.0: the real builder ships inside the plugin at
${CLAUDE_PLUGIN_ROOT}/scripts/build-cockpit.mjs— see W2+/codex 7. A marketplace-only install still produces a full Cockpit; it just won't have the 467-skill ecosystem catalog to merge in — the generator degrades that gracefully, never crashing.)Publish that exact file with the Artifact tool using:
- title:
Commander Cockpit - favicon:
🎛️ - description:
Every Commander skill, agent, idea and prompt pattern — clickable, searchable, offline. - capabilities:
{downloads: true}— enables the ⬇ Save button for edited agent profiles; the page feature-detects this capability and hides the button elsewhere.
- title:
First publish this session → ask before publishing (skill/agent names and any local telemetry the page bakes in leave the machine for the artifact URL). Every later run of
/ccc-browse→ invoking the skill again IS the refresh consent: republish the same file path to the same URL without re-asking. Say that the page is fully client-side and nothing leaves the page beyond that one publish. To refresh later: run/ccc-browseagain — same URL updates in place; viewers reload.
If neither generator path exists (very old cached plugin version), say so and fall back to the existing category browse flow below; do not fabricate a Cockpit artifact.
v7.4.0 — the Cockpit is the console's artifact-side catalog. The Cockpit's heavy client-side tabs (Enhance, Prompts, Ideas, Agent manager) stay here, on a full-width page where they work;
/ccc-console's Launch tab is the compact, one-click version for the 680px inline widget. Same product, two surfaces — mention/ccc-consolewhen the user wants the live agent/usage/safety picture rather than the catalog.
v7.3.0: the Cockpit's 8th tab, Prompts, is a searchable browser across 4 sources — Anthropic's Claude Code docs prompt library, the CCC field-tested prompt library (+ patterns + course modules), the repo's
prompts/templates, and a ReadyIQ teaser (agent names + descriptions only). Each entry offers Copy and "✨ Enhance" (hands it straight to the Enhance tab).
On Codex: some panels may be empty on Codex today — Safety's failure hotspots, Mission Control's agent roster, and Usage's savings hero are fed from Claude-only hooks right now. A follow-up workstream wires the matching Codex telemetry.
Domains (11) → cascade
Read ${CLAUDE_PLUGIN_ROOT}/skills/ glob for ccc-<name> directories excluding meta (ccc, ccc-start, ccc-browse, ccc-plan, etc.).
First AskUserQuestion (4 of 11):
- 🎨 ccc-design · 41 sub-skills · UI/UX, animation, a11y
- 📢 ccc-marketing · 46 sub-skills · CRO, content, SEO, growth
- 💼 ccc-saas · 21 sub-skills · auth, billing, multi-tenant
- ⋯ Next 4 domains
Second AskUserQuestion (4 of 11):
- 🚀 ccc-devops · 21 sub-skills · CI/CD, deploys, infra
- 🔎 ccc-seo · 20 sub-skills · technical + AI search
- 🧪 ccc-testing · 15 sub-skills · TDD, E2E, coverage
- ⋯ Next 3 domains
Third AskUserQuestion (3 of 11 + back):
- 🔐 ccc-security · 8 sub-skills · OWASP, secrets, CVE
- 📊 ccc-data · 8 sub-skills · SQL, ETL, viz
- 🔬 ccc-research · 8 sub-skills · competitive, lit review
- ↩️ Back to categories
(One more pass for ccc-mobile + ccc-makeover.)
On pick → invoke that domain's skill (e.g. ccc-design) which runs its own sub-picker.
Workflows (9) → cascade
Workflows = the click-first skills. Cascade 4-at-a-time:
First picker:
- 🚀 /ccc-start · first-run onboarding
- 📋 /ccc-plan · feature planning flow
- 🔨 /ccc-build · scaffold web/API/CLI/mobile
- 🔍 /ccc-review · audit diff/security/perf
Second picker:
- 🚢 /ccc-ship · deploy + PR workflow
- 🎓 /ccc-learn · extract patterns from session
- 🩻 /ccc-xray · full project health scorecard
- 📌 /ccc-linear · Linear issue board
Third picker:
- ⚙️ /ccc-fleet · parallel agent batch work
- ↩️ Back to categories
On pick → invoke the skill inline.
Agents (15) → cascade
Read ${CLAUDE_PLUGIN_ROOT}/agents/*.md frontmatter. Cascade 4-at-a-time across 4 pickers:
Pass 1: architect, builder, debugger, reviewer Pass 2: qa-engineer, security-auditor, performance-engineer, designer Pass 3: devops-engineer, product-manager, technical-writer, researcher Pass 4: data-analyst, content-strategist, fleet-worker, ↩️ Back
Each option:
label: "<emoji> <name>"description: "<first sentence of agent's frontmatter description>"preview: "Best for: <one-line use case>. Model: <opus|sonnet>. Trigger: /ccc-<flow>."
On pick → offer two actions via second AskUserQuestion:
- "Delegate a task to <agent> now" → prompts for task, calls Agent tool
- "Show me the full persona definition" → Read the .md file, render it
- "Which flows use this agent?" → Grep for the agent name in skills/
- "↩️ Back"
Show everything as grid → one-shot dump
Render a single markdown table, sorted alphabetically:
| Type | Name | One-liner |
|------|------|-----------|
| 🤖 agent | architect | System design, trade-offs, tech selection |
| 🎯 domain | ccc-design | 41 skills — UI/UX, animation, a11y |
| 🛠️ workflow | ccc-build | Scaffold web/API/CLI/mobile from spec |
| ... | ... | ... |
After the grid, one AskUserQuestion with 4 follow-ups: "Launch one" / "Filter by keyword" / "Browse categories instead" / "Done".
Anti-patterns — DO NOT do these
- ❌ Render a single markdown list with 30+ rows and ask the user to type a name
- ❌ Dump raw HTML in code blocks expecting artifact rendering
- ❌ Output ASCII banners or box-drawing tables for the catalog
- ❌ Put more than 4 options in a cascade
AskUserQuestion— the five-option root picker is the sole exception; always include a "Back" option on cascades - ❌ Read every agent .md eagerly up front — read on demand only
- ❌ Reference legacy CLI browse commands — this is Desktop-plugin only
Brand rules
- Always read
VERSIONfrom plugin.json — never hardcode. - One-line descriptions only in picker options — detail goes in the
previewfield. - Back option on every cascade past level 1 — lets users un-dive without restarting.
- Counts always live — read from filesystem, never hardcode "39 sub-skills" if the count can shift.
Dispatch after selection
After a user picks any skill or agent, the handler:
- Reads the SKILL.md (or agent .md) frontmatter
- Echoes one paragraph of what's about to happen
- Invokes the skill/agent inline
Never require the user to leave /ccc-browse and type another slash command. We stay in-flow.
Tips for the agent executing this skill
- Parallel the three count Bash calls into one. Saves a turn.
- When cascading, maintain a simple state in your responses: "Page 1 of 3 · 4 of 11 shown".
- If
argument-hintisdomains,workflows,agents, orall, skip the root picker and jump to that path. - Agent descriptions are in
${CLAUDE_PLUGIN_ROOT}/agents/*.mdfrontmatter — read the whole file only on user drill-in.
Bottom line: one-click Cockpit + four top-level categories → cascaded 4-at-a-time pickers → user drills in → we dispatch to the target skill. No scrolling, no typing, no numbered lists.
⚙️ Fable contract: plan before build · verifier ≠ worker · prove before alarm · loops need gates · leave durable state —
rules/fable-method.md