agentsclimarketplace

Agent task splitter

Skill WenyuChiou/agent-collab-skills/skills/agent-task-splitter

Use when the user asks to split a goal across Claude, Codex, or Gemini (gemini requests are rerouted - lane deprecated); plan a multi-agent run; break work into parallel agent tasks; or decompose a large task that needs bounded context handoffs. This is the **generic** multi-agent task splitter — writes `.coord/plan.yml` (a DAG) plus per-agent task files. NOT for research-domain routing that touches `.research/`, `.paper/`, or Zotero/Obsidian/NotebookLM ingest pipelines — for those, use `research-hub-multi-ai` instead (different artifact `.coord/multi_ai_plan.md`, research-hub-aware reconciliation).From its SKILL.md

Install
npx -y skills add WenyuChiou/agent-collab-skills --skill agent-task-splitter

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 23 stars23 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

29.9 KB, ~7.9k tokens by cl100k_base, as published. Nobody here has run it

agent-task-splitter

Bridge between a high-level goal and the multi-agent execution pipeline. You write .coord/plan.yml (the DAG) and the per-agent task files. The delegate skills (codex-delegate; historically gemini-delegate) invoke the agents using those task files. The reconciler reads what they produce.

This skill does not invoke any agent. It only plans and writes files.

DEPRECATION + REROUTE (2026-06-18, updated 2026-07-10): the Gemini lane is DEAD — it fails closed. Never emit agent: gemini tasks. Reroute what used to go there:

Used to route to geminiRoute now
CJK / bilingual judgment, 語感, long-form writingclaude (inline — judgment stays with the orchestrator)
Bulk mechanical CJK (mirror sync, term sweeps)codex
Long-context reading + synthesisclaude inline, or claude-cheap when the reading is extraction/transcription-shaped
Second-opinion review of generated outputclaude (a review is an honesty-critical task — never a cheap tier)
Antigravity CLI (agy) via antigravity-delegatePROMOTED 2026-07-11: pre-registered k=5 reliability gate 5/5 (mc12: fresh sandbox per trial, decoy untouched, judgment question escalated verbatim, zero git ops) on top of the n=1 capability probe (mc11, 2026-07-10) — routable for bounded mechanical subtasks like codex / claude-cheap; cheap-tier guardrails unchanged (never reviews, completion verdicts, governance, or anything ambiguous)

The gemini value remains PARSE-ONLY so reconcilers can read historical plans; §6b is retained as a legacy reference.

Why use this instead of hand-rolling briefs

The supervisor (Claude) writing 2-3 brief files by hand looks cheap but costs token + drift in two specific ways:

Hand-rolled briefsThis skill
Same context block (file paths, conventions, in-scope list) repeated across 3 task files — 3× redundant token cost in main session.Splitter writes once into .coord/plan.yml, references it from each task file.
Subtle drift between briefs ("Codex was told to update README, Gemini was told to mirror Stage 6" — but Codex's scope quietly included Stage 6 too). F11 incident shipped because of this.Splitter computes the file-scope set once and propagates the disjoint partition.
Operator forgets which agent gets which task type (codex for mechanical, gemini for long-context CJK).Routing rules baked in — same agent gets the same shape of work every time.

Measured impact (real dogfood, 2026-05-14)

SetupMain session tokensNotes
With splitter (R2 + R4 combined: 2 parallel Codex + 1 mirror sync Gemini)~9k tokens (R2 ~5k + R4 ~4k, measured)Splitter wrote 5 KB of plan.yml + briefs; main session read only structured summaries
Hand-rolled equivalent (estimated counterfactual)~107-127k tokens (R2 control ~37k + R4 control ~70-90k)Operator inlines all context per brief, parses each agent's raw stdout, reconciles by hand
Saving~12-14× combined (R2 ~7× + R4 ~17-22× per round)Plus the splitter's disjoint-scope partition prevented F11-class drift

The skill earns its keep when ≥ 2 subtasks go to different agents (or same agent in parallel). For 1-shot delegation, call the delegate skill directly.

Anti-patterns this skill prevents

  • F11 (cross-agent scope creep): Agent A sweeps a rule into files that were Agent B's responsibility. Prevented by .coord/plan.yml's explicit files_in_scope partition per task.
  • F14 (skipping the splitter for "small enough" 2-agent runs): Operator decides to hand-roll because "it's only 2 tasks", and the drift catches them later. The CLAUDE.md template below makes the trigger mechanical: ≥ 2 parallel delegates → splitter is mandatory, no judgment call.

CLAUDE.md snippet to enforce routing

## Multi-agent routing rule (enforced)

If a single round needs ≥ 2 delegate agents running in parallel (e.g.,
codex + claude-cheap, or 2 codex on independent subtasks): invoke
`Skill("agent-collab-workspace:agent-task-splitter", args="round=N ...")`
FIRST. Do NOT hand-roll briefs into `.ai/codex_task_*.md` directly when
≥ 2 are needed in the same round.

Decision rule (no judgment): 1 delegate per round → call delegate
directly. ≥ 2 parallel → splitter first, then per-tool delegate.

When to use

Trigger phrases:

  • "Split this task across Claude / Codex / Gemini." (Gemini requests get rerouted per the deprecation table above.)
  • "Plan a multi-agent run for <goal>."
  • "Break this down into parallel agent tasks."
  • "Decompose this goal into Codex + cheap-Claude subtasks."
  • "Make a .coord/plan.yml for this work."

Not for:

  • Running the agents themselves — that's codex-delegate (the Claude lanes run via the Agent tool; gemini-delegate is deprecated).
  • Reconciling agent outputs after they run — that's agent-output-reconciler.
  • Single-agent tasks — if the whole job is one Codex run, just use codex-delegate directly. This skill earns its keep when there are ≥ 2 subtasks plausibly going to different agents.

Inputs

The user provides one or both of:

  1. The goal: a sentence or paragraph describing what they want.
  2. Constraints (optional): which agents are available, time budget, files in / out of scope, success criteria they already know.

You may also read existing project context if relevant:

  • .coord/memory.yml — prior decisions / open questions (if agent-shared-memory has run before).
  • .research/project_manifest.yml — research project context (if research-context-compressor from ai-research-skills has run).

If the goal is large, cross-session, or likely to involve parallel multi-delegate work, use agent-context-budget before writing task files. It sets the bounded handoff policy that prevents context overflow.

Workflow

0. Verify cwd is the project root before writing anything

.coord/plan.yml, .ai/<agent>_task_*.md, and all downstream artifacts go to the project the agents will modify, not whatever directory Claude currently happens to be in. Before writing anything, confirm:

  1. The cwd matches the repo the user actually means.
  2. If the user is in a worktree (.git is a file pointing to a worktree dir, not a real .git/ directory), confirm they want .coord/ in the worktree or the main checkout — these can differ.
  3. If working across multiple repos in one conversation, ask which one the multi-agent run targets.

This step takes 5 seconds and prevents writing .coord/plan.yml to the wrong filesystem location, which silently breaks downstream agents that look for it relative to their own -C/cwd.

1. Understand the goal

Restate the goal back to the user in 1-2 sentences before planning. If anything is ambiguous (which files, which tests count as success), ask one focused clarifying question before producing the plan. Don't ask 5 questions; ask the single question that most narrows the design space.

2. Decompose into subtasks

Break the goal into 2-7 subtasks. For each subtask, decide:

PropertyHow to determine
idT1, T2, ... contiguous
agentOne of codex / claude / claude-cheap (see classification below; gemini is PARSE-ONLY legacy — never emit it)
modelOptional, claude-cheap only: the cheap tier to pin (default haiku)
slugkebab-case task identifier (≤ 30 chars)
descriptionone line
depends_onlist of T_n ids that must complete first; [] if none
files_in_scopeglob list of files this task may modify
files_out_of_scopeglob list this task must NOT touch
success_criteria1-3 bullets, each a runnable check (pytest, ls, grep) or a checkable assertion

Guidance on subtask granularity: if a subtask exceeds ~50 lines of expected diff or requires more than one round of tool calls, it's too big — split further. If a subtask is < 10 lines of expected work, fold it into a sibling.

3. Classify each subtask: Codex vs cheap-Claude vs Claude

Use this routing table. When in doubt, see references/task_splitter_heuristics.md for nuanced cases. Classification stays with the strong orchestrator — never let a cheap lane reclassify itself (measured basis: the cost-router benchmark in fable-method-harness/benchmarks/route_cost_ab/ — routed = all-strong on quality and stability at ~0.4x cost, and the cheap tier misses subtle-honesty tasks deterministically, 0/5).

Route toBest forAvoid
codexMulti-file mechanical implementation, batch refactors, test scaffolds, regex-able edits across N files, boilerplate generation, codegen from clear specsArchitecture decisions, debugging root cause, security review, ambiguous requirements
claude-cheap (Haiku-class subagent)Single-shot mechanical work that needs no repo-wide edit rights: transcribe, sort, reformat, extract, count, schema-fill, apply-a-stated-pattern on bounded inputANY honesty-critical output: "all green" verdicts, spec-discrepancy checks, reviews, completion claims (measured 0/5 on subtle honesty); ambiguous specs
claudeAPI contract design, bug diagnosis, acceptance review, design judgment, anything needing project memory / cross-conversation context; ALL honesty-critical verdictsToken-heavy mechanical work better suited to codex/claude-cheap
geminiDEPRECATED — never emit. See the reroute table at the top

A useful sanity check: if the subtask is "do X to many files in roughly the same way", that's Codex. If it is "do this one bounded mechanical thing and return the result", that's claude-cheap. If the subtask is "decide whether X is right", that's Claude — always.

4. Identify dependencies (DAG)

For each subtask, list which other subtasks must finish before it can start (depends_on). Common patterns:

  • Linear chain: T1 → T2 → T3 (each depends on previous).
  • Fan-out: T1 → [T2, T3, T4] (T2/3/4 parallel after T1).
  • Fan-in: [T2, T3] → T4 (T4 needs both).
  • Independent: all depends_on: [] — runnable fully parallel.

Avoid cycles. If you have one, redesign.

5. Write .coord/plan.yml

Schema (full reference: references/task_splitter_heuristics.md):

round: 1
goal: "Refactor the auth module into plugin-based architecture"
budget:
  tokens: 200000          # optional, gate skill checks against this
  duration_min: 60        # optional advisory
context_policy:
  main_session_token_budget: 3000
  task_packet_token_budget: 6000
  result_summary_word_budget: 250
  memory_digest_token_budget: 1200
  log_tail_lines_on_error: 50
  raw_log_policy: path-only
  agentmemory: optional
created_utc: "2026-04-28T09:00:00Z"
tasks:
  - id: T1
    agent: codex
    slug: extract-interfaces
    description: "Define abstract base classes in src/auth/interfaces.py"
    depends_on: []
    files_in_scope:
      - "src/auth/interfaces.py"
    files_out_of_scope:
      - "src/auth/legacy.py"
      - "tests/**"
    success_criteria:
      - "src/auth/interfaces.py exists and defines AuthProvider ABC"
      - "no other source files modified"
  - id: T2
    agent: codex
    slug: refactor-providers
    description: "Move existing provider classes to inherit from new ABC"
    depends_on: [T1]
    files_in_scope:
      - "src/auth/providers/*.py"
    success_criteria:
      - "pytest tests/auth/test_providers.py passes"
      - "no imports of src.auth.legacy from other modules"
  - id: T3
    agent: claude-cheap
    model: haiku
    slug: doc-coverage-inventory
    description: "List every public symbol in src/auth and whether it has a docstring mentioning the legacy class (mechanical inventory; the JUDGMENT of coverage adequacy stays in T4)"
    depends_on: [T1, T2]
    success_criteria:
      - "a table of every public symbol in src/auth with has_docstring yes/no"
      - "rows flagged where the docstring mentions the legacy class"
  - id: T4
    agent: claude
    slug: design-review
    description: "Read T1-T3 outputs, verify the architecture choice survives the implementation"
    depends_on: [T1, T2, T3]
    success_criteria:
      - "explicit YES/NO verdict + rationale in chat"

6. Write per-agent task files

Each lane has its own task file convention. Don't use a single template for all — each executor expects its own shape.

Every task brief MUST include a pre-task scope confirmation block (W1, prevents drift):

## Pre-task scope confirmation (REQUIRED — your first action)

Before any file edit, echo back the scope you understand:

  Confirmed scope: will touch
    - <file1>
    - <file2>
  Will NOT touch
    - <file3>
    - any file not listed under "Files in scope" above
    - any meta-documentation table (F11)
    - any unrequested metadata line (F12)

If your understanding doesn't match the brief's "Files in scope"
section, STOP and ask for clarification before editing anything.

This block is verified post-task by agent-acceptance-gate §6.6 (scope diff check via git diff --name-only).

6a. Codex task files (agent: codex)

Path: .ai/codex_task_<NNN>_<slug>.md. <NNN> is the zero-padded round (001 for round 1). Format follows codex-delegate's "Supervisor Workflow" section:

# Task: <description>

## Context
- Repo: <absolute path>
- Plan: .coord/plan.yml (round <N>, task <T-id>)
- Read these files first:
  - <files_in_scope items + relevant references>
- Only modify (files_in_scope):
  - <files_in_scope items>
  - .ai/codex_result_<NNN>_<slug>.md   ← REQUIRED: the result-summary file
- Do NOT touch (files_out_of_scope):
  - <files_out_of_scope items>
- Depends on outputs of: <list T-ids + their result paths>

## Goal
<task.description, expanded with concrete deliverable>

## Constraints
- Follow adjacent code style.
- Do not make architectural changes beyond the scope.
- Do not edit files outside the allowed list.

## Acceptance
- Required tests: <test command from success_criteria>
- Required result summary: write a concise summary to
  .ai/codex_result_<NNN>_<slug>.md
- Summary limit: <= 250 words. Include changed files, tests run,
  risks, and blockers. Do not paste raw logs.

Critical: .ai/codex_result_<NNN>_<slug>.md MUST appear in files_in_scope. The Acceptance section requires writing there; if it's not in scope, codex flags a self-conflict and may refuse to write it.

Critical (Codex invocation): when launching codex directly (not via the codex-delegate wrapper script), close stdin with < /dev/null — codex-cli ≥ 0.121.0 otherwise hangs at "Reading additional input from stdin..." indefinitely. Pattern:

# Preferred: structured result via -o flag (bounded, machine-readable)
codex exec --sandbox workspace-write -m gpt-5.5 \
  -o .ai/codex_result_<NNN>_<slug>.jsonl \
  "Read .ai/codex_task_<NNN>_<slug>.md and execute all instructions inside." \
  < /dev/null

# Fallback (only if you need raw stdout for diagnostics): MUST cap with head
# WITHOUT this cap, codex retries + verbose tool calls can grow logs to
# multi-GB (real incident: 7 GB in .ai/ on 2026-04-17). Never use bare
# `> file.log 2>&1`.
codex exec --sandbox workspace-write -m gpt-5.5 \
  "Read .ai/codex_task_<NNN>_<slug>.md and execute all instructions inside." \
  < /dev/null 2>&1 | head -c 10485760 > .ai/codex_log_<NNN>_<slug>.txt

The codex-delegate wrapper script (run_codex.sh) handles both the -o flag and the 10 MB log cap internally; only direct codex exec calls need to set these explicitly.

6b. Gemini task files (agent: gemini) — LEGACY, DO NOT EMIT

The Gemini lane is deprecated (fails closed). This section is retained ONLY so reconcilers can interpret historical runs' .ai/gemini_* files. Never write a new gemini task file; never dispatch to gemini-cli. Route per the deprecation table at the top.

Path: .ai/gemini_task_<NNN>_<slug>.md. Format follows gemini-delegate's "Supervisor Workflow" — different sections from codex:

# Task: <description>

## Context
- Repo: <absolute path>
- Plan: .coord/plan.yml (round <N>, task <T-id>)
- Read these files first:
  - <files_in_scope items + relevant references>
- Output file(s):
  - <files this task produces>
  - .ai/gemini_result_<NNN>_<slug>.md   ← REQUIRED: the result-summary file
- Depends on outputs of: <list T-ids + their result paths>

## Goal
<task.description, expanded with concrete deliverable>

## Language
- Output language: <English | Traditional Chinese | Simplified Chinese | bilingual>
- Tone: <formal | concise | technical | executive>
- Audience: <who will read it>

## Constraints
- Preserve dates, proper nouns, code identifiers exactly.
- Keep terminology consistent with referenced sources.
- Do not invent facts missing from the inputs.

## Acceptance
- Required verification files: <files Claude will check after run>
- Required sentinel strings: <strings the gate will grep for>
- Required result summary: write a concise summary to
  .ai/gemini_result_<NNN>_<slug>.md
- Summary limit: <= 250 words. Include findings, files inspected,
  risks, and blockers. Do not paste raw logs.
- Self-review checklist (REQUIRED, see docs/observed-failure-modes.md F9):
  Before declaring done, agent must explicitly verify:
  1. Slugs in output files match `plan.yml` slug VERBATIM (F7)
  2. Table column counts are unchanged for any table the task touched (F2)
  3. No time-relative phrases ("today", "this week", "soon") in output (F3)
- Claude will perform a final review (terminology, factual accuracy,
  schema adherence) before merging.

## Banned phrasing (output-language-agnostic, applies in all locales)
- Time-relative: "today", "this week", "yesterday", "soon",
  "recently", "now" — replace with absolute year or "actively
  maintained" / specific date.
- Vague popularity: "popular", "widely used" — replace with star
  count + date or specific user count.
- Unverified status: "production-ready", "battle-tested" — only if
  primary source confirms.

Critical (Gemini-specific, F1 in docs/observed-failure-modes.md): gemini-cli refuses to read gitignored files by default. Since .ai/ is conventionally gitignored to keep transient task files out of commits, this means gemini -p "Read .ai/gemini_task_<NNN>_<slug>.md and execute" WILL FAIL with "File path '.ai/...' is ignored by configured ignore patterns." — this is the single most common Gemini failure mode observed in dogfooding.

(Legacy invocation notes removed 2026-07-10.) The historical cat .ai/gemini_task_* | gemini --yolo -p ... pipe and the .ai/gemini_run_*.sh sidecar convention are documented in this repo's git history (pre-0.2.0) if a historical run ever needs re-interpretation. Do NOT reconstruct or run them — the lane fails closed.

6c. Claude tasks (agent: claude)

Don't write a task file. Claude executes inline in the current conversation. The plan.yml entry serves as the spec.

6c-2. Cheap-Claude tasks (agent: claude-cheap)

Path: .ai/claude_task_<NNN>_<slug>.md — same brief shape as codex task files (scope confirmation block, acceptance, result file .ai/claude_result_<NNN>_<slug>.md), because the executor is a context-blind subagent, not the orchestrating session.

Invocation (Claude Code): spawn a subagent with the model pinned to the cheap tier —

Agent(prompt="Read .ai/claude_task_<NNN>_<slug>.md and execute it
      verbatim; write the result summary to the path it names.",
      model="haiku")

Guardrails (never optional; measured basis: fable-method-harness/core/model_routing_playbook.md):

  • The ORCHESTRATOR classifies; a cheap lane never reclassifies or extends its own scope — uncertainty escalates to claude.
  • No honesty-critical output on this lane — no "all green" verdicts, no spec-discrepancy calls, no reviews, no completion claims (cheap tier measured 0/5 replicate trials on the subtle-honesty task).
  • Every cheap-lane return is re-verified by the orchestrator before merging ("delegate returned" is itself a review trigger).

6d. Task-shape guidance (prevents F6 over-tabularization)

Before writing the task body, classify the task by output shape:

Task shapeFormat guidance to include in brief
Pedagogical (curriculum, tutorial, explainer)"Prefer prose. A table is justified ONLY if (a) data is genuinely comparative (≥3 attributes per row) AND (b) reader will use it as decision tool, not inventory. 'Catalog of N variants' is anti-pattern — replace with prose covering 2-3 axes + <details> for long tail."
Reference (API docs, schema definitions)"Tables OK for structured data. Each table should answer one specific question."
Catalog (project listings, comparisons)"Tables OK but include: (a) ≤ 10 entries in primary table; (b) <details> collapsible for long tail; (c) live gh api verification step for stars/license/pushed_at — required in result.md."
Migration / mechanical edit (rename, replace pattern)"No tables. Concrete file list + diff summary."
Translation / mirror-sync"Maintain source structure VERBATIM. No new tables, no removed tables, no merged tables. Column counts must match per-table across locales. (F2 incident)"

This block should appear in ## Format guidance section of every task brief. Skipping it is the F6 root cause.

Also include these 2 explicit prohibitions in every brief that applies a sweep rule across files (prevents F11, F12):

## Drift guards — DO NOT (F11, F12 from docs/observed-failure-modes.md)

### F11. Skip meta-documentation tables

Do NOT replace term X with term Y in any row that literally documents
the X→Y mapping. This applies to:
- `resources/style-guide.md` contrast tables (zh-TW ↔ zh-Hans conversion)
- Glossary entries where the term being swept IS the entry title
- Any "convention reference" table

The literal term must remain to document the rule itself.

### F12. No metadata injection

Do NOT add any of these lines unless the brief explicitly requests:
- `Attributions: <names>` / `Attribution: <name>` / `Credits: ...`
- `Source: <link>` / `Citation: <ref>` / `References: ...`
- Any meta-line about the document's authorship / sourcing

Glosses are INLINE explanations of jargon, NOT source attributions.
If attribution is needed, the brief will say so explicitly.

6e. Fact-verification step (prevents F4, F5)

For any task that asserts external facts (star counts, model releases, license types, benchmark numbers, paper acceptance status), the task brief MUST include:

## Fact verification (REQUIRED)

Before writing any "★ Nk", "License: X", or "(Year) Model" claim,
run the live check:

  # For GitHub repos:
  gh api repos/<org>/<repo> --jq '{stars: .stargazers_count,
    license: .license.spdx_id, pushed: .pushed_at, archived: .archived}'

  # For arxiv papers:
  curl -s "https://arxiv.org/abs/<id>" | grep -o "title>[^<]*"

Quote the actual returned value in `result.md`. Any claim NOT
verified this way must be marked `(claimed, unverified)` so the
reconciler / acceptance gate can flag it.

This step prevented the DeepSeek-R2 fabrication incident (F4) when applied retroactively.

7. Hand off to the user

End with:

Plan written to .coord/plan.yml (round 1, N tasks).
Task files ready:
  .ai/codex_task_001_<slug1>.md
  .ai/codex_task_001_<slug2>.md
  .ai/claude_task_001_<slug3>.md

Next steps:
  # Run codex tasks (after T1 finishes, T2/T3 can run in parallel).
  # Option A (preferred) — use the codex-delegate wrapper:
  bash .claude/skills/codex-delegate/scripts/run_codex.sh \
    --prompt "Read .ai/codex_task_001_<slug1>.md and execute all instructions inside." \
    --log-file .ai/codex_log_001_<slug1>.txt

  # Option B — direct codex exec with -o for structured result (preferred over raw stdout):
  codex exec --sandbox workspace-write -m gpt-5.5 \
    -o .ai/codex_result_001_<slug1>.jsonl \
    "Read .ai/codex_task_001_<slug1>.md and execute all instructions inside." \
    < /dev/null
  # If you must capture stdout (diagnostics only), CAP it (prevents the
  # 7 GB runaway-log incident — see step 6a):
  #   ... 2>&1 | head -c 10485760 > .ai/codex_log_001_<slug1>.txt

  # Run cheap-Claude tasks as pinned-model subagents (Claude Code):
  #   Agent(prompt="Read .ai/claude_task_001_<slug3>.md and execute it
  #         verbatim; write the result summary to the path it names.",
  #         model="haiku")

  # After all delegate tasks finish, reconcile:
  # invoke agent-output-reconciler in this session

8. Re-plan workflow (when reassigning agents mid-round)

If the user reassigns a task to a different agent after plan.yml and task files were already written (e.g., "actually, T2 should be claude-cheap, not codex"):

  1. Edit the agent assignment in .coord/plan.yml for that single task. Don't bulk-replace — surgical edit only. Bulk sed replacements typically over-match and rewrite assignments you wanted to keep.

  2. Delete the obsolete task file (e.g., the old .ai/codex_task_<NNN>_<slug>.md if T2 was codex and is now claude-cheap). Lingering obsolete files confuse the reconciler — it may pick them up and report on a task that didn't actually run.

  3. Write the new task file in the new agent's format (per step 6a / 6c-2). Slug stays the same; only the agent prefix changes.

  4. If dependents already ran (e.g., T3 ran depending on T2's old codex output): note in the round's .coord/memory.yml that T3's output was based on a now-stale T2; flag for re-review in the reconciliation report.

Re-planning mid-round is normal. The schema supports it; just be explicit about what changed instead of letting orphan files accumulate.

What NOT to do

  • Don't run any agent. This skill stops at writing files.
  • Don't fabricate success_criteria. If the user hasn't told you what success looks like and you can't infer it from context, ask before writing the plan.
  • Don't create unbounded task packets. Use context_policy and keep each task file to the critical files, constraints, and result contract. Link paths instead of pasting logs or long analysis.
  • Don't classify everything as Codex. Real multi-agent runs benefit from heterogeneity. If your plan has 5 tasks all routed to Codex, reconsider whether the goal needs a multi-agent split or just one big Codex run.
  • Don't put architecture / design decisions in agent: codex tasks. Those go to Claude (or to agent-debate if consequential).
  • Don't number <NNN> independently per task. It matches round. All tasks in round 1 use 001 in their filename. The task slug distinguishes them.

Heuristics for the hardest case (when to split at all)

If you find yourself writing a 1-task plan, you're using the wrong skill — invoke codex-delegate or claude directly. The splitter earns its keep when:

  • The goal has both judgment-heavy and mechanical components.
  • Multiple files / domains / stages need work in parallel.
  • A long-context read + a code edit are both required.
  • An adversarial review on the result would be valuable (then consider also queueing agent-debate after).

Subagent review (keep main session lean)

When: ≥ 4 task files written in one round, OR ≥ 2 agents will run in parallel.

Why: The main session that just wrote plan.yml + N task files already holds the entire plan in context. Asking it to also verify slug/agent/path consistency across all task files doubles the context cost. Delegate the verification to a subagent that returns only the verdict.

Pattern (Claude Code's Task tool, or equivalent subagent harness):

Spawn `code-reviewer` subagent with this brief:
- Read .coord/plan.yml + every .ai/{codex,claude}_task_<NNN>_*.md
  generated this round (the gemini glob applies only when reconciling
  a historical pre-deprecation round)
- Verify: (a) each plan.yml task has a matching task file at correct
  path; (b) slugs in filenames match plan.yml task.slug exactly;
  (c) agent assignment matches; (d) no orphan task files from prior
  rounds; (e) each task file's "Output file(s)" section references
  the required result-summary path
- Return: PASS / FAIL + ≤ 200-word verdict + list of any drifted
  slug/agent/path mismatches

Main session reads only the verdict; never re-reads the task files.

If subagent reports FAIL, run step 8 (re-plan) on the flagged tasks before invoking delegates.

Output to user (final message format)

[agent-task-splitter]
  Plan: .coord/plan.yml (round 1, 4 tasks)
  Routing: 2× codex, 1× claude-cheap, 1× claude
  DAG: T1 → [T2, T3] → T4
  Task files ready under .ai/

  Run order (respecting dependencies):
    1. codex T1 (no deps)
    2. codex T2 + claude-cheap T3 (parallel after T1)
    3. claude T4 (after T2 + T3)

  After all 3 external tasks finish:
    invoke agent-output-reconciler

Commit Boundary

Every agent boundary is a commit boundary (see global rule: ~/.claude/CLAUDE.md → "Commit Discipline for Multi-Agent Work"). This makes multi-agent work auditable (commit log = agent log) and enables surgical rollback via git revert <hash> of just one agent's commit.

Specific to this skill: after the splitter writes .coord/plan.yml and per-agent .ai/<agent>_task_<NNN>_<slug>.md files, commit them as a single 'plan commit' before any agent begins execution. This gives every downstream agent's commit a clean parent to attribute work against.

What ships with it: 1 file

6.9 KB alongside SKILL.md

Gives 0 of the 12 instructions most context ai engineering skills give in ~7.9k tokens

Counted across 1,328 of the 2,349 authors here whose files we hold, read 2026-09-06

  • Dispatch a fresh subagent for each taskin 76 of 1328, across 59 files
  • Perform spec compliance review before code quality reviewin 44 of 1328, across 34 files
  • Dispatch a final code reviewer after all tasksin 38 of 1328, across 26 files
  • Answer subagent questions before allowing implementationin 36 of 1328, across 26 files
  • Use the least powerful model capable of the taskin 33 of 1328, across 26 files
  • Create a TodoWrite list for all tasksin 32 of 1328, across 22 files
  • Perform a task review after each implementationin 31 of 1328, across 24 files
  • Extract all tasks and context from the planin 29 of 1328, across 20 files
  • Provide full task text to subagentsin 28 of 1328, across 20 files
  • Use git worktrees for isolated workspacesin 25 of 1328, across 20 files
  • Specify the model explicitly when dispatching a subagentin 23 of 1328, across 18 files
  • Execute all tasks from the plan without stoppingin 21 of 1328, across 16 files

Said here and by no other author read

  • verify current working directory is project root
  • ask one focused clarifying question if goal is ambiguous
  • write plan to .coord/plan.yml
  • write per-agent task files in .ai/ directory
  • include pre-task scope confirmation block in every task brief
  • include drift guards in every task brief

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.