diff --git a/plugin/templates/skills/subagent-orchestration/SKILL.md b/plugin/templates/skills/subagent-orchestration/SKILL.md index c8417a6..576baac 100644 --- a/plugin/templates/skills/subagent-orchestration/SKILL.md +++ b/plugin/templates/skills/subagent-orchestration/SKILL.md @@ -9,6 +9,15 @@ description: > # Subagent & orchestration guidelines +## Don't delegate what a command answers + +Before spawning anything, ask whether a grep, one shell command, or reading one file answers it. +If so, do that — a subagent costs its whole tool baseline plus a briefing, to return what a +single call would have. Delegate for a reason you can name: output you won't need in your own +context again, independent work that genuinely runs in parallel, or a fresh perspective on +something you've already formed an opinion about. Checking a claim against a handful of PRs or +issues is a lookup, not a fleet. + ## Right-size the model and effort Default to a **mid-tier model at medium effort**. Escalate to a larger model or higher effort only @@ -29,6 +38,11 @@ tokens per agent" — token cost is a real constraint. Model names change — pick by capability tier, not version. When unsure, start at mid and escalate only with a stated reason. +Set the model explicitly on every spawn. A spawn with no model inherits its parent's, and a nested +spawn inherits that again — so one top-tier orchestrator silently makes its entire subtree +top-tier, including the mechanical lookups. Most of an over-spent fleet is usually spawned by +other subagents, not by you. + ## Restrict each subagent's tools Every MCP tool schema a subagent loads is billed as a cache **write** on first use (~12.5× the @@ -36,6 +50,11 @@ read price). A file-editing agent that never calls Slack / Jira / cloud / browse load their schemas — give it a minimal tool list. This cuts the per-spawn baseline from ~100K+ tokens to a fraction, every spawn. +The default is the failure: a spawn that names no tool list inherits every tool the parent has, +MCP servers included, so restriction has to be explicit on every spawn. Name the few tools the +task needs — a web-research agent needs fetch and search, not a GitHub or Slack MCP — and give it +nothing else. + ## Brief each subagent to stand alone A subagent starts fresh and its final report is **not** shown to the user. So: