cf:route · v1.0.0 · 2026-09-01 · sha256 0c5cf8fb02c95a09

cf:route v1.0.0A

Immutable. This exact content is served forever at /api/v1/blob/0c5cf8fb02c95a09.

---
name: hapo:route
description: "Route ambiguous, multi-step, multi-domain, or risk-elevated work through the shortest valid chain of installed CafeKit skills and agents."
user-invocable: true
when_to_use: "Use when no single obvious installed skill covers the request; skip for an explicitly named skill, one clear low-risk intent, or a direct factual answer."
category: utilities
keywords: [routing, workflow, orchestration, delegation, risk]
argument-hint: "<task>"
metadata:
  author: haposoft
  version: "1.0.0"
---
# Route — proportional native routing

Choose the shortest valid path through capabilities that are installed now.
Route is a decision layer: it classifies, composes, and hands off; each selected
skill or agent still owns its domain contract and evidence.

## 1. Proportional gate

Apply these exits before discovery, classification, or delegation:

1. **Explicit installed skill:** when the user names a valid installed skill,
   invoke that skill directly. Do not reclassify it or add routing ceremony.
2. **One obvious intent:** when exactly one installed skill clearly covers a
   low-risk request, use it directly without constructing a chain.
3. **Direct factual conversation:** answer a factual question directly, or use
   the installed evidence-answering skill when repository or current evidence is
   needed. Do not create a route chain or spawn agents merely to answer it.
4. Continue in Route only for ambiguity, multiple dependent steps, multiple
   domains, elevated/high risk, or no obvious installed capability.

An explicitly named capability that is absent, invalid, duplicate, ambiguous,
or retired is not an installed route. Name the gap; do not invent a substitute
with broader authority.

## 2. Classify material work

Load `references/task-taxonomy.md`. Record exactly one class based on the final
deliverable, then record size (`trivial | standard | epic`), the highest-link
risk (`low | elevated | high`), and the number of material domains. Never
average risk down across links.

Use the runtime's live installed skill and agent catalogs. Never synthesize a
skill, agent, command, or optional bundle from examples in these instructions.
If inventory is unavailable, use only capabilities the runtime visibly exposes;
otherwise name the capability gap and keep the path inline where safe.

## 3. Compose the shortest valid chain

Load `references/chaining-patterns.md` only when two or more links are required.
Start from `understand -> decide -> execute -> verify -> deliver`, remove every
link whose output is already evidenced, and add a link only when a modifier
requires it. Every retained link has an entry condition, an observable exit
artifact, and exactly one owner.

Prefer the user-named skill, then the narrowest domain skill, then a generic
workflow skill. One intent has one primary skill. Supporting skills may produce
inputs for it but may not compete for ownership.

## 4. Agents and risk gates

Load `references/agent-timing.md` only when delegation may materially improve
fresh context, specialization, tool isolation, or safe parallel work. Discover
agents from the current runtime; if the preferred agent is missing, continue
inline when safe or return the named gap. Never synthesize an unavailable agent.

- `low`: the owning link's normal proof is sufficient.
- `elevated`: add explicit verification appropriate to the changed surface.
- `high`: require independent review and user confirmation before advancing
  past the high-risk gate. When an irreversible or external action is present,
  obtain that confirmation immediately before the action.

## 5. Authority is monotonic

The route may narrow user authority but never expand it. Read-only stays
read-only; diagnosis does not authorize repair; implementation does not
authorize commit, push, deploy, publish, or release; local work does not
authorize an external action. Stop before any mutation or delivery link that
the user did not already authorize and state what authority is missing.

## 6. Return and handoff

Return a compact route record before the first material handoff:

```text
Route: <class> | size=<trivial|standard|epic> | risk=<low|elevated|high> | domains=<n>
Chain: <owner: entry -> exit> [-> ...]
Gates: <authority, verification, confirmation, or named gap>
```

Do not claim that source text or installed projection proves live-model
adherence. That behavior remains `[UNPROVEN]` until a separate host run observes
it.