boshu2/automation-shape-routing
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".
npx skills add https://github.com/boshu2/agentops --skill 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.
a judgment step, while launching NTM, Agent Mail, or Gas City changes runtime
state and requires separate operator authority.
coordination add recovery and ownership costs that one-shot work cannot repay.
topology cannot make overlapping production writes safe.
fanout only when independent perspectives are the product. Do not create a
reusable artifact for a one-off task.
skill-builder.operationalize to a gate.workflow-builder onlywhere that runtime is explicitly selected and available.
agent-native. NTM is the pane adapter; Agent Mail coordinates only
explicitly selected live actors.
using-gc only when the operator explicitly selects Gas City. GC is not an
automatic fallback or an ao runtime enum.
| 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.
Return exactly one of:
inline or bounded-fanoutskill-builderworkflow-builderagent-native with a named reason persistent panes helpusing-gc with explicit operator choiceoperationalize:gateName the deciding axis and invoke the owner. Do not copy the delegated workflow
into this router.
owner=<owning-skill>` using one of the shapes listed under Handoff.
inline and bounded-fanout use current-agent;skill-builder, workflow-builder, agent-native, and using-gc use the
same value for owner; operationalize:gate uses operationalize.
$verdict as exactly one linewith 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) }
'
inline remains in the current agent and bounded-fanout remains in-session.
Take boshu2/automation-shape-routing from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.