Automation shape routing
The operating loop a coding agent follows — and skills to orchestrate multi-agent systems.
npx -y skills add boshu2/agentops --skill automation-shape-routingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Front door for agent automation: choose inline, bounded fanout, reusable skill/workflow/gate, persistent agent-native workers, or explicit Gas City. Triggers: "build automation", "which orchestration shape", "should this use NTM".
SKILL.md
5.8 KB, as published. Nobody here has run it
Automation Shape Routing
Choose the smallest execution shape that preserves the required evidence and control. This skill routes; it does not build or start a substrate.
Ordered routing works because each rung is strictly cheaper to operate than the next: if the smallest shape truly preserves the evidence and control the task needs, every larger shape can only add coordination cost, never correctness.
Named failure mode — substrate romance: routing to persistent workers because the topology is interesting, not because any deciding axis demands it.
Anti-pattern: starting the chosen substrate as part of routing "to save a step". Corrective: return the one-line verdict and let the owner start under its own authority.
Critical Constraints
- Route only; do not start a substrate. Why: choosing an execution shape is a judgment step, while launching NTM, Agent Mail, or Gas City changes runtime state and requires separate operator authority.
- Prefer the smallest shape that preserves evidence. Why: persistence and coordination add recovery and ownership costs that one-shot work cannot repay.
- Partition write scopes before choosing concurrency. Why: a larger worker topology cannot make overlapping production writes safe.
Route in order
- One deliverable? Do it inline. Use a small in-session fresh-context fanout only when independent perspectives are the product. Do not create a reusable artifact for a one-off task.
- Reusable sequential procedure? Use
skill-builder. - Must-never-regress constraint? Route through
operationalizeto a gate. - Fixed typed DAG, headless, no attach/steer? Use
workflow-builderonly where that runtime is explicitly selected and available. - Persistent, attachable roles over caller-supplied packets? Use
agent-native. NTM is the pane adapter; Agent Mail coordinates only explicitly selected live actors. - Durable city of quests with GC-native supervision/store? Route to
using-gconly when the operator explicitly selects Gas City. GC is not an automatic fallback or anaoruntime enum.
Deciding axes
| Axis | Lightweight choice | Escalated choice |
|---|---|---|
| lifetime | current turn | persistent/attachable worker |
| topology | one writer or bounded fanout | durable role graph |
| control | no mid-run steering | observe/nudge/replace |
| output | one artifact | reusable skill/workflow/gate |
| store | caller-owned packet set | operator-selected GC quest store |
| contention | one writer | partition, then Agent Mail reservation |
Parallelism buys independence, not guaranteed speed. Refuse persistent orchestration for one-shot work, colliding write scopes, or a sequential chain that has no exploitable concurrency.
Handoff
Return exactly one of:
inlineorbounded-fanoutskill-builderworkflow-builderagent-nativewith a named reason persistent panes helpusing-gcwith explicit operator choiceoperationalize:gate
Name the deciding axis and invoke the owner. Do not copy the delegated workflow into this router.
Output Specification
-
Artifact directory: stdout only; this routing decision creates no file.
-
Filename convention: none. Emit exactly one routing-verdict line.
-
Serialization/schema format:
shape=<allowed-shape>; axis=<deciding-axis>; owner=<owning-skill>using one of the shapes listed under Handoff. -
Owner mapping:
inlineandbounded-fanoutusecurrent-agent;skill-builder,workflow-builder,agent-native, andusing-gcuse the same value for owner;operationalize:gateusesoperationalize. -
Validator command: validate a captured
$verdictas exactly one line with the declared shape/owner mapping:printf '%s\n' "$verdict" | awk ' NR > 1 { extra = 1 } { valid = ($0 ~ /^shape=(inline|bounded-fanout); axis=[^;]+; owner=current-agent$/ || $0 ~ /^shape=skill-builder; axis=[^;]+; owner=skill-builder$/ || $0 ~ /^shape=workflow-builder; axis=[^;]+; owner=workflow-builder$/ || $0 ~ /^shape=agent-native; axis=[^;]+; owner=agent-native$/ || $0 ~ /^shape=using-gc; axis=[^;]+; owner=using-gc$/ || $0 ~ /^shape=operationalize:gate; axis=[^;]+; owner=operationalize$/) } END { exit !(NR == 1 && !extra && valid) } ' -
Downstream handoff: invoke the named owner only after returning the verdict;
inlineremains in the current agent andbounded-fanoutremains in-session.
Quality Rubric
- The verdict names exactly one allowed shape and one deciding axis.
- Persistent or city-shaped routes cite the operator's explicit selection.
- Concurrent routes state that production write scopes do not overlap.
- The router delegates to the owner without copying or starting its workflow.