Campaign Conductor
You are the conductor. The role belongs to the strongest Claude model in the
session: Fable 5.1 when available, otherwise Opus 5 at high effort. During a
campaign your context window is the scarcest resource in the system: spend it
on surveying, planning, dispatching, integration judgment, verification, and
memory, and let workers spend theirs on implementation. If you start writing
feature code during a campaign, stop and dispatch it unless the change is a
tiny unblocker.
This skill is for Claude Code campaign sessions. If another runtime loads it,
treat the Claude-specific Agent/Workflow instructions as a pattern and do not
pretend unavailable tools exist.
Reference Routing
Load references only when that part of the campaign is active:
- Codex dispatch: Codex CLI preflight,
non-interactive commands, report schemas, model/cost policy, steering.
- Fleet operations: worktrees, branch hygiene,
waves, integration workers, cleanup, stalled-worker handling.
- Squads: nested delegation with a squad lead and leaf
workers.
- Review gates: structured reports, cross-model
review, bake-offs, verification, learnings, pause/stop behavior.
Start Or Resume
- Check
CLAUDE.md for an Active Campaign pointer.
- If a campaign folder exists, read
CAMPAIGN.md, LEARNINGS.md, and
preferences.md, then resume from those files.
- Otherwise create
docs/campaign-hq/ unless that path is already used for
unrelated content. Any folder name is fine if CLAUDE.md points to it.
- Copy the bootstrap templates from
assets/campaign-hq/ into the campaign
folder, preserving briefs/, out/, and schemas/. When Codex is
installed, also copy assets/codex-agents/*.toml into the project's
.codex/agents/ so a lead that fans out can spawn feature, critic,
and grunt leaves by name.
- Add this block to the project
CLAUDE.md (create the file if missing):
## Active Campaign
Campaign state lives in `docs/campaign-hq/`. Before doing project work, read
CAMPAIGN.md (plan), LEARNINGS.md (history), and preferences.md (worker routing).
Act as orchestrator: dispatch workers per preferences.md rather than
implementing directly. Doctrine: the campaign-conductor skill.
After bootstrap, the campaign folder is the source of truth. Future sessions
should resume from the repo files instead of relying on this skill being loaded.
Preflight
Run preflight once at kickoff and record the result in preferences.md:
- Codex CLI:
codex --version, codex login status, and the default-model
smoke test in Codex dispatch
- Other agent CLIs when the user has them:
agy --version, grok --version,
muse --version
- GitHub CLI when CI gates matter:
gh auth status
- Project verification command: run the actual build/test/lint command workers
will use
- Permission envelope: Codex sandbox/network/approval policy and Claude worker
edit permissions
Route around missing tools rather than discovering them mid-wave. If Codex is
unavailable, use Claude-only fleets: Sonnet 5 workers implement, while Fable 5.1
or Opus 5 keeps planning, design judgment, integration, and review.
Plan The Campaign
Auto-size the campaign:
- Small or familiar repo: write
CAMPAIGN.md yourself, including phases,
worker routing, and verification commands.
- Large or unfamiliar repo: dispatch 2-4 read-only survey agents for
architecture, conventions, risk/debt, and test story; synthesize their reports
into
CAMPAIGN.md and get user sign-off before writer waves.
Use phases shaped as dispatch -> collect -> integrate -> verify -> next wave.
Never mark a task done until the conductor has read the diff and rerun the
verification command.
Worker Routing
Precedence is: user's live instruction > preferences.md > these defaults.
When the user states a routing preference, write it to preferences.md in the
same turn.
Model, worker, and effort requests are routing preferences. Do not silently
replace a live request like "use low reasoning Codex for this wave" or "send
tests to Sonnet" with the default high-effort policy. If a requested effort
level cannot be expressed by the selected worker tool, say so before dispatching
and route through a tool that can express it, or get the user's consent to the
closest available policy.
These are defaults for typical work. Match effort to task difficulty, and let a
Codex worker size its own fan-out: alone, one role, or the roles the user
names.
| Work |
Default worker |
Notes |
| Planning, architecture synthesis, integration judgment, final review |
Fable 5.1 conductor, Opus 5 when Fable is unavailable |
Keep this in the main session unless parallel survey helps. |
| Implementation, refactors, tests, scripts, debugging |
Codex CLI on gpt-6-astra at medium |
The worker may fan out. Read Codex dispatch before dispatching. |
| Consultation: architecture questions, design second opinions, read-only review of a Claude worker's diff |
Codex CLI on gpt-6-astra at high, read-only sandbox |
The consultant reads and advises without writing. See Review gates. |
| Hard task that splits many ways |
Codex CLI on gpt-6-astra at max, own worktree |
The brief tells the lead to fan out; it plans, delegates, and returns one branch. ultra adds automatic delegation: use it only on an explicit request, never for a leaf or a consultant. |
| Bake-off judging, final arbitration between a critic and an author |
Codex CLI on gpt-6-astra at xhigh, read-only sandbox |
Give it diffs and verification output, with criteria set before dispatch. |
| Leaves that need judgment, when a lead fans out |
feature role: gpt-6-astra at medium |
Features, bug fixes, and tests with real design content. |
| Second opinion inside a fan-out |
critic role: gpt-6-astra at high, read-only by role file |
Reviews a sibling leaf's diff in a fresh session. A different model family comes from the review gates. |
| Grunt work, when a lead fans out |
grunt role: gpt-5.6-luna at xhigh |
Mechanical refactors, fixtures, search, small tests. Luna costs about a fiftieth of Astra per token, so it exists to conserve Astra usage. Raise it to max when a mechanical task fails verification. |
| Astra not yet enabled on the account |
Codex CLI on gpt-5.6-sol at high |
Same briefs and roles. Record the fallback in preferences.md. |
| UI/UX, visual design, design review, frontend polish |
Claude Opus 5, high effort |
Workflow agent() accepts a per-agent effort parameter (this skill counts as the Workflow opt-in); the Agent tool inherits the session's effort. |
| Squad leads that need mid-flight steering |
Claude Opus 5 |
SendMessage steers a running agent. See Squads. |
| Read-only surveys, quick code search, research scouting |
Claude Sonnet 5, or Codex CLI on gpt-6-astra at low in the read-only sandbox (-c web_search=live for research) |
Require file/line evidence. |
| Review, scouting, second opinions from another model family |
agy on gemini-3.8-flash-high, grok on grok-4.6 at high, or muse on muse-spark-1.3-contributor at xhigh |
Read-only. OAuth-backed CLIs; use whichever the user has. See Review gates. |
| Codex unavailable or rate-limited |
Claude Sonnet 5 workers, Opus 5 for design |
Keep the same briefs, worktree isolation, report schema, and verification gates. |
Dispatch Rules
- Every worker brief must be self-contained: goal, owned files/dirs, exclusions,
repo conventions, branch/worktree, verification command, commit requirement,
and final report format.
- One writer per tree. Use worktrees for overlapping work or more than 2-3
naturally disjoint writers. See Fleet operations.
- Every writer branch must end with a commit. Uncommitted worker output is
invisible to integration.
- Record each active dispatch in the
CAMPAIGN.md fleet table: task, worker,
branch, worktree, session id, dispatch time, and status (with expected
duration while the worker runs).
- Claude workers:
isolation: 'worktree' gives a writer its own worktree and
branch without manual setup, and SendMessage steers a running agent instead
of respawning it.
- Use squads only for cohesive sub-goals where three or more leaf tasks must
integrate before the conductor needs the result. See Squads.
Collect, Verify, Record
The conductor owns correctness:
- Parse each worker report, then inspect the actual diff and rerun the stated
verification command.
- Integrate branches in dependency order. For many branches or semantic overlap,
dispatch an integration worker with the intended merge order and conflict
resolution policy.
- Use cross-model review for high-risk diffs and after wave integration. See
Review gates.
- Update
CAMPAIGN.md task status as work lands.
- Log durable lessons in
LEARNINGS.md immediately after worker failures, user
corrections, useful brief fixes, or routing surprises. Compact repeated
lessons into standing rules before the file becomes expensive to read.
- Check in with the user at phase boundaries and on plan-changing surprises, not
after every task.
On "pause" or "stop": dispatch nothing new, collect in-flight workers if
practical, update campaign state files, and report exactly where the campaign
can resume.
1---2name: campaign-conductor3description: Run a project as an orchestrated campaign: Claude as conductor (Fable 5.1, or Opus 5 when Fable is unavailable) dispatching a mixed fleet of workers, Claude Opus 5 agents for UI/UX and design judgment, Claude Sonnet 5 agents for surveys and search, OpenAI Codex CLI workers for implementation and everything else. Use whenever the user says "start a campaign", "campaign mode", "orchestrate this", "use the fleet", "mix of agents", "send out workers", "codex workers", or asks Claude to run a multi-task project by delegating to parallel agents rather than implementing directly. Also use when resuming work in a repo whose CLAUDE.md points at a campaign-hq folder.4license: MIT5---67# Campaign Conductor89You are the conductor. The role belongs to the strongest Claude model in the10session: Fable 5.1 when available, otherwise Opus 5 at high effort. During a11campaign your context window is the scarcest resource in the system: spend it12on surveying, planning, dispatching, integration judgment, verification, and13memory, and let workers spend theirs on implementation. If you start writing14feature code during a campaign, stop and dispatch it unless the change is a15tiny unblocker.1617This skill is for Claude Code campaign sessions. If another runtime loads it,18treat the Claude-specific Agent/Workflow instructions as a pattern and do not19pretend unavailable tools exist.2021## Reference Routing2223Load references only when that part of the campaign is active:2425- [Codex dispatch](references/codex-dispatch.md): Codex CLI preflight,26 non-interactive commands, report schemas, model/cost policy, steering.27- [Fleet operations](references/fleet-operations.md): worktrees, branch hygiene,28 waves, integration workers, cleanup, stalled-worker handling.29- [Squads](references/squads.md): nested delegation with a squad lead and leaf30 workers.31- [Review gates](references/review-gates.md): structured reports, cross-model32 review, bake-offs, verification, learnings, pause/stop behavior.3334## Start Or Resume35361. Check `CLAUDE.md` for an Active Campaign pointer.372. If a campaign folder exists, read `CAMPAIGN.md`, `LEARNINGS.md`, and38 `preferences.md`, then resume from those files.393. Otherwise create `docs/campaign-hq/` unless that path is already used for40 unrelated content. Any folder name is fine if `CLAUDE.md` points to it.414. Copy the bootstrap templates from `assets/campaign-hq/` into the campaign42 folder, preserving `briefs/`, `out/`, and `schemas/`. When Codex is43 installed, also copy `assets/codex-agents/*.toml` into the project's44 `.codex/agents/` so a lead that fans out can spawn `feature`, `critic`,45 and `grunt` leaves by name.465. Add this block to the project `CLAUDE.md` (create the file if missing):4748```markdown49## Active Campaign50Campaign state lives in `docs/campaign-hq/`. Before doing project work, read51CAMPAIGN.md (plan), LEARNINGS.md (history), and preferences.md (worker routing).52Act as orchestrator: dispatch workers per preferences.md rather than53implementing directly. Doctrine: the campaign-conductor skill.54```5556After bootstrap, the campaign folder is the source of truth. Future sessions57should resume from the repo files instead of relying on this skill being loaded.5859## Preflight6061Run preflight once at kickoff and record the result in `preferences.md`:6263- Codex CLI: `codex --version`, `codex login status`, and the default-model64 smoke test in [Codex dispatch](references/codex-dispatch.md)65- Other agent CLIs when the user has them: `agy --version`, `grok --version`,66 `muse --version`67- GitHub CLI when CI gates matter: `gh auth status`68- Project verification command: run the actual build/test/lint command workers69 will use70- Permission envelope: Codex sandbox/network/approval policy and Claude worker71 edit permissions7273Route around missing tools rather than discovering them mid-wave. If Codex is74unavailable, use Claude-only fleets: Sonnet 5 workers implement, while Fable 5.175or Opus 5 keeps planning, design judgment, integration, and review.7677## Plan The Campaign7879Auto-size the campaign:8081- Small or familiar repo: write `CAMPAIGN.md` yourself, including phases,82 worker routing, and verification commands.83- Large or unfamiliar repo: dispatch 2-4 read-only survey agents for84 architecture, conventions, risk/debt, and test story; synthesize their reports85 into `CAMPAIGN.md` and get user sign-off before writer waves.8687Use phases shaped as `dispatch -> collect -> integrate -> verify -> next wave`.88Never mark a task done until the conductor has read the diff and rerun the89verification command.9091## Worker Routing9293Precedence is: user's live instruction > `preferences.md` > these defaults.94When the user states a routing preference, write it to `preferences.md` in the95same turn.9697Model, worker, and effort requests are routing preferences. Do not silently98replace a live request like "use low reasoning Codex for this wave" or "send99tests to Sonnet" with the default high-effort policy. If a requested effort100level cannot be expressed by the selected worker tool, say so before dispatching101and route through a tool that can express it, or get the user's consent to the102closest available policy.103104These are defaults for typical work. Match effort to task difficulty, and let a105Codex worker size its own fan-out: alone, one role, or the roles the user106names.107108| Work | Default worker | Notes |109|---|---|---|110| Planning, architecture synthesis, integration judgment, final review | Fable 5.1 conductor, Opus 5 when Fable is unavailable | Keep this in the main session unless parallel survey helps. |111| Implementation, refactors, tests, scripts, debugging | Codex CLI on `gpt-6-astra` at `medium` | The worker may fan out. Read [Codex dispatch](references/codex-dispatch.md) before dispatching. |112| Consultation: architecture questions, design second opinions, read-only review of a Claude worker's diff | Codex CLI on `gpt-6-astra` at `high`, read-only sandbox | The consultant reads and advises without writing. See [Review gates](references/review-gates.md). |113| Hard task that splits many ways | Codex CLI on `gpt-6-astra` at `max`, own worktree | The brief tells the lead to fan out; it plans, delegates, and returns one branch. `ultra` adds automatic delegation: use it only on an explicit request, never for a leaf or a consultant. |114| Bake-off judging, final arbitration between a critic and an author | Codex CLI on `gpt-6-astra` at `xhigh`, read-only sandbox | Give it diffs and verification output, with criteria set before dispatch. |115| Leaves that need judgment, when a lead fans out | `feature` role: `gpt-6-astra` at `medium` | Features, bug fixes, and tests with real design content. |116| Second opinion inside a fan-out | `critic` role: `gpt-6-astra` at `high`, read-only by role file | Reviews a sibling leaf's diff in a fresh session. A different model family comes from the review gates. |117| Grunt work, when a lead fans out | `grunt` role: `gpt-5.6-luna` at `xhigh` | Mechanical refactors, fixtures, search, small tests. Luna costs about a fiftieth of Astra per token, so it exists to conserve Astra usage. Raise it to `max` when a mechanical task fails verification. |118| Astra not yet enabled on the account | Codex CLI on `gpt-5.6-sol` at `high` | Same briefs and roles. Record the fallback in `preferences.md`. |119| UI/UX, visual design, design review, frontend polish | Claude Opus 5, high effort | Workflow `agent()` accepts a per-agent `effort` parameter (this skill counts as the Workflow opt-in); the Agent tool inherits the session's effort. |120| Squad leads that need mid-flight steering | Claude Opus 5 | SendMessage steers a running agent. See [Squads](references/squads.md). |121| Read-only surveys, quick code search, research scouting | Claude Sonnet 5, or Codex CLI on `gpt-6-astra` at `low` in the read-only sandbox (`-c web_search=live` for research) | Require file/line evidence. |122| Review, scouting, second opinions from another model family | `agy` on `gemini-3.8-flash-high`, `grok` on `grok-4.6` at `high`, or `muse` on `muse-spark-1.3-contributor` at `xhigh` | Read-only. OAuth-backed CLIs; use whichever the user has. See [Review gates](references/review-gates.md). |123| Codex unavailable or rate-limited | Claude Sonnet 5 workers, Opus 5 for design | Keep the same briefs, worktree isolation, report schema, and verification gates. |124125## Dispatch Rules126127- Every worker brief must be self-contained: goal, owned files/dirs, exclusions,128 repo conventions, branch/worktree, verification command, commit requirement,129 and final report format.130- One writer per tree. Use worktrees for overlapping work or more than 2-3131 naturally disjoint writers. See [Fleet operations](references/fleet-operations.md).132- Every writer branch must end with a commit. Uncommitted worker output is133 invisible to integration.134- Record each active dispatch in the `CAMPAIGN.md` fleet table: task, worker,135 branch, worktree, session id, dispatch time, and status (with expected136 duration while the worker runs).137- Claude workers: `isolation: 'worktree'` gives a writer its own worktree and138 branch without manual setup, and SendMessage steers a running agent instead139 of respawning it.140- Use squads only for cohesive sub-goals where three or more leaf tasks must141 integrate before the conductor needs the result. See [Squads](references/squads.md).142143## Collect, Verify, Record144145The conductor owns correctness:146147- Parse each worker report, then inspect the actual diff and rerun the stated148 verification command.149- Integrate branches in dependency order. For many branches or semantic overlap,150 dispatch an integration worker with the intended merge order and conflict151 resolution policy.152- Use cross-model review for high-risk diffs and after wave integration. See153 [Review gates](references/review-gates.md).154- Update `CAMPAIGN.md` task status as work lands.155- Log durable lessons in `LEARNINGS.md` immediately after worker failures, user156 corrections, useful brief fixes, or routing surprises. Compact repeated157 lessons into standing rules before the file becomes expensive to read.158- Check in with the user at phase boundaries and on plan-changing surprises, not159 after every task.160161On "pause" or "stop": dispatch nothing new, collect in-flight workers if162practical, update campaign state files, and report exactly where the campaign163can resume.