agentleFS
ucsandmanucsandman/claude-skills/dispatch-blocks/SKILL.md

dispatch-blocks

Skill5 starsChanged 2 months agoMITView on GitHub

Use the established brief blocks when dispatching subagents or workflows.

  • Reads credentials

The file

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    When mandated, 13/13 parallel fix agents complied and produced non-vacuous fixes.

    line 89

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Dispatch Blocks

Reusable brief blocks for subagent dispatches. Each exists because its absence caused a recorded failure (session-archaeology corpus, 2026-08-14; recurrence counts cited). Pick EVERY block that matches the dispatch and paste it into the brief. Do not paraphrase — these exact framings are the ones measured to work.

Selection table

Dispatch involves...Blocks to include
2+ agents editing one treeOWNERSHIP
3+ parallel agents on one repo/factsGROUND TRUTH
Any bugfix taskREVERT-TO-RED
Feature wrapping an external CLI/binaryREAL-BINARY
Any gate/verify/test-running agentRTK-DISTRUST
Proof/test-only taskPURE-TEST STOP
Tournament or design judgingDEFAULT-FATAL JUDGE
Review personasREAD-ONLY REVIEWER
New tool in ~/.claude/toolsHARNESS TOOL FAMILY
Launches or waits on a server/processREADINESS-POLL
Any Workflow agent() callWORKFLOW-LEAN
Reads an API, MCP server, GitHub, docs, a web page or a windowDECLICK-FIRST
Builds anything that calls a modelNO-API

Also: per CLAUDE.md, every dispatch sets model: explicitly, and test/build commands run foreground with a timeout (slow-command-guard enforces this mechanically).

DECLICK-FIRST — mandatory when the agent reads anything outside the repo

Lean agent types carry no MCP tools and no browser; declick is how they reach the same targets, as trimmed JSON. Added 2026-09-03 (Wes: use declick wherever it saves tokens).

DECLICK FIRST. You have no MCP tools and no browser; you have the declick CLI.
Before WebFetch, curl, a screenshot or a DOM read: `declick list` (what exists),
`declick describe <name> --verb <verb>` (under 500 tokens), then
`declick run <name> <verb> <args> --fields a,b --limit N` (trimmed JSON, exit 0 ok).
GitHub = ghcli or github, docs = c7, X = xapi, DashClaw = dashclaw-mcp, Offlocal = offlocal.
A page's links/buttons/inputs = `declick web tree <url> --selector <css> --limit 20`; "does the page say X" = `declick web text <url> --grep X`;
a window = `declick desk tree <title> --interactive`.
Never edit ~/.declick by hand. Report the exact declick command you ran with each fact.

WORKFLOW-LEAN — mandatory for every Workflow agent() call

Measured 2026-09-02 over 1,873 workflow spawns: the default agentType paid 51k tokens of catalog before its first tool call; a lean type paid 27k. Not an instruction to paste into a brief; a rule for the script itself.

Pair agentType with model on every agent() call:
  {model: 'sonnet', agentType: 'sonnet-implementer'}
  {model: 'opus',   agentType: 'opus-owner'}
  {model: 'haiku',  agentType: 'haiku-scout'}
Omit agentType only when the stage needs WebFetch, an mcp__ tool, Skill or Artifact,
and say why in the label. Never pair a lean type with a different model tier.
Fable synthesizer calls stay bare (no lean Fable type exists).

OWNERSHIP — mandatory for 2+ agents in one tree

Reused verbatim ×21 across DashClaw, pineapple, phone-claude; its absence caused two reflog-recovery incidents from shared-index races.

FILE OWNERSHIP: Edit ONLY the files on your list:
  <explicit file list>
Touch nothing else. Do not run ANY git commands (add/commit/stash/checkout) — the
coordinator owns staging and commits. Match the existing style of each file exactly.
Your test command is: <command>. Run it foreground with a timeout and read the real
exit code.

GROUND TRUTH — mandatory for 3+ parallel agents on one repo

Reused ×11 in one sweep; its absence cost ~12 judge agents re-reading the same five files from scratch.

VERIFIED GROUND TRUTH about <target> as of <date> (do NOT contradict these; they were
measured today):
  <bullet list of measured facts>
Do not re-verify these. Verify only what your specific task adds on top of them.

REVERT-TO-RED — mandatory for every bugfix task

When mandated, 13/13 parallel fix agents complied and produced non-vacuous fixes; when absent, a regression test shipped that still passed with its fix reverted.

Regression-test discipline (mandatory, in this order):
1. Write the regression test FIRST.
2. Prove it FAILS against the pre-fix code, with the failure message you expect.
   Get the pre-fix code from a COPY: `git show HEAD:<path> > <scratchpad>/<name>` and
   point the test at the copy, or copy the tree to the scratchpad. NEVER git stash,
   git checkout, git restore or git reset in the working tree: other agents are
   editing it, and a stash whose pop conflicts leaves everyone on a reverted base.
3. Apply the fix. Prove the test passes.
4. Report BOTH observations (the red run and the green run) in your DONE report.
A test never seen red proves nothing.

Step 2's mechanism is not optional: on 2026-09-03 (declick, 17-agent fix-findings run) a reviewer stashed the shared tree to see the red run, its pop conflicted on a sibling's edit, and a 25-file fix pass sat reverted under six concurrent agents for an hour. The git-tree-guard hook now denies stash/checkout/restore/reset/clean in Bash as a backstop; the block above is what keeps agents from needing it.

REAL-BINARY — mandatory when the feature shells out to an external CLI

A 9-task plan shipped dashclaw install openclaw with 35 passing tests and the feature had never run once — every test mocked the subprocess.

At least one verification step MUST execute the real <binary> end to end and assert on
its actual output. Mocked subprocess calls do not count toward "works". If the real
binary cannot run in this environment, report BLOCKED — do not substitute a mock and
call it verified.

RTK-DISTRUST — mandatory for every gate/verify agent

Hand-injected ×9 into verification prompts; rtk compression misreported commit file counts and hid a real pytest failure.

Do NOT trust compressed or piped summaries — pipe each command's output to a log file,
read the actual exit code separately, and quote failing lines from the log. If a
summary and an exit code disagree, the exit code wins; re-run with `rtk proxy` to see
raw output.

PURE-TEST STOP — for proof/test-only tasks

Keeps bug-fixing and test-writing in separate reviewable commits.

This is a PURE TEST task — no production code changes of any kind. If a test failure
reveals a real production bug, STOP and report BLOCKED with the evidence (failing
test, observed vs expected) instead of patching production code inside this task.

DEFAULT-FATAL JUDGE — for tournament/design judging

Reused verbatim ×5 per panel; skeptics repeatedly caught finders who checked one instance of a pattern and concluded about all of them.

You are an adversarial judge. Your DEFAULT VERDICT IS FATAL — assume the proposal is
broken until it survives your attack. Attack the weakest load-bearing claim first.
State explicitly how many instances of each pattern you examined (not just the first).
A verdict of "survives" requires naming what you tried that failed to kill it.

READ-ONLY REVIEWER — for review personas

Reused verbatim ×5 across a 5-persona pre-merge audit.

Do not edit files. Produce concise findings with file paths and line numbers,
severity, and rationale. Also say explicitly if there are no material findings.

HARNESS TOOL FAMILY — for new tools in ~/.claude/tools

Produced five clean single-pass tool builds back to back in one afternoon.

This machine has a family of zero-dependency Node tools in
~/.claude/tools/ (spend, recall, gitradar, cronwatch, envdoctor). Match
their conventions exactly: single .cjs file, zero npm dependencies, generated .html
output is gitignored, a README.md, and an --open flag that opens the rendered page.

READINESS-POLL - mandatory for any dispatch that starts or waits on a server/process

A subagent sat 20 minutes "waiting for the ready signal" on 2026-08-21 while both ports were already LISTENING; launch.py had been up in 30s. Notifications are not truth; the port is.

Do not wait for a ready notification. Poll the real condition (port listening /
health URL 200 / the exact log line) in a tight loop with a HARD cap (launch.py
90s, local web app 60s, API 30s). When it passes, proceed immediately. On timeout,
read the log and report BLOCKED with the exact blocker - never extend the wait.
Finish the whole task within <N> minutes or report BLOCKED.

ONE-SHOT FOREGROUND — mandatory for every detached claude -p builder

The 2026-09-04 miplib-open builder started a 27 minute HiGHS screen with run_in_background, replied "I'll continue when it completes", and exited at 17 minutes with 6 of 40 instances measured and nothing committed. A -p run is one turn; ending the turn kills the process and every child. detached-builder.mjs prepends this automatically and flags a promise-shaped result as ABANDONED; put it in any brief that goes another way.

You are a one-shot claude -p run. The moment you end your turn the process exits and every
background task, shell job, or child you started dies with it. NEVER use Bash
run_in_background, Monitor, or "I will continue when it completes". Run long measurements in
the foreground with an explicit timeout, split into chunks under 10 minutes each, read each
chunk's output, and keep working until the whole brief is finished and pushed.

NO-API — mandatory for every builder that writes code calling a model

The 2026-09-03 TradesDesk builder wired @anthropic-ai/sdk with an ANTHROPIC_API_KEY because its brief never said not to. Wes's rule: subscriptions only, never per-token API.

Model calls in anything you build run through the Claude Code CLI (claude -p, argv array,
stdin prompt, --output-format json, env stripped of every CLAUDE*/ANTHROPIC_* var) or the
Codex CLI on the monthly subscription. NEVER the Anthropic API, never @anthropic-ai/sdk or
api.anthropic.com, never an ANTHROPIC_API_KEY in code, env examples, or docs. Reference:
C:\Projects\discovery-loop\loop.py call_model.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

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.