SKILL 25 / ORCHESTRATION · ROUNDUP

The Orchestration Roundup

Four primitives, two axes: who fires it · where its context lives — answer those two and the choice makes itself

2026-09-26 · BigCat

This is the easiest class to buy wrong: people install "multi-agent" as if it were a stronger skill. Subagents, hooks, slash commands and plugins solve four unrelated problems, and picking the wrong one doesn't give you a worse result — it gives you something that never fires. Ten installable entries first, then one two-axis grid that pins each of them down.

Same series → Skill 1, the coding skills roundup (the first pass at skill vs subagent vs MCP lives there)

// WHY THIS MATTERS

Get another class wrong and it still runs. Get orchestration wrong and it quietly does nothing. "Run lint before every commit" in CLAUDE.md is forgotten three times out of ten. A judgment call written as a hard hook blocks the wrong thing every time. The rule is one sentence: judgment goes to the model, certainty goes to code, anything that would flood the context moves out, anything other people need gets packaged. Ten real, installable or readable entries below — table and commands first, criteria in the second half.

// 01

The list first: four primitives and six ready-made things

Claim: the first four are built-in mechanisms — nothing to install, you just write a file. The last six are things other people already wrote. Get the first four straight and the rest picks itself.
Entry Source What it takes off your plate When not to use it ───────────────────────────────────────────────────────────────────────────────────────────────────────────────── (1) subagent Built-in · .claude/agents/*.md Moves context-flooding search out The result is one line anyway (2) hook Built-in · settings.json Pins "every time" into real code The task needs judgment (3) skill / slash command Built-in · .claude/skills/ Turns a procedure into a command A one-off task (4) plugin Built-in · plugin.json Packages 1-3 into a shippable unit Only one machine uses it (5) agent teams (experimental) Built-in · env var Independent sessions that argue Sequential work · same files (6) security-guidance Official plugin · Anthropic Three-layer auto security review No Python 3.10+ on the box (7) hookify Official plugin · Anthropic Writes a hook rule from one line You already hand-write hooks (8) feature-dev Official plugin · Anthropic 7-phase pipeline with 3 agents A one-line change (9) wshobson/agents Community marketplace 94 plugins from one source You need one specific role (10) disler/claude-code-hooks-mastery Community repo Runnable samples for 13 hook events You only want one snippet ───────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1-4 are the primitives, 5 upgrades 1 into full sessions; 6-8 are official builds on those primitives; 9-10 are community volume and samples.

How to install (commands copied from each official page)

# 6-8 official marketplace, added on your first interactive session; add it manually if not
/plugin marketplace add anthropics/claude-plugins-official
/plugin install security-guidance@claude-plugins-official
/plugin install hookify@claude-plugins-official
/plugin install feature-dev@claude-plugins-official

# 5 agent teams are off by default; turn them on in settings.json env
{ "env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" } }

# 9 the largest community marketplace, same two steps
/plugin marketplace add wshobson/agents
/plugin install python-development          # or any of its 94 plugins

# 1 a subagent is just a markdown file with frontmatter; nothing to install
# .claude/agents/reviewer.md -- name and description are the only required fields

# Do these two right after installing anything
/plugin            # the Installed tab has a "Not used recently" group: who is billing you for nothing
/skill-doctor      # per-skill context cost

One by one, in plain words

Three more, as pointers only · anthropics/claude-code-action (MIT) moves this orchestration into GitHub Actions, picking its mode from @claude mentions, an explicit prompt, or a PR review; the minimal workflow needs contents: write, pull-requests: write and issues: write — think hard before granting CI write access. davila7/claude-code-templates installs agent / command / hook / MCP components via npx claude-code-templates@latest. ruvnet/ruflo (formerly claude-flow, MIT) is the other extreme — 100+ self-described agents, swarm topologies, consensus mechanisms. That isn't installing a plugin, it's swapping your harness; not recommended here, because its configuration surface dwarfs the problem most people have.
// 02

Why these ten don't compare: there are only two axes

Claim: one axis is who presses it (you type, the model decides, a lifecycle event fires); the other is where the context goes (into the main conversation, into isolation, or nowhere). Each primitive owns one cell. No cell substitutes for another.
│ Into main context │ Isolated context │ Never enters context ────────────────────┼───────────────────────┼─────────────────────────┼────────────────────── You type it │ slash command │ skill with context: fork│ -- │ (disable-model- │ /subtask │ │ invocation: true) │ │ ────────────────────┼───────────────────────┼─────────────────────────┼────────────────────── The model decides │ skill (SKILL.md) │ (1) subagent │ -- │ │ (5) teammate (session) │ ────────────────────┼───────────────────────┼─────────────────────────┼────────────────────── A lifecycle event │ the small additional- │ agent hook (experimental)│ (2) hook (shell) │ Context a hook feeds │ │ (6) lives entirely here ────────────────────┴───────────────────────┴─────────────────────────┴────────────────────── (4) plugin isn't on this grid -- it's the crate that ships any combination of these cells.

The three common mismatches are all visible on that grid:

One more thing that's easy to miss: turning (5) on changes ordinary delegation too. Per the docs, while agent teams are enabled, a subagent that Claude names on its own launches as a teammate — so a team can form when you never asked for one. Set CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS back to 0 if you don't want that.

How it breaks: you install (8) and a couple of review plugins from (9), and both sides ship an agent called reviewer. Nothing errors — the model just picks a different one each time. You think your review standard is drifting; in fact you installed two rulers. One executor per job.
// 03

Three-minute check: answer these six before you install

Claim: this class isn't chosen on stars, it's chosen on which cell you're in. Answer the six and the pick is basically made.
  1. Does this need model judgment? No → (2) a hook, or (7) to generate one. Yes → (3) a skill or (1) a subagent. Get this one wrong and everything after it is wrong.
  2. Does the result need to come back in full? No (logs, repo-wide search, long diffs) → (1) a subagent. Yes → just do it in the main conversation.
  3. Must it happen every single time? Then only (2) guarantees it. Anything in CLAUDE.md is advice, not a guarantee.
  4. Should the model be able to fire it? Yes → the description must say when to use it. No → disable-model-invocation: true, so nothing runs your /deploy on a hunch.
  5. How much context does it hold permanently? The official line: for everything the model can invoke, name and description are in context every turn. Check Context cost before, Not used recently and /skill-doctor after. (1) adds one of its own: a warning once all agent descriptions exceed 15,000 tokens.
  6. How many people and machines? One person → ~/.claude/. One repo → commit .claude/. Across repos or teams → now (4) and a marketplace are worth it.
The hard line: (9) claims 94 plugins, (10) covers 13 events, (5) can run a roomful of sessions — none of those numbers is a selection criterion. Question 1 is. Answer "no judgment needed" and then install a pile of agents, and what you get is a pile of reminders that fire sometimes.
// 04

The honest cost: orchestration is the expensive tier

Claim: a subagent costs tokens, a hook costs execution rights you hand over, and an agent team costs coordination. Three different bills, settled three different ways.

Three bills

What you can do without installing anything

  1. Write two hooks before you write an agent. Most of what people mean by "it keeps forgetting X" is one PostToolUse hook. If you don't want to write it, (7) will.
  2. Install (6) first — zero config, and most of it is free. The per-edit pattern match makes no model call; only the end-of-turn and commit layers spend, and both are capped.
  3. Try subagents before a team. The agent teams page itself opens with it: before you set up a team, check whether a lighter option does the job.
The cell that stays empty: (1) isolates context, (2) guarantees it runs, (6) reviews automatically, (5) has five instances falsify each other — none of them can tell you whether this should be automated at all. The most telling line in (5)'s limitations: task status lags, teammates sometimes fail to mark work complete. Checking whether the work is actually done is still yours.

// THE ONE-PAGE BUYING CARD

Install these three: (1) /plugin install security-guidance@claude-plugins-official — zero config, the pattern layer is free, and it doubles as the best hook-orchestration example around. (2) /plugin install hookify@claude-plugins-official — write your first hook with it; edits apply without a restart. (3) One .claude/agents/ file of your own (name and description are enough) for whatever floods your context most often.

Add as needed: feature-dev@claude-plugins-official (whole features, if you accept the seven-phase overhead) · code-review@claude-plugins-official (multi-agent PR scoring) · claude-code-setup@claude-plugins-official (don't know what to configure — let it scan the repo) · wshobson/agents (you need a specific role; take a plugin, not the repo) · disler/claude-code-hooks-mastery (hook samples to adapt, event names verified against the official docs) · anthropics/claude-code-action (moving this into CI).

Explicitly don't: put "every time" rules in CLAUDE.md instead of a hook · write a judgment call as a hard deny hook · install two reviewers for one job · package a plugin when only your own machine uses it · enable agent teams on a production branch without reading the limitations list · assume more agents means better orchestration — the docs' own words are that three focused teammates often outperform five scattered ones.

// GLOSSARY

subagent
An assistant defined by a .claude/agents/*.md file, running in its own context window and returning only a result. 20 concurrent and 3 nesting levels by default.
hook
A shell command fired by a lifecycle event — the only deterministic mechanism in this class. It can tighten permissions, never loosen them.
teammate (agent team)
A complete, independent Claude Code session that shares a task list with other teammates and messages them directly. Experimental, off by default.
plugin
A directory with .claude-plugin/plugin.json packaging skills, agents, hooks and MCP servers as one installable unit. A crate, not a fifth capability.
Context cost
The standing-context estimate shown on an official marketplace plugin's detail page in /plugin. The number to read before installing.
disable-model-invocation
A skill frontmatter field. Set true, only you can type the command and the model can't call it — right for something like /deploy.
prompt hook / agent hook
The two hook types for judgment rather than hard rules: single-turn LLM evaluation, and multi-turn with tool access (60-second default timeout, up to 50 turns, marked experimental).

// FURTHER READING