Engineering router
Answer four questions in order, then act. Do not print the reasoning unless asked.
1. Is this trivial?
A typo, a string change, a rename, a one-file edit with an obvious shape, or a
question with a factual answer: do the work directly. No owner, no orchestration.
Passive knowledge overlays still apply. Most tasks stop here.
2. Which lifecycle phase is this?
Pick exactly one owner, or none. Never two.
| The user wants |
Owner |
| to explore a vague or ambitious idea, decide scope |
ce-brainstorm |
| a plan, a breakdown, a spec turned into steps |
ce-plan |
| a plan or clear build request executed |
ce-work |
| something broken explained and fixed |
ce-debug |
| recently written code tightened before review |
ce-simplify-code |
| code, a branch, or a PR reviewed |
ce-code-review |
| feedback already on a PR resolved |
ce-resolve-pr-feedback |
| the change committed, pushed, shipped |
ce-commit / ce-commit-push-pr |
| the lesson from this work kept |
ce-compound |
Compound Engineering owns every phase by default. A non-Compound workflow becomes
the owner only when the request is a genuinely different operation — a dependency
audit, a static-analysis scan, a deployment — not a differently worded version of
the same phase.
A single request that spans phases still gets one owner at a time. Finish the
phase, then re-enter here for the next one.
3. Which supporting skills augment it?
Supporting skills advise the owner. They never replace it, and they never run a
competing loop over the same code.
- React or Next.js is being written or refactored →
vercel-react-best-practices.
- A reusable component's prop interface is being designed →
vercel-composition-patterns.
- The work turns on what a term means, or on a CONTEXT.md or ADR →
domain-modeling.
- The work turns on where a boundary or interface belongs →
codebase-design.
- The user asked for test-first, or the change is best proven by tests →
tdd.
- An interface surface needs an accessibility or UX judgment →
web-design-guidelines.
4. Does a specialist need to be escalated?
Escalate when the evidence is there, not because the topic sounds serious.
- Debugging has produced inconclusive hypotheses, or the user says earlier fixes
failed → hand the diagnosis to
diagnosing-bugs and keep ce-debug as owner.
- The change touches authentication, authorization, permissions, secrets,
cryptography, payments or value transfer, untrusted input, deserialization, file
upload, external calls, unsafe or native boundaries, dependency updates, or
security configuration → run
differential-review alongside the review owner.
A review request with no such surface gets the review owner alone.
- A vulnerability or bad pattern has just been found →
variant-analysis for
its siblings, fp-check before reporting a finding as real.
- Dependencies, lockfiles, or third-party package risk are the subject →
supply-chain-risk-auditor, directly. Do not wrap a dependency audit in the
feature lifecycle.
- A CI workflow invokes an AI agent →
agentic-actions-auditor.
- An API or config surface is being judged for misuse-resistance →
sharp-edges.
Expensive and side-effecting workflows are never auto-selected. codeql,
audit-context-building, vercel-optimize, code-review (the two-axis second
opinion), and lfg run only when the user names them.
Invariants
- One lifecycle owner per phase. If two candidates fit, Compound wins.
- Supporting skills augment; they do not open their own loop over the same code.
- A knowledge skill firing is not a phase being owned. Reference and overlay
skills — API references, SDK guides, framework rules — load knowledge; they do
not run the work. When one of them is the only thing that fired on a non-trivial
task, an owner is still missing. Pick it. This bites hardest on LLM and cloud-SDK
work, where a reference skill claims the prompt and the phase silently goes
unowned.
- Escalation needs evidence — a named surface, a failed attempt, a found bug.
- Trivial work gets no orchestration at all.
1---2name: engineering-router3description: Decide which engineering skills should run before starting non-trivial engineering work — a feature, a refactor, a bug, a review, or an audit — when more than one installed skill could plausibly claim it. Picks at most one lifecycle owner, names the supporting skills that augment it, and says when to escalate to a security or diagnosis specialist. Skip for a one-line edit, a direct question, or work already inside a chosen skill.4---56# Engineering router78Answer four questions in order, then act. Do not print the reasoning unless asked.910## 1. Is this trivial?1112A typo, a string change, a rename, a one-file edit with an obvious shape, or a13question with a factual answer: **do the work directly.** No owner, no orchestration.14Passive knowledge overlays still apply. Most tasks stop here.1516## 2. Which lifecycle phase is this?1718Pick **exactly one** owner, or none. Never two.1920| The user wants | Owner |21| --- | --- |22| to explore a vague or ambitious idea, decide scope | `ce-brainstorm` |23| a plan, a breakdown, a spec turned into steps | `ce-plan` |24| a plan or clear build request executed | `ce-work` |25| something broken explained and fixed | `ce-debug` |26| recently written code tightened before review | `ce-simplify-code` |27| code, a branch, or a PR reviewed | `ce-code-review` |28| feedback already on a PR resolved | `ce-resolve-pr-feedback` |29| the change committed, pushed, shipped | `ce-commit` / `ce-commit-push-pr` |30| the lesson from this work kept | `ce-compound` |3132Compound Engineering owns every phase by default. A non-Compound workflow becomes33the owner only when the request is a genuinely different operation — a dependency34audit, a static-analysis scan, a deployment — not a differently worded version of35the same phase.3637**A single request that spans phases still gets one owner at a time.** Finish the38phase, then re-enter here for the next one.3940## 3. Which supporting skills augment it?4142Supporting skills advise the owner. They never replace it, and they never run a43competing loop over the same code.4445- **React or Next.js is being written or refactored** → `vercel-react-best-practices`.46- **A reusable component's prop interface is being designed** → `vercel-composition-patterns`.47- **The work turns on what a term means, or on a CONTEXT.md or ADR** → `domain-modeling`.48- **The work turns on where a boundary or interface belongs** → `codebase-design`.49- **The user asked for test-first, or the change is best proven by tests** → `tdd`.50- **An interface surface needs an accessibility or UX judgment** → `web-design-guidelines`.5152## 4. Does a specialist need to be escalated?5354Escalate when the evidence is there, not because the topic sounds serious.5556- **Debugging has produced inconclusive hypotheses, or the user says earlier fixes57 failed** → hand the diagnosis to `diagnosing-bugs` and keep `ce-debug` as owner.58- **The change touches authentication, authorization, permissions, secrets,59 cryptography, payments or value transfer, untrusted input, deserialization, file60 upload, external calls, unsafe or native boundaries, dependency updates, or61 security configuration** → run `differential-review` alongside the review owner.62 A review request with no such surface gets the review owner alone.63- **A vulnerability or bad pattern has just been found** → `variant-analysis` for64 its siblings, `fp-check` before reporting a finding as real.65- **Dependencies, lockfiles, or third-party package risk are the subject** →66 `supply-chain-risk-auditor`, directly. Do not wrap a dependency audit in the67 feature lifecycle.68- **A CI workflow invokes an AI agent** → `agentic-actions-auditor`.69- **An API or config surface is being judged for misuse-resistance** → `sharp-edges`.7071Expensive and side-effecting workflows are never auto-selected. `codeql`,72`audit-context-building`, `vercel-optimize`, `code-review` (the two-axis second73opinion), and `lfg` run only when the user names them.7475## Invariants76771. One lifecycle owner per phase. If two candidates fit, Compound wins.782. Supporting skills augment; they do not open their own loop over the same code.793. **A knowledge skill firing is not a phase being owned.** Reference and overlay80 skills — API references, SDK guides, framework rules — load knowledge; they do81 not run the work. When one of them is the only thing that fired on a non-trivial82 task, an owner is still missing. Pick it. This bites hardest on LLM and cloud-SDK83 work, where a reference skill claims the prompt and the phase silently goes84 unowned.854. Escalation needs evidence — a named surface, a failed attempt, a found bug.865. Trivial work gets no orchestration at all.