dispatch
Skill2 starsChanged 6 days agoMITView on GitHub
Use when facing 2+ independent tasks (different test files, different subsystems, different bugs) that can be investigated or fixed in parallel without shared state or sequential dependencies.
40 other projects use a version of this.
Adopted by
Most recently taken up by
- renzrollon/interlocktheir own version, first seen Nov 5, 2026
- dan-myles/skillstheir own version, first seen Nov 1, 2026
- bestony/skillstheir own version, first seen Nov 1, 2026
- mhlaghari/stuntmantheir own version, first seen Nov 1, 2026
- vu1n/pillboxtheir own version, first seen Oct 26, 2026
- noahowsh/birdieapi-mcptheir own version, first seen Oct 25, 2026
Used with
Projects with it also use edge-detection, odds-analysis and 8 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
noahowshSkilledge-detection
Comparing a tennis model's probability with the market: no-vig close, expected value at the best available price, closing line value, fractional Kelly sizing, and the checks that separate an estimated edge from noise. Use when the user has a probability and wants to know whether a price is better than fair, how large a stake is reasonable, or whether an edge is real. Requires a probability the user trusts. Do not use for fetching prices: see odds-explorer. Do not use for devig math alone: see odds-analysis. Do not use for historical testing: see backtesting.
Also in 4 projects that use this
noahowshSkillodds-analysis
Odds math for two-way tennis markets: American to implied probability, margin, devigging (multiplicative, power, Shin), no-vig fair odds, consensus across books, favorite-longshot bias, and expected value of a price. Use when the user asks what a price implies, how to remove the vig, what the true probability is, or how to compare books. Do not use for fetching or comparing live prices: see odds-explorer. Do not use for deciding a bet against a model: see edge-detection.
Also in 4 projects that use this
agiprolabsSkillwalk-forward-validation
Walk-forward validation framework for trading strategies and ML models with time-series-aware splits, overfit detection, and regime-aware validation
Also in 4 projects that use this
Yahmez3Skillbacktesting
Use when backtesting a trading strategy — evaluating a signal series against historical price data and computing performance metrics (Sharpe, Sortino, max drawdown, CAGR, win rate, expectancy). Triggers on "backtest this strategy", "what's the Sharpe on X", "run a walk-forward test", or "compare strategies A and B". Produces equity curves, trade logs, and tear sheets.
Also in 4 projects that use this
ffsshhttiikkSkillfeature-engineering
Machine learning feature engineering
Also in 4 projects that use this
AWSSkillship
Finalize dev work on an issue branch — update docs, push, and open a PR.
Also in 4 projects that use this
- +3 more from noahowsh
Other versions40 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 40
- your-papa/obsidian-Smart2Brain★ 1.3ksame name
- s2b-dev/smart-second-brain★ 1.3ksame name
- bassimeledath/dispatch★ 411same name
- renzrollon/interlock★ 61same name
- fagemx/edda★ 36same name
- phj128/autoworker★ 18same name
- clonable-eden/cekernel★ 17same name
- mhlaghari/stuntman★ 16same name
- YippeeXuXu/dsh-collab-mode★ 5same name
- BigY0shi/super-skills★ 4same name
30 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository47 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- autonomizeSkill
- blueprintSkill
- brainstormSkill
- captureSkill
- checkpointSkill
- close-outSkill
- coordinateSkill
- cycleSkill
- deliverSkill
- design-proposalSkill
- discoverSkill
- draft-planSkill
- envisionSkill
- executeSkill
- extract-conventionsSkill
- glossarySkill
- humanizeSkill
- human-viewSkill
- improve-promptSkill
- memory-auditSkill
- new-agentSkill
- new-agents-mdSkill
- new-hookSkill
- new-mcpSkill
- orchestrateSkill
- pr-authorSkill
- prepSkill
- pre-pushSkill
- pr-triageSkill
- recapSkill
- retrospect-coreSkill
- reviewSkill
- rulesSkill
- shortcutsSkill
- specSkill
- systematic-debuggingSkill
- test-driven-developmentSkill
- update-changelogSkill
- update-codemapSkill
- using-git-worktreesSkill
- visualise-codemapSkill
- visualSkill
- work-stateSkill
- wrapSkill
- write-testsSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. 0 are common, 11 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 38 edited versions we read keep these.
11
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 12
When you have multiple unrelated failures (different test files, different subsystems, different bugs), investigating them sequentially …
- Distinctive: line 24
No shared state between investigations
- Distinctive: line 64
Verify fixes don't conflict
- Distinctive: line 65
Run full test suite
- Distinctive: line 72
Self-contained: - All context needed to understand the problem
- Very specific: line 102
Read the effective autonomy contract once per dispatch batch — .claude/autonomy/active.md, falling through to the rule-tier autonomy: …
- Very specific: line 107
No contract set and no rule-tier default → dispatch as balanced / forks-only.
- Very specific: line 119
Opt-in is per-agent and detected automatically: add ## Output contract and ## Required reads sections to the agent's .md and the hook …
- Distinctive: line 125
Every dispatch prompt carries one line:
- Distinctive: line 129
When a reply carries one, the output-contract hook flags it.
- Distinctive: line 169
Before dispatching, check the parent's tier and the requested subagent's tier.
- Distinctive: line 176
Before dispatching, check the current spawn depth.
- Distinctive: line 195
Bulk-batch exception: when the parent has already established a batch ("I'm batching N file-reads to subagents") in user-visible text once …
- Distinctive: line 202
Run full suite: - Verify all fixes work together
“Common” is measured: kept by at least 6 in 10 of the 38 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Dispatch
Overview
You delegate tasks to specialized agents with isolated context. By precisely crafting their instructions and context, you ensure they stay focused and succeed at their task. They should never inherit your session's context or history — you construct exactly what they need. This also preserves your own context for coordination work.
When you have multiple unrelated failures (different test files, different subsystems, different bugs), investigating them sequentially wastes time. Each investigation is independent and can happen in parallel.
Core principle: Dispatch one agent per independent problem domain. Let them work concurrently.
Before any Agent-tool call, walk the three hard-cap gates in Hard caps. A failed gate aborts the dispatch. The hard caps prevent runaway recursion, geometric cost compounding, and parent loss of synthesis — failure modes the soft "When to Use" heuristics below do not catch on their own.
When to Use
Use when:
- 3+ test files failing with different root causes
- Multiple subsystems broken independently
- Each problem can be understood without context from others
- No shared state between investigations
Don't use when:
- Failures are related (fixing one might fix others): investigate together first
- Understanding needs the whole system, or you don't know what's broken yet
- Agents would interfere (same files, same resources)
The Pattern
1. Identify Independent Domains
Group failures by what's broken:
- File A tests: Tool approval flow
- File B tests: Batch completion behavior
- File C tests: Abort functionality
Each domain is independent - fixing tool approval doesn't affect abort tests.
2. Create Focused Agent Tasks
Each agent gets:
- Specific scope: One test file or subsystem
- Clear goal: Make these tests pass
- Scope, stated positively: name what they may edit (e.g. "edit only
src/auth/"). Negative "don't touch X" fences barely work on their own (~0% deterrent — see/orchestrate's sourced finding); positive scope guides attention, and hard placement (worktree / allowlist) is what holds them in bounds. - Expected output: Summary of what you found and fixed
3. Dispatch in Parallel
// In Claude Code / AI environment
Agent("Fix agent-tool-abort.test.ts failures")
Agent("Fix batch-completion-behavior.test.ts failures")
Agent("Fix tool-approval-race-conditions.test.ts failures")
// All three run concurrently4. Review and Integrate
When agents return:
- Read each summary
- Verify fixes don't conflict
- Run full test suite
- Integrate all changes
Agent Prompt Structure
Good agent prompts are:
- Focused - One clear problem domain
- Self-contained - All context needed to understand the problem
- Specific about output - What should the agent return?
- Depth-annotated - Tells the subagent its current depth and remaining depth budget (required by Gate 2 of Hard caps).
- Budgeted — carries a
maxTurnsscaled to the autonomy contract'seffort(see "Autonomy contract at dispatch" below). - Ask-postured — carries the contract's
askposture, so the unit knows whether to return BLOCKED on a fork or run to its budget.
The delegation brief
A delegated unit's prompt carries five fields — the standing shape of a dispatch, not a suggested outline:
- Goal — what done looks like, one or two sentences.
- Files — exact
path:linepointers to where the work happens. - Constraints — the conventions and boundaries that bind this unit.
- Acceptance — the observable criteria the result must meet.
- Verify — exact commands. For a below-parent-tier dispatch this field is required, not advisory: a unit routes below the parent's tier only when a command can catch it being wrong, and the brief is where that command becomes visible to the executor.
Pointers, not pastes. Paste only what the executor cannot cheaply derive itself — error output, cross-package signatures. Everything else travels as a path:line pointer; a pasted file body is paid for twice, once in the parent's context to produce and once in the child's to receive. And explore before dispatching: the parent has already paid for orientation, so resolve the pointers yourself (or via a scout) rather than making the executor re-discover context you already have. Explore only what the units share — per-unit discovery belongs in the unit.
The depth annotation is a single line at the top of the subagent's prompt:
You are a depth-N subagent. Maximum allowed depth is 2. You may spawn one more level only if N < 2; beyond that, return work to your parent rather than spawning.Where N is the current depth (1 if dispatched by the user-facing agent, 2 if dispatched by a depth-1 subagent). The parent always knows N because the parent itself was told its depth on dispatch — passing the count down by convention requires no harness change.
A full prompt with the annotation: reference.md, Full example.
Autonomy contract at dispatch
Read the effective autonomy contract once per dispatch batch — .claude/autonomy/active.md, falling through to the rule-tier autonomy: default (autonomize) — and wire two fields into every unit:
effort→ step budget. Scale the unit'smaxTurns:minimal→ tight (~8 turns; favour an early BLOCKED over deep work),balanced→ ~15,thorough→ ~25,exhaustive→ ~40. Anchors, not law — scale to unit size.maxTurnsdoes not cascade from the parent; set it explicitly on every unit.ask→ return posture.forks-only→ return BLOCKED on a real fork rather than guessing;every-step→ more granular partial returns (no mid-flight confirmations exist);until-blocked→ run to the budget.
No contract set and no rule-tier default → dispatch as balanced / forks-only.
This section is the single owner of contract-to-dispatch wiring; orchestrate's Q3 references it rather than restating it.
Consult returns (below-parent-tier units)
A unit dispatched below the parent's tier gets a channel to ask instead of guessing. Before writing that prompt, read consult.md: it gives the lines to paste (stop and consult before the first state change, when stuck, or before switching approach; the hard-rule form for the lowest tier). The parent answers in a few sentences, caps it at two consults per unit, and adds no consult lines to parent-tier dispatches.
Output contract (for agents that declare one)
Some agents under agents/ declare an ## Output contract section specifying a YAML schema their response must follow. When such an agent is dispatched, a PostToolUse hook on the Agent tool (hooks/agent-output-contract-validator.js) validates the last fenced ```yaml block in the response and emits a non-blocking advisory in the orchestrator's next turn if the block is missing or malformed.
Opt-in is per-agent and detected automatically: add ## Output contract and ## Required reads sections to the agent's .md and the hook starts checking on the next dispatch. There is no allow-list to maintain. Agents without those sections are unchanged in behaviour.
The advisory is informational — it never rejects the agent response, so an orchestrator that needs strict compliance must re-dispatch on its own initiative.
Harvesting subagent state
Every dispatch prompt carries one line:
If you reach a decision, lesson, or landmine worth remembering beyond this task, emit a
harvest:block per the return contract (decisions / lessons / open_questions). Omit it entirely if there's nothing worth keeping.
When a reply carries one, the output-contract hook flags it. Route each item only on the user's confirmation; the schema and routing are in harvest.md. Nothing is auto-written.
Common Mistakes
❌ Too broad: "Fix all the tests" - agent gets lost ✅ Specific: "Fix agent-tool-abort.test.ts" - focused scope
❌ No context: "Fix the race condition" - agent doesn't know where ✅ Context: Paste the error messages and test names
❌ Negative fence: "Do NOT change production code" — ~0% deterrent on its own (see /orchestrate)
✅ Positive scope: "Edit only the test files" — and for write tasks, place the agent where that scope is physically enforced
❌ Vague output: "Fix it" - you don't know what changed ✅ Specific: "Return summary of root cause and changes"
Tier and effort selection
The gates below only prevent bad dispatches; they don't pick good ones. Before walking the gates, choose the lowest tier the unit's judgment load allows — the default is not "parent tier for everything":
| Unit shape | Model | Reasoning effort |
| Bulk mechanical work, no judgment — file sweeps, renames, grep-and-collect, fixture generation, format conversion | haiku | low |
| Scoped implementation with a known approach — write/fix code in one module, make failing tests pass, apply a described refactor | sonnet (or the matching -pro agent) | inherit |
| Judgment-heavy work — design decisions, cross-module synthesis, review verdicts, root-cause analysis | inherit the parent model (no override) | inherit; raise only for the hardest verify/judge units |
Three rules ride on the table:
- Tier zero is a script. If the unit is fully deterministic — a rename sweep, a format conversion, grep-and-collect, fixture generation from a template — write and run a script instead of dispatching any model. A script is cheaper than any tier, exactly repeatable, and reviewable as an artifact. The general rule: pick the cheapest executor sufficient for the unit's nature — script, then cheap model, then parent model — never its size.
- Downgrade is the default question. For every unit, ask "what judgment does this actually need?" before dispatching at parent tier. Parent-tier-for-everything is the silent cost failure the gates cannot catch — they cap escalation, not waste.
- A unit that mixes shapes is two units. A mechanical sweep plus a judgment call is two dispatches at two tiers, not one dispatch at the higher tier.
Reasoning effort follows the same logic: set effort in the agent definition (or accept the definition's value); drop to low for mechanical units, raise only for the hardest verify/judge units.
Hard caps
Three gates every dispatch must pass. These are hard caps, not heuristics — a failed gate aborts the dispatch. They exist because the failure mode they prevent (runaway recursion) is severe and silent: by the time the call tree is deep, the parent has already lost the ability to synthesize, and cost has compounded geometrically.
Gate 1 — Tier check
Before dispatching, check the parent's tier and the requested subagent's tier.
- If the parent is Haiku, refuse to spawn. Haiku-tier agents do not spawn further subagents. If a Haiku-tier task realizes it needs to delegate, the task was wrong-sized for Haiku — return work to the parent rather than spawning. Haiku is for bulk mechanical work with no judgment; the very act of needing to delegate is itself a judgment signal.
- If the requested subagent tier is higher than the parent's tier, refuse to spawn. Anti-escalation rule: subagents do not spawn at a higher tier than their parent. Return to the parent with a one-line user-visible justification for the tier upgrade so the parent can dispatch directly. Subagents do not silently upgrade themselves.
Gate 2 — Depth check
Before dispatching, check the current spawn depth.
- Maximum spawn depth is 2. Parent → subagent → at most one more tier. Beyond that, synthesis becomes impossible to track and the parent loses any meaningful claim to "owning the final output."
- If the current depth is 2 or greater, refuse to spawn further. Do this work in the current agent.
- Sibling spawns at the same depth are not capped. A parent spawning N independent subagents in one batch is fine and encouraged — the cap is on depth, not width.
How to know the current depth: subagents are told their depth by the parent in their prompt (see "Agent Prompt Structure" — every dispatch annotates the subagent's depth). Subagents that didn't get the annotation conservatively assume they are at depth 1 and refuse further dispatch.
Gate 3 — Justification surface
Even when Gates 1 and 2 pass, the dispatch protocol requires user-visible text before the Agent-tool call:
- Which subtask is being delegated.
- Why it benefits from a fresh subagent (isolation / parallelism / mechanical work).
- Which tier is being chosen and why (if not the parent's tier or below).
- How the parent will synthesize the subagent's output.
This is the right interrupt point — the user can stop a dispatch before it happens. Interrupting after the subagent is already running wastes the spawn cost.
Bulk-batch exception: when the parent has already established a batch ("I'm batching N file-reads to subagents") in user-visible text once in the session, subsequent dispatches in that same explicit batch may skip restating the justification. The framing covers them. New batches require new justification.
Verification
After agents return:
- Review each summary - Understand what changed
- Check for conflicts - Did agents edit same code?
- Run full suite - Verify all fixes work together
- Spot check - Agents can make systematic errors
A worked example, the decision graph and the pattern's benefits: reference.md.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

