# Sage Routing

> Choosing which Sage workflow fits a request. Use when the user asks what to run, which command or workflow to use, where to start, or when a request is ambiguous or spans multiple surfaces and needs to be routed to build, fix, architect, review, learn, reflect, or continue.

- Skill: `xoai/sage-routing` (Agent Skill)
- Install (CLI): `npx skillmds@latest add xoai/sage-routing`
- Raw SKILL.md: https://api.skillmd.com/api/skills/xoai/sage-routing/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: xoai (https://skillmd.com/u/xoai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/xoai/sage-routing

---


# Routing depth

The eager layer carries the keyword map — the trigger. This carries the rest:
what to do when the keyword map misses, how to present the choice, and what
routing looks like when it is done well.

## The three-layer chain

**Layer 1 — Keyword routing (deterministic, checked first).** The map in the
eager layer. One match → confirm. Multiple matches → present them as options.
No match → Layer 2.

**Layer 2 — Sub-agent classifier.** If the Task tool is available, spawn a
classifier sub-agent:

> Classify this request as UNDERSTAND (/research or /review --ux),
> ENVISION (/design or /architect), or DELIVER (/build or /fix).

Use the response to select the workflow → confirm. No Task tool → Layer 3.

**Layer 3 — In-context classification (fallback).**

| Shape of the request | Category | Workflow |
|---|---|---|
| Question, evaluation, "why" | UNDERSTAND | `/research`, `/review --ux` |
| Future, "should", "let's create" | ENVISION | `/design`, `/architect` |
| Action, "add", "implement" | DELIVER | `/build`, `/fix` |
| Ambiguous | — | present options from all matching categories |

## Confirmation (Zone 1)

Always, except for explicit slash commands and Tier 1 tasks:

```
Sage → [workflow]. [One-line rationale].

[1] [Workflow] — [skill → chain → arrows] ([N] steps)
[2] [Alternative] — [chain] ([N] steps)
[3] [Alternative] — [chain]

Pick 1-3, type / for commands, or describe what you need.
```

Show the chain and the step count. No time estimates — they are guesses
wearing a number's clothing.

## Worked examples

**"audit our checkout UX"** — keyword `audit` → `/review --ux`.

> Sage → review workflow. Evaluating the checkout experience.
>
> [1] Review — UX audit → evaluation (2 steps)
> [2] Research — interview → JTBD → opportunity map (3 steps)
> [3] Build — spec → plan → implement → verify
>
> Pick 1-3, type / for commands, or describe what you need.

**"the checkout page is throwing 500 errors"** — keyword `error` → `/fix`.
Single match, no ambiguity, so confirm and go:

> Sage → fix workflow. Investigating 500 errors on checkout.

**"improve our onboarding conversion rate"** — `conversion` → review,
`improve` → build. Two matches, so do not pick for the user:

> Sage: This could go two ways:
>
> [1] Review — UX audit → evaluation (2 steps)
> [2] Build — spec → plan → implement → verify
> [3] Research — interview → JTBD → opportunity map (3 steps)
>
> Pick 1-3, type / for commands, or describe what you need.

**"change the button color to blue"** — Tier 1. Just change it. Routing a
one-line change through a confirmation menu is the process becoming the point.

## The failure this prevents

The routing chain exists because the alternative is an agent that treats every
request as a DELIVER request — the default failure mode, and the one that ships
a fix for a problem nobody diagnosed. If a request is a question, answering it
with an implementation is not efficiency. It is a wrong answer that took work.

