dispatch
Dispatch
The setup-auto-route hook classifies every prompt with classifier.dev before you start reasoning about it, and writes its verdict into context as a Route: line, but only when the verdict changes from the previous prompt in the session. Reading that line before reasoning about how to do the work is the point: reason first and the verdict bends toward whatever you already started planning, which is exactly what a hook running ahead of you is meant to prevent.
Route at the top only
| Situation | What happens |
|---|---|
| A fresh unit of engineering work arrives | Route it |
| You are already running inside a subagent | Do the work you were handed |
| The turn builds on work already in this window | Continue here: a subagent starts without that context |
| The user named an agent or a skill | Use the one they named |
| The turn is a question, a chat, or a one-liner | Answer it |
The hook announces change only: a same-window follow-up whose verdict holds gets no line, and neither does a transition to Undefined. Silence therefore covers both continuation and the hook failing open (classifier timeout, error, or 429). This table is what sorts the rest: only you, in-window, can tell a fresh unit of work from a continuation, a subagent, or a named target. The hook has none of that judgement, which is why it stops at a recommendation rather than dispatching itself.
Step 1: Read the recommendation
The hook's systemMessage sits in context, attached to this same prompt, shaped like: