| name | orchestrate-subagents |
| description | Orchestrate parallel and/or sequential subagents working in separate git worktrees to deliver PR(s). Use when bundling multiple related GitHub issues into a single task, running best-of-3 identical attempts, monitoring runs, selecting the best PR, and closing/cleaning up the rest. |
Orchestrate Subagents
Overview
Run coding subagents reliably: define a task bundle (often spanning several related issues), create isolated worktrees, spawn 1 or 3 identical attempts, then select the best PR and clean up the rest.
This skill is for the orchestrator/PM agent. Coding agents do implementation work and need not spawn subagents themselves.
Workflow (Best-Of-3 Default)
1) Write a bundle spec
- Put the bundle spec in
/tmp/(outside the repo), so you don’t create repo noise.- Example path:
/tmp/codex-bundle-spec-<date>-<slug>.md
- Example path:
- Include:
- Issue list (IDs + titles).
- Acceptance criteria (bulleted, testable).
- Out of scope (explicit “DO NOT …” list).
- Required readings (exact file paths relative to worktree root).
- Definition of done (tests/checks to run, CI must be green).
- “Stop and ask” triggers (ambiguity, scope conflicts, failing tests that look unrelated).
2) Write the subagent prompt file
- Use one prompt file for all subagents (identical attempts):
- Example path:
/tmp/codex-prompt-<date>-<slug>.md
- Example path:
- Use an absolute prompt path in
codex exec(e.g. a/tmp/...path). - Transform the bundle spec into a prompt. Add instructions that are about how the subagent has to work, beyond the bundle spec.
- Work only in their current worktree (
pwdreveals it). - Run onboarding/sanity:
bash -lc scripts/hello.sh. Subagents readAGENTS.mdand will know what to do. - Implement the full issue bundle (single PR).
- Run the relevant checks (at minimum:
npm run check). - Open a PR (with a clear title and issue-closing footer).
- Stop and report back if they hit non-trivial blockers (don’t “invent” scope). Minimal prompt template (edit for the specific bundle):
- Work only in their current worktree (
# Prompt
You are a coding sub-agent. Work only inside your current git worktree.
## Onboarding
- Run `bash -lc scripts/hello.sh`.
## Task bundle
- Solve issues: #<A>, #<B>, #<C> as ONE coherent PR.
### Acceptance criteria:
- (list)
### Out of scope:
- (list explicit NOTs)
## Constraints
- Do not do PM tasks. Do implementation only.
- Do not add temporary/demo files.
## Process
- If you find ambiguity or a likely typo in the issue text, STOP and write a short question in the PR description.
## Validation
- (list)
## Deliverable
- Push a branch and open a PR.
- PR description must:
- Reference all issues with “Closes #…”.
- Include a short, skimmable summary and any tradeoffs/risks.
- Inform the reviewer of any deviations from the acceptance criteria.
- Inform the reviewer of any shortcomings or known issues you did not address, and why you did not address them.
3) Create Worktrees and Spawn Subagents
- For best-of-3, create 3 worktrees with 1 subagent each.
- See
.codex/skills/git-worktrees/SKILL.mdfor worktree management.- Create:
scripts/worktree-new.sh <path> <branch> [--force] - Remove:
scripts/worktree-remove.sh <path> [--force]
- Create:
- Recommended naming (deterministic, easy to filter in PR list):
- Slug:
<yyyymmdd>-<short-bundle-name> - Branches:
agent/<slug>/a,agent/<slug>/b,agent/<slug>/c - Paths:
/workspaces/worktrees/<slug>-a(and-b,-c)
- Slug:
- Start each subagent from inside its worktree directory (no backgrounding):
cd /workspaces/worktrees/<slug>-a && codex exec "Prompt: /tmp/codex-prompt-<date>-<slug>.md" 2>/dev/null
Important:
- Do not add
&to thecodex execcommand. - To run best-of-3 in parallel, run one subagent per terminal (three terminals total).
4) Monitor and Triage
- We suppress stderr because it is extremely verbose and not meant for orchestrator review.
- When the agent is done, it exits and prints its final message to stdout. It also ought to have opened a PR as per the prompt instructions.
- Wait for all three agents to finish (process exit) before proceeding to selection. Agents maybe will not write to stdout at all until they are done.
- If a subagent fails early, e.g. due to misspecified scope or unclear instructions or violated task assumptions, you should usually escalate to the owner instead of trying to salvage the run.
- If a subagent never even starts, e.g. due to a typo in the
codex execcommand, you can usually just restart it without escalating.
5) Select the winning PR (best-of-3)
- Once all three subagents have finished, review their PRs.
- Prefer the PR that:
- Meets the bundle acceptance criteria, including passing all tests.
- Has the highest quality in code architecture, code style, and test coverage.
- Is a solid foundation for the remaining project work.
- The PR text is useful commentary, but not a source of truth: the worktree contents are what will be merged and thus the only thing that matters.
6) Merge, Close, and Clean Up
- Merge the winning PR via GitHub CLI.
- If the merged PR fell short of acceptance criteria, create follow-up issues for the remaining work.
- Close losing PRs with a short note (“best-of-3; superseded by #
”). - Delete their remote branches.
- Pull in the main worktree so the merged result is reflected locally.
- Remove the winning and the losing local worktrees.
- Hand-off to the owner with a summary:
- Winner PR link + what it does.
- Which PRs were closed and why.
- Anything that needs owner review/decision.
- Follow-up issues suggested (if any).