Intent Detection — Workflow Routing
When user describes work WITHOUT specifying a /skill:phx-* command, analyze their intent and suggest the appropriate workflow BEFORE starting work.
Hard guard — check FIRST: if the message starts with any slash command
(/skill:phx-*, /skill:ecto-*, /skill:lv-*, or any other /command), this skill does not apply.
Follow the invoked command directly — no routing analysis, no suggestion, zero
output from this skill.
Routing Table
| Signal |
Detected Intent |
Suggest |
| "bug", "error", "crash", "failing", "broken", stack trace |
Bug investigation |
/skill:phx-investigate |
| "brainstorm", "explore idea", "not sure what I need", "vague idea", "let's discuss", "how to approach" |
Ideation/requirements |
/skill:phx-brainstorm |
| "add", "implement", "build", "create" + multi-step |
New feature |
/skill:phx-plan |
| "review", "check", "audit" code |
Code review |
/skill:phx-review |
| "fix" + small/specific scope |
Quick fix |
handle directly or /skill:phx-quick |
| "refactor", "clean up", "improve" |
Refactoring |
/skill:phx-plan (needs scope) |
| "research", "how to", "what's the best" |
Research |
/skill:phx-research |
| "evaluate", "compare", "adopt", "library", "should we use" |
Library evaluation |
/skill:phx-research --library |
| "test", "spec", "coverage" |
Testing |
handle directly or /skill:phx-plan |
| Describes 1-2 file changes, < 50 lines |
Small task |
handle directly |
| "deploy", "release", "production" |
Deployment |
/skill:phx-verify then deploy |
| "performance", "slow", "N+1", "memory" |
Performance |
/skill:phx-perf |
| "PR review", "review comments", "address feedback", "respond to PR" |
PR response |
/skill:phx-pr-review |
| "that worked", "fixed it", "problem solved" |
Knowledge capture |
/skill:phx-compound |
| "enhance plan", "more detail", "deepen" |
Plan enhancement |
/skill:phx-plan --existing |
| "triage", "which findings", "prioritize fixes" |
Finding triage |
/skill:phx-triage |
Behavior
- Read user's first message
- Match against routing table (use keyword + context signals, not exact match)
- If match found with multi-step workflow: "This looks like [intent]. I'd suggest
[command] — want me to run it, or should I just dive in?"
- If trivial task (typo, single-line fix, config change): skip suggestion, just do it
- If user already specified a
/skill:phx-* command: follow it, don't re-suggest
- NEVER block the user — suggestion only, not mandatory
Confidence Signals
High confidence (suggest immediately):
- Stack trace or error message pasted →
/skill:phx-investigate
- "Add [feature] with [multiple components]" →
/skill:phx-plan
- "Review my changes" or "check this PR" →
/skill:phx-review
Medium confidence (suggest with caveat):
- "Fix [thing]" — could be quick or complex, suggest based on scope description
- "Update [thing]" — could be small edit or refactor
Low confidence (just do it):
- Single file mentioned, clear change
- "Change X to Y"
- Configuration or dependency updates
Complexity Signals
When a task matches a workflow command, check complexity before suggesting:
Trivial signals (suggest /skill:phx-quick or handle directly):
- Single file mentioned explicitly
- "exclude X from Y", "add X to config", "rename", "change X to Y"
- Problem + solution both stated ("X is wrong, change to Y")
- One-line fix described
Complex signals (suggest /skill:phx-plan or /skill:phx-investigate):
- 3+ modules or files mentioned
- "intermittent", "race condition", "sometimes", "random"
- Stack trace with 5+ frames
- "across", "all", "every" (scope indicators)
Override rule: If user invokes /skill:phx-full but task matches trivial signals:
"This looks like a quick fix. Want /skill:phx-quick instead, or stick with the full cycle?"
Iron Laws
- NEVER block on suggestion — If user starts explaining, just do the work
- One suggestion max — Don't re-suggest if user ignores first suggestion
- Commands are shortcuts, not gates — All work can be done without commands
Routing Logic Example
if has_slash_command($ARGUMENTS) -> follow command directly
elif has_stack_trace(message) -> suggest /skill:phx-investigate
elif matches("add|build|implement", message) and multi_step -> suggest /skill:phx-plan
elif matches("fix", message) and small_scope -> handle directly or /skill:phx-quick
elif matches("review|audit", message) -> suggest /skill:phx-review
else -> handle directly (no suggestion)
Integration
This skill is consulted at session start. It works alongside:
- SessionStart hook (shows plugin loaded message)
- CLAUDE.md routing instructions (passive reference)
- Individual workflow skills (activated by commands)
1---2name: intent-detection3description: Route ambiguous or mixed Phoenix/LiveView/Ecto requests before choosing4 a workflow. Use when user is unsure where to start/how to approach work, asks for5 the right workflow, or combines intents such as fixing and refactoring. NOT for6 a clear task.7---89# Intent Detection — Workflow Routing1011When user describes work WITHOUT specifying a `/skill:phx-*` command, analyze their intent and suggest the appropriate workflow BEFORE starting work.1213**Hard guard — check FIRST**: if the message starts with any slash command14(`/skill:phx-*`, `/skill:ecto-*`, `/skill:lv-*`, or any other `/command`), this skill does not apply.15Follow the invoked command directly — no routing analysis, no suggestion, zero16output from this skill.1718## Routing Table1920| Signal | Detected Intent | Suggest |21|--------|----------------|---------|22| "bug", "error", "crash", "failing", "broken", stack trace | Bug investigation | `/skill:phx-investigate` |23| "brainstorm", "explore idea", "not sure what I need", "vague idea", "let's discuss", "how to approach" | Ideation/requirements | `/skill:phx-brainstorm` |24| "add", "implement", "build", "create" + multi-step | New feature | `/skill:phx-plan` |25| "review", "check", "audit" code | Code review | `/skill:phx-review` |26| "fix" + small/specific scope | Quick fix | handle directly or `/skill:phx-quick` |27| "refactor", "clean up", "improve" | Refactoring | `/skill:phx-plan` (needs scope) |28| "research", "how to", "what's the best" | Research | `/skill:phx-research` |29| "evaluate", "compare", "adopt", "library", "should we use" | Library evaluation | `/skill:phx-research --library` |30| "test", "spec", "coverage" | Testing | handle directly or `/skill:phx-plan` |31| Describes 1-2 file changes, < 50 lines | Small task | handle directly |32| "deploy", "release", "production" | Deployment | `/skill:phx-verify` then deploy |33| "performance", "slow", "N+1", "memory" | Performance | `/skill:phx-perf` |34| "PR review", "review comments", "address feedback", "respond to PR" | PR response | `/skill:phx-pr-review` |35| "that worked", "fixed it", "problem solved" | Knowledge capture | `/skill:phx-compound` |36| "enhance plan", "more detail", "deepen" | Plan enhancement | `/skill:phx-plan --existing` |37| "triage", "which findings", "prioritize fixes" | Finding triage | `/skill:phx-triage` |3839## Behavior40411. Read user's first message422. Match against routing table (use keyword + context signals, not exact match)433. If match found with multi-step workflow: "This looks like [intent]. I'd suggest `[command]` — want me to run it, or should I just dive in?"444. If trivial task (typo, single-line fix, config change): skip suggestion, just do it455. If user already specified a `/skill:phx-*` command: follow it, don't re-suggest466. **NEVER block the user** — suggestion only, not mandatory4748## Confidence Signals4950High confidence (suggest immediately):5152- Stack trace or error message pasted → `/skill:phx-investigate`53- "Add [feature] with [multiple components]" → `/skill:phx-plan`54- "Review my changes" or "check this PR" → `/skill:phx-review`5556Medium confidence (suggest with caveat):5758- "Fix [thing]" — could be quick or complex, suggest based on scope description59- "Update [thing]" — could be small edit or refactor6061Low confidence (just do it):6263- Single file mentioned, clear change64- "Change X to Y"65- Configuration or dependency updates6667## Complexity Signals6869When a task matches a workflow command, check complexity before suggesting:7071**Trivial signals** (suggest `/skill:phx-quick` or handle directly):7273- Single file mentioned explicitly74- "exclude X from Y", "add X to config", "rename", "change X to Y"75- Problem + solution both stated ("X is wrong, change to Y")76- One-line fix described7778**Complex signals** (suggest `/skill:phx-plan` or `/skill:phx-investigate`):7980- 3+ modules or files mentioned81- "intermittent", "race condition", "sometimes", "random"82- Stack trace with 5+ frames83- "across", "all", "every" (scope indicators)8485**Override rule**: If user invokes `/skill:phx-full` but task matches trivial signals:86"This looks like a quick fix. Want `/skill:phx-quick` instead, or stick with the full cycle?"8788## Iron Laws89901. **NEVER block on suggestion** — If user starts explaining, just do the work912. **One suggestion max** — Don't re-suggest if user ignores first suggestion923. **Commands are shortcuts, not gates** — All work can be done without commands9394## Routing Logic Example9596```97if has_slash_command($ARGUMENTS) -> follow command directly98elif has_stack_trace(message) -> suggest /skill:phx-investigate99elif matches("add|build|implement", message) and multi_step -> suggest /skill:phx-plan100elif matches("fix", message) and small_scope -> handle directly or /skill:phx-quick101elif matches("review|audit", message) -> suggest /skill:phx-review102else -> handle directly (no suggestion)103```104105## Integration106107This skill is consulted at session start. It works alongside:108109- SessionStart hook (shows plugin loaded message)110- CLAUDE.md routing instructions (passive reference)111- Individual workflow skills (activated by commands)