/skill-router
Help users discover available skills and help Claudia pick the right one when a request is ambiguous. Two surfaces: discovery (user says \"what can you do?\", \"/skills\", \"show me your skills\") returns a categorized list; disambiguation (user's request matches 2+ skills)
Claude Code
$ npx -y skills add kbanc85/claudia --skill skill-router --agent claude-code
Codex
$ npx skills add kbanc85/claudia --skill skill-router -a codex -y
Cursor
$ npx skills add kbanc85/claudia --skill skill-router -a cursor -y
Gemini CLI
$ npx skills add kbanc85/claudia --skill skill-router -a gemini-cli -y
GitHub Copilot
$ npx skills add kbanc85/claudia --skill skill-router -a github-copilot -y
OpenCode
$ npx skills add kbanc85/claudia --skill skill-router -a opencode -y
Windsurf
$ npx skills add kbanc85/claudia --skill skill-router -a windsurf -y
SKILL.md
skill-router.SKILL.mdname: skill-router
description: "Help users discover available skills and help Claudia pick the right one when a request is ambiguous. Two surfaces: discovery (user says \"what can you do?\", \"/skills\", \"show me your skills\") returns a categorized list; disambiguation (user's request matches 2+ skills) names the candidates and proceeds with the canonical one. Use when user asks about Claudia's capabilities, requests something ambiguous between adjacent skills, or seems unsure which skill they need."
effort-level: low
invocation: contextual
Skill Router
Two jobs: help the user find the skill they need, and help me (Claudia) pick the right skill when their request straddles two or more.
Why this exists
The shipped catalog has ~42 user-facing skills. Two common failure modes:
1. **Users don't know what's available.** They type "morning brief" because they've seen `/morning-brief` somewhere, but they don't know `/inbox-check`, `/pipeline-review`, or `/what-am-i-missing` exist. Friction. 2. **Ambiguous requests fire the wrong skill.** "Summarize this" could be `summarize-doc`, `capture-meeting`, or `file-document` depending on what comes next. I sometimes pick the wrong one, the user gets the wrong output, both of us waste a turn.
This skill addresses both.
Surface 1: Discovery
When the user says "what can you do?", "/skills", "show me your skills", "list commands", "what skills do you have":
Respond with a categorized list. Keep it scannable:
**📋 Daily flow**
- /morning-brief start-of-day digest
- /inbox-check email triage across configured accounts
- /meeting-prep [person] one-page brief before a call
- /capture-meeting process meeting notes after a call
- /follow-up-draft draft a post-meeting thank-you
**📊 Reviews & reflection**
- /weekly-review end-of-week reflection
- /growth-check monthly or quarterly self-development
- /what-am-i-missing overdue, cooling, blind-spot sweep
**💼 Pipeline & business**
- /pipeline-review active opportunities + stalled items
- /client-health health check across active clients
- /financial-snapshot revenue, expenses, cash position
**📚 Knowledge & memory**
- /memory-audit what I know about an entity
- /memory-health memory system stats
- /wiki write or update a synthesized wiki page
- /map-connections extract relationships across files
- /deep-context full-context analysis for important decisions
**✍️ Drafting**
- /draft-reply general email response
- /summarize-doc executive summary of a document
- /auto-research iterate on a draft until it scores well
**🏗 Setup**
- /new-person create a relationship file
- /new-workspace new project or client workspace
- /file-document save a document with entity links
- /ingest-sources batch-process multiple sources
- /diagnose troubleshoot memory connectivity
Don't list every skill. List the ones a user is most likely to invoke directly. Internal skills (proactive ones like `commitment-detector`, `pattern-recognizer`, `risk-surfacer`) fire on their own and don't need to be in the discovery list.
If the user asks `/skills <topic>` or "what skills are about <topic>", filter the list to skills whose names or descriptions match, and explain the cluster. Example for `/skills meeting`:
Three skills for meetings, in order of when they fire:
- /meeting-prep [person] → before the call (one-page brief)
- /capture-meeting → during or after (process notes)
- /follow-up-draft → after (post-meeting email)
Surface 2: Disambiguation
When the user's request matches 2+ skills, name the candidates briefly and proceed with the canonical one. Don't make the user choose; choose for them, and tell them what you chose.
How to detect ambiguity
A request is ambiguous when:
- The trigger phrase appears in 2+ skill descriptions
- The request is in one of the known overlap clusters (see references/overlap-clusters.md)
- The artifact type is ambiguous (a "transcript" could be a meeting transcript → `capture-meeting`, or a research interview → `ingest-sources`, or just a generic document → `file-document`)
How to disambiguate
Pattern: "Sounds like X or Y. I'll do X. Say so if you wanted Y."
Examples:
> User: "Help me draft a follow-up" > Claudia: "Sounds like either `draft-reply` (general response) or `follow-up-draft` (post-meeting thank-you with meeting context). Was this from a call we had? If yes, `follow-up-draft`; if not, `draft-reply`. Defaulting to `follow-up-draft` since you said 'follow-up'."
> User: "Summarize this meeting" > Claudia: "I'll use `capture-meeting` (extracts decisions, commitments, blockers from meeting notes). If you wanted a one-shot prose summary without filing as memories, say `summarize-doc` instead."
> User: "What's going on?" > Claudia: "Default for that phrasing is `morning-brief`. Was that what you wanted, or did you mean `/what-am-i-missing` (risks and gaps), `pipeline-review` (deal status), or just an answer about a specific entity? Going with `morning-brief`."
The pattern: pick the canonical, name the alternative, run.
When NOT to disambiguate
- The request is unambiguous. Don't manufacture options.
- The user has been specific. "Draft a reply to this email" is `draft-reply`, no need to mention `follow-up-draft`.
- The disambiguation explanation would be longer than the actual response. For short tasks, just do the canonical thing and let the user redirect.
Overlap clusters (the canonical map)
See `references/overlap-clusters.md` for the full map. The clusters I check most often:
| Cluster | Canonical | Adjacent | |---------|-----------|----------| | Outbound messages | `draft-reply` (general), `follow-up-draft` (post-meeting) | `inbox-check` (triage before drafting) | | Memory views | `memory-audit` (content), `memory-health
Read more
name: skill-router description: "Help users discover available skills and help Claudia pick the right one when a request is ambiguous. Two surfaces: discovery (user says \"what can you do?\", \"/skills\", \"show me your skills\") returns a categorized list; disambiguation (user's request matches 2+ skills) names the candidates and proceeds with the canonical one. Use when user asks about Claudia's capabilities, requests something ambiguous between adjacent skills, or seems unsure which skill they need." effort-level: low invocation: contextual
Skill Router
Two jobs: help the user find the skill they need, and help me (Claudia) pick the right skill when their request straddles two or more.
Why this exists
The shipped catalog has ~42 user-facing skills. Two common failure modes:
1. **Users don't know what's available.** They type "morning brief" because they've seen `/morning-brief` somewhere, but they don't know `/inbox-check`, `/pipeline-review`, or `/what-am-i-missing` exist. Friction. 2. **Ambiguous requests fire the wrong skill.** "Summarize this" could be `summarize-doc`, `capture-meeting`, or `file-document` depending on what comes next. I sometimes pick the wrong one, the user gets the wrong output, both of us waste a turn.
This skill addresses both.
Surface 1: Discovery
When the user says "what can you do?", "/skills", "show me your skills", "list commands", "what skills do you have":
Respond with a categorized list. Keep it scannable:
**📋 Daily flow** - /morning-brief start-of-day digest - /inbox-check email triage across configured accounts - /meeting-prep [person] one-page brief before a call - /capture-meeting process meeting notes after a call - /follow-up-draft draft a post-meeting thank-you **📊 Reviews & reflection** - /weekly-review end-of-week reflection - /growth-check monthly or quarterly self-development - /what-am-i-missing overdue, cooling, blind-spot sweep **💼 Pipeline & business** - /pipeline-review active opportunities + stalled items - /client-health health check across active clients - /financial-snapshot revenue, expenses, cash position **📚 Knowledge & memory** - /memory-audit what I know about an entity - /memory-health memory system stats - /wiki write or update a synthesized wiki page - /map-connections extract relationships across files - /deep-context full-context analysis for important decisions **✍️ Drafting** - /draft-reply general email response - /summarize-doc executive summary of a document - /auto-research iterate on a draft until it scores well **🏗 Setup** - /new-person create a relationship file - /new-workspace new project or client workspace - /file-document save a document with entity links - /ingest-sources batch-process multiple sources - /diagnose troubleshoot memory connectivity
Don't list every skill. List the ones a user is most likely to invoke directly. Internal skills (proactive ones like `commitment-detector`, `pattern-recognizer`, `risk-surfacer`) fire on their own and don't need to be in the discovery list.
If the user asks `/skills <topic>` or "what skills are about <topic>", filter the list to skills whose names or descriptions match, and explain the cluster. Example for `/skills meeting`:
Three skills for meetings, in order of when they fire: - /meeting-prep [person] → before the call (one-page brief) - /capture-meeting → during or after (process notes) - /follow-up-draft → after (post-meeting email)
Surface 2: Disambiguation
When the user's request matches 2+ skills, name the candidates briefly and proceed with the canonical one. Don't make the user choose; choose for them, and tell them what you chose.
How to detect ambiguity
A request is ambiguous when:
- The trigger phrase appears in 2+ skill descriptions
- The request is in one of the known overlap clusters (see references/overlap-clusters.md)
- The artifact type is ambiguous (a "transcript" could be a meeting transcript → `capture-meeting`, or a research interview → `ingest-sources`, or just a generic document → `file-document`)
How to disambiguate
Pattern: "Sounds like X or Y. I'll do X. Say so if you wanted Y."
Examples:
> User: "Help me draft a follow-up" > Claudia: "Sounds like either `draft-reply` (general response) or `follow-up-draft` (post-meeting thank-you with meeting context). Was this from a call we had? If yes, `follow-up-draft`; if not, `draft-reply`. Defaulting to `follow-up-draft` since you said 'follow-up'."
> User: "Summarize this meeting" > Claudia: "I'll use `capture-meeting` (extracts decisions, commitments, blockers from meeting notes). If you wanted a one-shot prose summary without filing as memories, say `summarize-doc` instead."
> User: "What's going on?" > Claudia: "Default for that phrasing is `morning-brief`. Was that what you wanted, or did you mean `/what-am-i-missing` (risks and gaps), `pipeline-review` (deal status), or just an answer about a specific entity? Going with `morning-brief`."
The pattern: pick the canonical, name the alternative, run.
When NOT to disambiguate
- The request is unambiguous. Don't manufacture options.
- The user has been specific. "Draft a reply to this email" is `draft-reply`, no need to mention `follow-up-draft`.
- The disambiguation explanation would be longer than the actual response. For short tasks, just do the canonical thing and let the user redirect.
Overlap clusters (the canonical map)
See `references/overlap-clusters.md` for the full map. The clusters I check most often:
| Cluster | Canonical | Adjacent | |---------|-----------|----------| | Outbound messages | `draft-reply` (general), `follow-up-draft` (post-meeting) | `inbox-check` (triage before drafting) | | Memory views | `memory-audit` (content), `memory-health
Terminal-based AI chief of staff. Remembers relationships, tracks commitments, helps you think strategically. Runs on Claude Code.
Other skills on claudia.
More skills from other plugins.
i-have-adhd
Shape output for a reader with ADHD: lead with the next action, number multi-step work, restate state across turns, suppress…
distilly
Set up the owner profile so a personal agent knows who it works for (first-run setup, \"get to know me\"), or distill colleague,…
Questions about skill-router.
- Which coding agents can use skill-router?
- skill-router installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

