Decide what to use
Don’t design your setup up front. Add a primitive the moment a concrete trigger appears — this is Anthropic’s own guidance (features overview). Reviewed 2026-06-06.
The trigger ladder
Start at the top with CLAUDE.md. Each row is a real symptom and the primitive that resolves it.
| When you notice… | Reach for | Coordination |
|---|---|---|
| Claude got a convention wrong twice | CLAUDE.md | Foundations |
| You keep typing the same prompt | a user-invocable skill | Extend |
| You’ve pasted the same playbook a third time | a skill | Extend |
| You copy data from a tab/system Claude can’t see | an MCP server | Extend |
| A side task floods your conversation with output | a subagent | Extend |
| You want something to happen every time, without asking | a hook | Extend |
| Subagents hit context limits, or need to talk to each other | agent teams | Orchestrate |
| A job needs more agents than one conversation can coordinate | a dynamic workflow | Orchestrate |
| You’re juggling several independent tasks at once | agent view (+ worktrees) | Orchestrate |
| A second repo needs the same setup | a plugin | Orchestrate |
| Something must be blocked/required across the org | managed policy | Orchestrate |
| You want Claude to keep working until a condition holds (tests pass, queue empty) | a /goal (condition-driven) | Extend |
| You want to poll something every N minutes inside an open session | a /loop (clock-driven) | Extend |
| You want Claude to run unattended on a schedule, laptop closed | a routine (scheduled trigger) | Operate |
| Claude should react to a GitHub event (PR / release) on its own | a routine (GitHub trigger) | Operate |
| An external system should fire a Claude run via webhook/API | a routine (API /fire) | Operate |
Decision flow
Is it about knowing, reaching, guaranteeing, or coordinating?
Knowing / behaving
Reaching out
Guaranteeing
Coordinating
Keeping it running
/loop for OS cron: cron runs a fixed script; /loop runs a model that decides, only while the session is open, and expires in 7 days.Confusable pairs β pick correctly
Skill vs Subagent
A skill adds instructions to your context window (shareable know-how, no isolation). A subagent runs in a separate window and returns only a summary (isolation + a different tool/permission profile). Re-pasting a procedure? Skill. Drowning in a side task’s output? Subagent.
Hook vs Skill
A hook is deterministic — guaranteed to run on its event. A skill is interpreted by the model and may or may not fire. Put guardrails in hooks, knowledge in skills.
MCP vs Skill
MCP is the connection (new tools/data). A skill is the knowledge of how to use them well. They combine: an MCP server reaches your DB/Jira; a skill encodes the team’s procedure for using them.
Subagent vs Agent team
Subagents report up and don’t talk to each other; cheaper, simpler. Agent teams are peer sessions that share a task list and message each other; more powerful, more expensive. The docs name the exact transition: “if you’re running parallel subagents but hitting context limits, or your subagents need to communicate, agent teams are the natural next step.”
Agent teams vs Dynamic workflows
Both run many agents. In a team, a lead model holds the plan turn-by-turn and peers can discuss — good for a handful of deep, collaborating workers. In a workflow, a script holds the plan — good for dozens-to-hundreds of well-scoped tasks with a repeatable, cross-checked quality pattern and no context bloat.
Agent view vs Agent teams
Agent view is a dashboard for many independent sessions you coordinate (they don’t talk). Agent teams is the model coordinating peers that do talk. Worktrees sit under both as the file-isolation mechanism.
Keep running β two axes
/loop, /goal, hooks, routines and cron all blur together because they all
“keep Claude working.” They separate cleanly on two questions: where it runs (in an
open session you’re driving, or independent of any session) and what starts the next
unit of work (a clock, a condition, or an event).
| Clock (interval) | Condition (a check passes) | Event (something happens) | |
|---|---|---|---|
| In an open session | /loop β re-run a prompt every N min | /goal β until a small model confirms done; or a custom Stop hook | Hooks (PreToolUse, Stopβ¦); Channels (CI pushes a failure in) |
| Independent of session | Routines (schedule) Β· Desktop scheduled tasks Β· OS cron Β· GitHub Actions | β | Routines (GitHub event / API /fire) |
/loop runs a model that decides (and is session-scoped, 7-day expiry). /loop vs
routines = local + session open vs cloud + unattended. /goal vs a Stop hook = a session
shortcut vs a settings-level handler you script. A skill is the saved procedure any of these
runs — the “what,” not the “when/where.”