Skill Router
Route: return exactly one next skill or a truthful none, then stop.
Downstream skills own their procedures, artifacts, mutations, proof, and
completion.
Spine
- Inspect. Use the user's stated situation and visible repo state. Inspect
only a fact that could change the route.
- Clarify. If two routes remain plausible, ask one highest-leverage
question and wait.
- Route. Choose one exact route below. After a candidate wins, inspect only
its applicable installed
docs/agents/* contract when compatibility could
change the route; never load Repo Bootstrap guidance. If that contract is
missing, incompatible, or outdated, route to $repo-bootstrap instead. If no
available skill satisfies its entry contract, select none; never
substitute the nearest or weakest route.
- Stop. Return
Skill: <skill-name | none> and
Reason: <winning contract | exact unmet routing predicates>. Add
Precondition: <setup, fact, authority, or handoff need> only when the user
must satisfy one before starting the route. The user starts any selected
skill; downstream work remains unstarted.
none is a terminal abstention, not a recommendation. Use it only when current
facts make every available route ineligible, not instead of one allowed
clarification or a required $repo-bootstrap route.
Route Map
Shape
| Situation |
Route |
| One current-user-owned repo-backed decision needs live grilling and domain reconciliation as answers settle |
$grill-with-docs |
| The current user owns one bounded decision needing conversation-only stress-testing |
$grilling |
| A bounded destination has interdependent decisions, a non-conversational resolver, and needs multi-session tracker sequencing |
$wayfinder |
| One external stakeholder holds missing knowledge and needs an async discovery questionnaire |
$to-questionnaire |
| One bounded source-answerable question needs cited evidence |
$research |
| One design question needs disposable runnable evidence |
$prototype |
| A fresh context that can read the same work root needs a verified local pickup |
$handoff |
Unknown-owner tie-breaker: route a source-answerable fact to $research, a
runnable design choice to $prototype, an external-stakeholder gap to
$to-questionnaire, and a current-user decision to $grilling or
$grill-with-docs when domain meaning may change during the conversation.
Route to $wayfinder only after the destination is bounded and several
interdependent decisions or prerequisites, including at least one
non-conversational resolver, need a tracker-backed multi-session route.
Build
| Situation |
Route |
| Settled source needs a durable parent decision contract before ticket slicing |
$to-spec |
| A verified parent specification or equivalent settled bounded source needs a dependency-ordered implementation ticket graph and actionable frontier |
$to-tickets |
| One bounded settled implementation is selected directly or as a Ready-for-agent item |
$implement |
| One explicitly requested bounded campaign must repeatedly improve one frozen measurable runtime, resource, cost, capacity, or product outcome against a settled target |
$hillclimb |
| One explicitly requested bounded procedure has at least two dependent settled stages only the current human can perform, and scripting materially reduces secret exposure or configuration mistakes |
$wizard |
| One explicit fixed delivery set has at least two accepted implementation items and a non-empty ready frontier |
$parallel-implement |
Route one selected item to $implement; route an explicitly requested fixed
set of at least two accepted items with a non-empty ready frontier to
$parallel-implement. Parallel Implement checks dependencies, ownership, and
write effects before concurrent dispatch.
Route one settled optimization to $implement, a sustained runtime, resource,
cost, capacity, or product target to $hillclimb, measured code-shape or
maintainability reduction to $simplify-code, and unexplained slowness or
regression to $diagnosing-bugs.
Route agent-executable setup or maintained automation to $implement, one
manual action to no skill, and at least two dependent settled human-only stages
that benefit materially from an interactive script to $wizard. An unresolved
decision, source fact, or stakeholder answer remains with its shaping or
evidence owner.
Incoming Work And Quality
| Situation |
Route |
| Raw tracker issues or configured external PR/MR requests need sorting and readiness verification |
$triage |
| A hard, intermittent, performance, environment-only, production-only, or causally ambiguous failure needs dedicated investigation |
$diagnosing-bugs |
| The user explicitly requests TDD, test-first work, or RED-GREEN-REFACTOR, or applicable repository policy requires TDD, and one bounded behavior and independent oracle are settled |
$tdd |
| An active merge, rebase, cherry-pick, or revert is conflicted, or an index is unmerged |
$resolving-merge-conflicts |
| A branch, WIP, staged, since-X diff, PR, release candidate, or supported-risk candidate needs read-only judgment |
$change-review |
| The user explicitly requests high-assurance, heavy, or final review of one fixed complete code candidate |
$high-assurance-review |
| A repository needs a whole-system HTML map, one user-selected subsystem audit, or one user-selected audit-candidate analysis |
$audit-codebase |
| One user-selected existing-code target has accepted behavior and needs behavior-preserving simplification |
$simplify-code |
Existing-code tie-breaker: route repository-wide discovery or baseline
judgment to $audit-codebase; one user-selected target with accepted behavior to
$simplify-code; and one module, interface, or seam decision to
$codebase-design. Route a selected ready item to $implement, which invokes
TDD only under an explicit user or repository-policy requirement. Route one
standalone explicitly test-first behavior to $tdd, ordinary test,
integration-test, regression-test, or coverage work to $implement, uncertain
broken behavior that needs dedicated investigation to $diagnosing-bugs, and
an ordinary existing diff needing judgment to $change-review. Route to
$high-assurance-review only for an explicit heavy-review request; candidate
size, PR presence, release status, novelty, or risk does not qualify.
Conflict tie-breaker: route an active unresolved operation or unmerged index
to $resolving-merge-conflicts; an already-resolved candidate to review; a
routine post-operation repair to $implement; and a hard post-operation failure
that needs dedicated investigation to $diagnosing-bugs.
Design And Pack Maintenance
| Situation |
Route |
| Decide the architecture of one bounded module or interface |
$codebase-design |
| Resolve or capture domain terms, invariants, context boundaries, or relationships; assess or record an already-settled ADR candidate |
$domain-modeling |
| Create, edit, or audit instructions agents consume |
$writing-for-agents |
| Persistent coding-agent context needs memory admission, reflection, audit, or approved pruning |
$context-hygiene |
$domain-modeling and $codebase-design are shared disciplines. Route
unresolved code shape, interfaces, or module ownership to Codebase Design;
route project-specific semantic truth or an already-settled ADR candidate to
Domain Modeling. Otherwise let the owning workflow proceed directly.
Handoff / compact: $handoff starts a fresh same-root context; /compact
continues the current conversation.
1---2name: skill-router3description: Choose one next engineering skill when the user explicitly asks which skill to use or invokes $skill-router. Return that skill or none, then stop without starting it.4---56# Skill Router78**Route:** return exactly one next skill or a truthful `none`, then stop.9Downstream skills own their procedures, artifacts, mutations, proof, and10completion.1112## Spine13141. **Inspect.** Use the user's stated situation and visible repo state. Inspect15 only a fact that could change the route.162. **Clarify.** If two routes remain plausible, ask one highest-leverage17 question and wait.183. **Route.** Choose one exact route below. After a candidate wins, inspect only19 its applicable installed `docs/agents/*` contract when compatibility could20 change the route; never load Repo Bootstrap guidance. If that contract is21 missing, incompatible, or outdated, route to `$repo-bootstrap` instead. If no22 available skill satisfies its entry contract, select `none`; never23 substitute the nearest or weakest route.244. **Stop.** Return `Skill: <skill-name | none>` and25 `Reason: <winning contract | exact unmet routing predicates>`. Add26 `Precondition: <setup, fact, authority, or handoff need>` only when the user27 must satisfy one before starting the route. The user starts any selected28 skill; downstream work remains unstarted.2930`none` is a terminal abstention, not a recommendation. Use it only when current31facts make every available route ineligible, not instead of one allowed32clarification or a required `$repo-bootstrap` route.3334## Route Map3536### Shape3738| Situation | Route |39| --- | --- |40| One current-user-owned repo-backed decision needs live grilling and domain reconciliation as answers settle | `$grill-with-docs` |41| The current user owns one bounded decision needing conversation-only stress-testing | `$grilling` |42| A bounded destination has interdependent decisions, a non-conversational resolver, and needs multi-session tracker sequencing | `$wayfinder` |43| One external stakeholder holds missing knowledge and needs an async discovery questionnaire | `$to-questionnaire` |44| One bounded source-answerable question needs cited evidence | `$research` |45| One design question needs disposable runnable evidence | `$prototype` |46| A fresh context that can read the same work root needs a verified local pickup | `$handoff` |4748**Unknown-owner tie-breaker:** route a source-answerable fact to `$research`, a49runnable design choice to `$prototype`, an external-stakeholder gap to50`$to-questionnaire`, and a current-user decision to `$grilling` or51`$grill-with-docs` when domain meaning may change during the conversation.52Route to `$wayfinder` only after the destination is bounded and several53interdependent decisions or prerequisites, including at least one54non-conversational resolver, need a tracker-backed multi-session route.5556### Build5758| Situation | Route |59| --- | --- |60| Settled source needs a durable parent decision contract before ticket slicing | `$to-spec` |61| A verified parent specification or equivalent settled bounded source needs a dependency-ordered implementation ticket graph and actionable frontier | `$to-tickets` |62| One bounded settled implementation is selected directly or as a Ready-for-agent item | `$implement` |63| One explicitly requested bounded campaign must repeatedly improve one frozen measurable runtime, resource, cost, capacity, or product outcome against a settled target | `$hillclimb` |64| One explicitly requested bounded procedure has at least two dependent settled stages only the current human can perform, and scripting materially reduces secret exposure or configuration mistakes | `$wizard` |65| One explicit fixed delivery set has at least two accepted implementation items and a non-empty ready frontier | `$parallel-implement` |6667Route one selected item to `$implement`; route an explicitly requested fixed68set of at least two accepted items with a non-empty ready frontier to69`$parallel-implement`. Parallel Implement checks dependencies, ownership, and70write effects before concurrent dispatch.71Route one settled optimization to `$implement`, a sustained runtime, resource,72cost, capacity, or product target to `$hillclimb`, measured code-shape or73maintainability reduction to `$simplify-code`, and unexplained slowness or74regression to `$diagnosing-bugs`.7576Route agent-executable setup or maintained automation to `$implement`, one77manual action to no skill, and at least two dependent settled human-only stages78that benefit materially from an interactive script to `$wizard`. An unresolved79decision, source fact, or stakeholder answer remains with its shaping or80evidence owner.8182### Incoming Work And Quality8384| Situation | Route |85| --- | --- |86| Raw tracker issues or configured external PR/MR requests need sorting and readiness verification | `$triage` |87| A hard, intermittent, performance, environment-only, production-only, or causally ambiguous failure needs dedicated investigation | `$diagnosing-bugs` |88| The user explicitly requests TDD, test-first work, or RED-GREEN-REFACTOR, or applicable repository policy requires TDD, and one bounded behavior and independent oracle are settled | `$tdd` |89| An active merge, rebase, cherry-pick, or revert is conflicted, or an index is unmerged | `$resolving-merge-conflicts` |90| A branch, WIP, staged, since-X diff, PR, release candidate, or supported-risk candidate needs read-only judgment | `$change-review` |91| The user explicitly requests high-assurance, heavy, or final review of one fixed complete code candidate | `$high-assurance-review` |92| A repository needs a whole-system HTML map, one user-selected subsystem audit, or one user-selected audit-candidate analysis | `$audit-codebase` |93| One user-selected existing-code target has accepted behavior and needs behavior-preserving simplification | `$simplify-code` |9495**Existing-code tie-breaker:** route repository-wide discovery or baseline96judgment to `$audit-codebase`; one user-selected target with accepted behavior to97`$simplify-code`; and one module, interface, or seam decision to98`$codebase-design`. Route a selected ready item to `$implement`, which invokes99TDD only under an explicit user or repository-policy requirement. Route one100standalone explicitly test-first behavior to `$tdd`, ordinary test,101integration-test, regression-test, or coverage work to `$implement`, uncertain102broken behavior that needs dedicated investigation to `$diagnosing-bugs`, and103an ordinary existing diff needing judgment to `$change-review`. Route to104`$high-assurance-review` only for an explicit heavy-review request; candidate105size, PR presence, release status, novelty, or risk does not qualify.106107**Conflict tie-breaker:** route an active unresolved operation or unmerged index108to `$resolving-merge-conflicts`; an already-resolved candidate to review; a109routine post-operation repair to `$implement`; and a hard post-operation failure110that needs dedicated investigation to `$diagnosing-bugs`.111112### Design And Pack Maintenance113114| Situation | Route |115| --- | --- |116| Decide the architecture of one bounded module or interface | `$codebase-design` |117| Resolve or capture domain terms, invariants, context boundaries, or relationships; assess or record an already-settled ADR candidate | `$domain-modeling` |118| Create, edit, or audit instructions agents consume | `$writing-for-agents` |119| Persistent coding-agent context needs memory admission, reflection, audit, or approved pruning | `$context-hygiene` |120121`$domain-modeling` and `$codebase-design` are shared disciplines. Route122unresolved code shape, interfaces, or module ownership to Codebase Design;123route project-specific semantic truth or an already-settled ADR candidate to124Domain Modeling. Otherwise let the owning workflow proceed directly.125126**Handoff / compact:** `$handoff` starts a fresh same-root context; `/compact`127continues the current conversation.