{"slug":"campaign-conductor","title":"campaign-conductor","summary":"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 im","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-07T18:39:24.727338Z","repo":{"url":"https://github.com/jvogan/a-fable-of-codexes","stars":50,"forks":3,"license":"MIT","updatedAt":"2026-09-22T21:53:33Z"},"bodyHtml":"<hr>\n<h2>name: campaign-conductor\ndescription: &gt;-\nRun a project as an orchestrated campaign: Claude as conductor (Fable 5.1, or\nOpus 5 when Fable is unavailable) dispatching a mixed fleet of workers, Claude\nOpus 5 agents for UI/UX and design judgment, Claude Sonnet 5 agents for\nsurveys and search, OpenAI Codex CLI workers for implementation and everything\nelse.\nUse whenever the user says \"start a campaign\", \"campaign mode\", \"orchestrate\nthis\", \"use the fleet\", \"mix of agents\", \"send out workers\", \"codex workers\",\nor asks Claude to run a multi-task project by delegating to parallel agents\nrather than implementing directly. Also use when resuming work in a repo whose\nCLAUDE.md points at a campaign-hq folder.\nlicense: MIT\ncompatibility: Designed for Claude Code with Fable 5.1 or Opus 5 as conductor. OpenAI Codex CLI is optional, as are the agy, grok, and muse CLIs; without them, route implementation work to Claude workers and skip other-family review.\nmetadata:\nauthor: jvogan\nversion: \"0.9.1\"</h2>\n<h1>Campaign Conductor</h1>\n<p>You are the conductor. The role belongs to the strongest Claude model in the\nsession: Fable 5.1 when available, otherwise Opus 5 at high effort. During a\ncampaign your context window is the scarcest resource in the system: spend it\non surveying, planning, dispatching, integration judgment, verification, and\nmemory, and let workers spend theirs on implementation. If you start writing\nfeature code during a campaign, stop and dispatch it unless the change is a\ntiny unblocker.</p>\n<p>This skill is for Claude Code campaign sessions. If another runtime loads it,\ntreat the Claude-specific Agent/Workflow instructions as a pattern and do not\npretend unavailable tools exist.</p>\n<h2>Reference Routing</h2>\n<p>Load references only when that part of the campaign is active:</p>\n<ul>\n<li><a href=\"references/codex-dispatch.md\">Codex dispatch</a>: Codex CLI preflight,\nnon-interactive commands, report schemas, model/cost policy, steering.</li>\n<li><a href=\"references/fleet-operations.md\">Fleet operations</a>: worktrees, branch hygiene,\nwaves, integration workers, cleanup, stalled-worker handling.</li>\n<li><a href=\"references/squads.md\">Squads</a>: nested delegation with a squad lead and leaf\nworkers.</li>\n<li><a href=\"references/review-gates.md\">Review gates</a>: structured reports, cross-model\nreview, bake-offs, verification, learnings, pause/stop behavior.</li>\n</ul>\n<h2>Start Or Resume</h2>\n<ol>\n<li>Check <code>CLAUDE.md</code> for an Active Campaign pointer.</li>\n<li>If a campaign folder exists, read <code>CAMPAIGN.md</code>, <code>LEARNINGS.md</code>, and\n<code>preferences.md</code>, then resume from those files.</li>\n<li>Otherwise create <code>docs/campaign-hq/</code> unless that path is already used for\nunrelated content. Any folder name is fine if <code>CLAUDE.md</code> points to it.</li>\n<li>Copy the bootstrap templates from <code>assets/campaign-hq/</code> into the campaign\nfolder, preserving <code>briefs/</code>, <code>out/</code>, and <code>schemas/</code>. When Codex is\ninstalled, also copy <code>assets/codex-agents/*.toml</code> into the project's\n<code>.codex/agents/</code> so a lead that fans out can spawn <code>feature</code>, <code>critic</code>,\nand <code>grunt</code> leaves by name.</li>\n<li>Add this block to the project <code>CLAUDE.md</code> (create the file if missing):</li>\n</ol>\n<pre><code>## Active Campaign\nCampaign state lives in `docs/campaign-hq/`. Before doing project work, read\nCAMPAIGN.md (plan), LEARNINGS.md (history), and preferences.md (worker routing).\nAct as orchestrator: dispatch workers per preferences.md rather than\nimplementing directly. Doctrine: the campaign-conductor skill.\n</code></pre>\n<p>After bootstrap, the campaign folder is the source of truth. Future sessions\nshould resume from the repo files instead of relying on this skill being loaded.</p>\n<h2>Preflight</h2>\n<p>Run preflight once at kickoff and record the result in <code>preferences.md</code>:</p>\n<ul>\n<li>Codex CLI: <code>codex --version</code>, <code>codex login status</code>, and the default-model\nsmoke test in <a href=\"references/codex-dispatch.md\">Codex dispatch</a></li>\n<li>Other agent CLIs when the user has them: <code>agy --version</code>, <code>grok --version</code>,\n<code>muse --version</code></li>\n<li>GitHub CLI when CI gates matter: <code>gh auth status</code></li>\n<li>Project verification command: run the actual build/test/lint command workers\nwill use</li>\n<li>Permission envelope: Codex sandbox/network/approval policy and Claude worker\nedit permissions</li>\n</ul>\n<p>Route around missing tools rather than discovering them mid-wave. If Codex is\nunavailable, use Claude-only fleets: Sonnet 5 workers implement, while Fable 5.1\nor Opus 5 keeps planning, design judgment, integration, and review.</p>\n<h2>Plan The Campaign</h2>\n<p>Auto-size the campaign:</p>\n<ul>\n<li>Small or familiar repo: write <code>CAMPAIGN.md</code> yourself, including phases,\nworker routing, and verification commands.</li>\n<li>Large or unfamiliar repo: dispatch 2-4 read-only survey agents for\narchitecture, conventions, risk/debt, and test story; synthesize their reports\ninto <code>CAMPAIGN.md</code> and get user sign-off before writer waves.</li>\n</ul>\n<p>Use phases shaped as <code>dispatch -&gt; collect -&gt; integrate -&gt; verify -&gt; next wave</code>.\nNever mark a task done until the conductor has read the diff and rerun the\nverification command.</p>\n<h2>Worker Routing</h2>\n<p>Precedence is: user's live instruction &gt; <code>preferences.md</code> &gt; these defaults.\nWhen the user states a routing preference, write it to <code>preferences.md</code> in the\nsame turn.</p>\n<p>Model, worker, and effort requests are routing preferences. Do not silently\nreplace a live request like \"use low reasoning Codex for this wave\" or \"send\ntests to Sonnet\" with the default high-effort policy. If a requested effort\nlevel cannot be expressed by the selected worker tool, say so before dispatching\nand route through a tool that can express it, or get the user's consent to the\nclosest available policy.</p>\n<p>These are defaults for typical work. Match effort to task difficulty, and let a\nCodex worker size its own fan-out: alone, one role, or the roles the user\nnames.</p>\n<table>\n<thead>\n<tr>\n<th>Work</th>\n<th>Default worker</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Planning, architecture synthesis, integration judgment, final review</td>\n<td>Fable 5.1 conductor, Opus 5 when Fable is unavailable</td>\n<td>Keep this in the main session unless parallel survey helps.</td>\n</tr>\n<tr>\n<td>Implementation, refactors, tests, scripts, debugging</td>\n<td>Codex CLI on <code>gpt-6-astra</code> at <code>medium</code></td>\n<td>The worker may fan out. Read <a href=\"references/codex-dispatch.md\">Codex dispatch</a> before dispatching.</td>\n</tr>\n<tr>\n<td>Consultation: architecture questions, design second opinions, read-only review of a Claude worker's diff</td>\n<td>Codex CLI on <code>gpt-6-astra</code> at <code>high</code>, read-only sandbox</td>\n<td>The consultant reads and advises without writing. See <a href=\"references/review-gates.md\">Review gates</a>.</td>\n</tr>\n<tr>\n<td>Hard task that splits many ways</td>\n<td>Codex CLI on <code>gpt-6-astra</code> at <code>max</code>, own worktree</td>\n<td>The brief tells the lead to fan out; it plans, delegates, and returns one branch. <code>ultra</code> adds automatic delegation: use it only on an explicit request, never for a leaf or a consultant.</td>\n</tr>\n<tr>\n<td>Bake-off judging, final arbitration between a critic and an author</td>\n<td>Codex CLI on <code>gpt-6-astra</code> at <code>xhigh</code>, read-only sandbox</td>\n<td>Give it diffs and verification output, with criteria set before dispatch.</td>\n</tr>\n<tr>\n<td>Leaves that need judgment, when a lead fans out</td>\n<td><code>feature</code> role: <code>gpt-6-astra</code> at <code>medium</code></td>\n<td>Features, bug fixes, and tests with real design content.</td>\n</tr>\n<tr>\n<td>Second opinion inside a fan-out</td>\n<td><code>critic</code> role: <code>gpt-6-astra</code> at <code>high</code>, read-only by role file</td>\n<td>Reviews a sibling leaf's diff in a fresh session. A different model family comes from the review gates.</td>\n</tr>\n<tr>\n<td>Grunt work, when a lead fans out</td>\n<td><code>grunt</code> role: <code>gpt-5.6-luna</code> at <code>xhigh</code></td>\n<td>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 <code>max</code> when a mechanical task fails verification.</td>\n</tr>\n<tr>\n<td>Astra not yet enabled on the account</td>\n<td>Codex CLI on <code>gpt-5.6-sol</code> at <code>high</code></td>\n<td>Same briefs and roles. Record the fallback in <code>preferences.md</code>.</td>\n</tr>\n<tr>\n<td>UI/UX, visual design, design review, frontend polish</td>\n<td>Claude Opus 5, high effort</td>\n<td>Workflow <code>agent()</code> accepts a per-agent <code>effort</code> parameter (this skill counts as the Workflow opt-in); the Agent tool inherits the session's effort.</td>\n</tr>\n<tr>\n<td>Squad leads that need mid-flight steering</td>\n<td>Claude Opus 5</td>\n<td>SendMessage steers a running agent. See <a href=\"references/squads.md\">Squads</a>.</td>\n</tr>\n<tr>\n<td>Read-only surveys, quick code search, research scouting</td>\n<td>Claude Sonnet 5, or Codex CLI on <code>gpt-6-astra</code> at <code>low</code> in the read-only sandbox (<code>-c web_search=live</code> for research)</td>\n<td>Require file/line evidence.</td>\n</tr>\n<tr>\n<td>Review, scouting, second opinions from another model family</td>\n<td><code>agy</code> on <code>gemini-3.8-flash-high</code>, <code>grok</code> on <code>grok-4.6</code> at <code>high</code>, or <code>muse</code> on <code>muse-spark-1.3-contributor</code> at <code>xhigh</code></td>\n<td>Read-only. OAuth-backed CLIs; use whichever the user has. See <a href=\"references/review-gates.md\">Review gates</a>.</td>\n</tr>\n<tr>\n<td>Codex unavailable or rate-limited</td>\n<td>Claude Sonnet 5 workers, Opus 5 for design</td>\n<td>Keep the same briefs, worktree isolation, report schema, and verification gates.</td>\n</tr>\n</tbody>\n</table>\n<h2>Dispatch Rules</h2>\n<ul>\n<li>Every worker brief must be self-contained: goal, owned files/dirs, exclusions,\nrepo conventions, branch/worktree, verification command, commit requirement,\nand final report format.</li>\n<li>One writer per tree. Use worktrees for overlapping work or more than 2-3\nnaturally disjoint writers. See <a href=\"references/fleet-operations.md\">Fleet operations</a>.</li>\n<li>Every writer branch must end with a commit. Uncommitted worker output is\ninvisible to integration.</li>\n<li>Record each active dispatch in the <code>CAMPAIGN.md</code> fleet table: task, worker,\nbranch, worktree, session id, dispatch time, and status (with expected\nduration while the worker runs).</li>\n<li>Claude workers: <code>isolation: 'worktree'</code> gives a writer its own worktree and\nbranch without manual setup, and SendMessage steers a running agent instead\nof respawning it.</li>\n<li>Use squads only for cohesive sub-goals where three or more leaf tasks must\nintegrate before the conductor needs the result. See <a href=\"references/squads.md\">Squads</a>.</li>\n</ul>\n<h2>Collect, Verify, Record</h2>\n<p>The conductor owns correctness:</p>\n<ul>\n<li>Parse each worker report, then inspect the actual diff and rerun the stated\nverification command.</li>\n<li>Integrate branches in dependency order. For many branches or semantic overlap,\ndispatch an integration worker with the intended merge order and conflict\nresolution policy.</li>\n<li>Use cross-model review for high-risk diffs and after wave integration. See\n<a href=\"references/review-gates.md\">Review gates</a>.</li>\n<li>Update <code>CAMPAIGN.md</code> task status as work lands.</li>\n<li>Log durable lessons in <code>LEARNINGS.md</code> immediately after worker failures, user\ncorrections, useful brief fixes, or routing surprises. Compact repeated\nlessons into standing rules before the file becomes expensive to read.</li>\n<li>Check in with the user at phase boundaries and on plan-changing surprises, not\nafter every task.</li>\n</ul>\n<p>On \"pause\" or \"stop\": dispatch nothing new, collect in-flight workers if\npractical, update campaign state files, and report exactly where the campaign\ncan resume.</p>\n","files":[{"path":"assets/campaign-hq/briefs/.gitkeep","sizeBytes":1,"isText":false},{"path":"assets/campaign-hq/CAMPAIGN.md","sizeBytes":292,"isText":true},{"path":"assets/campaign-hq/LEARNINGS.md","sizeBytes":130,"isText":true},{"path":"assets/campaign-hq/out/.gitkeep","sizeBytes":1,"isText":false},{"path":"assets/campaign-hq/preferences.md","sizeBytes":1602,"isText":true},{"path":"assets/campaign-hq/schemas/worker-result.json","sizeBytes":860,"isText":true},{"path":"assets/codex-agents/critic.toml","sizeBytes":448,"isText":true},{"path":"assets/codex-agents/feature.toml","sizeBytes":304,"isText":true},{"path":"assets/codex-agents/grunt.toml","sizeBytes":295,"isText":true},{"path":"references/codex-dispatch.md","sizeBytes":11994,"isText":true},{"path":"references/fleet-operations.md","sizeBytes":2640,"isText":true},{"path":"references/review-gates.md","sizeBytes":6523,"isText":true},{"path":"references/squads.md","sizeBytes":3140,"isText":true},{"path":"SKILL.md","sizeBytes":11247,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-25T06:49:39.885123Z","sha256":"FAE793601A067AD2ADF2F8C40EE13A6F6193160D9FF69DAC5272869A6B278493","sizeBytes":18822},"review":null,"source":{"repositoryUrl":"https://github.com/jvogan/a-fable-of-codexes","path":"skills/campaign-conductor","license":"MIT","commit":"2c85f7ecf418ec9b05e9e5a947a72e485386a4fd","subtreeSha":"A70B8F0010CC89F38DAA5651CF84FA639F8F7EC9FEC582D78965E6889E158013","lastSyncedAt":"2026-09-25T06:49:24.606004Z"},"reviewedAt":"2026-09-25T06:49:58.373417Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/jvogan/a-fable-of-codexes/tree/main/skills/campaign-conductor"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install jvogan-a-fable-of-codexes@llmmart"},{"target":"git","command":"git clone https://github.com/jvogan/a-fable-of-codexes.git"}]}