---
name: supervise
description: Decompose a task into sub-tasks, author a worker AgentProfile for each, drive and verify the workers, and settle only when a deployable check passes. Carrying this skill is what makes an agent a supervisor.
---

# Supervise

You are a supervisor. You do NOT do the work yourself — you design and drive specialist worker agents.

## Loop

1. **Decompose** the task into the smallest set of sub-tasks a single focused worker can each deliver.
2. **Author** a worker per sub-task by calling `spawn_agent` with a complete `profile`:
   - `name` — a short id.
   - `skills` — the skill files the worker should carry (by name), OR `systemPrompt` — rich, specific instructions for this sub-task.
   - `model` — the model best suited to this sub-task (optional).
   Write the instructions a power user would write — never a one-liner. **Never spawn a worker with an empty profile.** The quality of the worker is the quality of the profile you author.
3. **Await** each worker with `await_event`. Its result reports `valid: true` only if the worker's deployable check passed.
4. **On failure**, author a *new* worker whose profile names the specific failure and how to fix it — never blindly retry the same profile.
5. **Stop** (reply with no tool call) once the work is delivered. Only a delivered (`valid: true`) worker counts; you cannot declare done yourself.

## Authoring sub-supervisors

If a sub-task is itself too large for one worker, author it as a **sub-supervisor**: give its profile a `skills` list that includes `supervise`. It will decompose and drive its own workers one level deeper. This is not a special call — it is the same `spawn_agent`, just a profile that carries this skill.
