agentleFS
ryanmacleanryanmaclean/skills/dispatch-nu/SKILL.md

dispatch-nu

Skill1 starsChanged 50 days agoMITView on GitHub

Wave-based spec dispatcher for any project using dispatch.codex.nu (Codex+AC hybrid) or dispatch.nu (Auto-Claude only). Spawns Zellij panes, tracks state in JSON, pre-plans via Ollama cloud, routes specs to Codex CLI or Auto-Claude by agent field. Use when checking wave status, launching specs, rescuing stalled panes, resetting failed specs, or bootstrapping a new project dispatcher.

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 1 is distinctive, and 1 is 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.

  • 1

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Every agent dispatched through this skill receives the following appended to its prompt automatically:

    line 150
  2. Very specific:

    If the agent's work is purely planning / research / narrative (no state changes), the agent may omit the <claims> block.

    line 160

≈ “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.codex.nu — Hybrid Spec Dispatcher

Routes specs to Codex CLI (gpt-5.3-codex) or Auto-Claude (run.py) per spec. Pre-plans every spec via Ollama cloud (qwen3-coder:480b-cloud) before dispatch. Tracks state in .codex/dispatch-state.json. Spawns named Zellij panes.

Projects

ProjectDispatcherSession
triz$HOME/triz/dispatch.codex.nuwise-xylophone
dub (EFI)$HOME/dub/dispatch.codex.nuwise-xylophone
bop$HOME/bop/dispatch.nubop

Quick reference

nu dispatch.codex.nu plan                        # show all waves + agent + plan status
nu dispatch.codex.nu status                      # done / failed / pending counts
nu dispatch.codex.nu pre-plan                    # queue all specs through Ollama now
nu dispatch.codex.nu run --wave 1 --yes          # run wave 1 (skips confirmation)
nu dispatch.codex.nu run --yes                   # run all pending waves
nu dispatch.codex.nu watch-handoff --from-wave 1 --to-wave 2 --yes
nu dispatch.codex.nu mark-done 011              # manually mark complete
nu dispatch.codex.nu mark-failed 011            # manually mark failed
nu dispatch.codex.nu reset --spec 011           # reset single spec to pending
nu dispatch.codex.nu reset                      # reset ALL (nuclear)
nu dispatch.codex.nu retry                      # re-queue all failed specs
nu dispatch.codex.nu review 011                 # print spec.md
nu dispatch.codex.nu list                       # table of all specs
nu dispatch.codex.nu lock                       # check active run lock

Launching panes (two-pane pattern)

# Pane A — run current wave
zellij --session wise-xylophone run --name "proj-wave1" --close-on-exit -- \
  nu -c "cd $HOME/PROJ && nu dispatch.codex.nu run --wave 1 --yes"

# Pane B — auto-chain to next wave when A finishes
zellij --session wise-xylophone run --name "proj-handoff" --close-on-exit -- \
  nu -c "cd $HOME/PROJ && nu dispatch.codex.nu watch-handoff --from-wave 1 --to-wave 2 --yes"

Spec table fields

FieldValuesMeaning
wave0–NDependency order — higher = later
cost1–4⚀trivial ⚁small ⚂medium ⚃complex — drives cooldown
agent"codex" / "ac"Routes to Codex CLI or Auto-Claude run.py
mode"direct" / "isolated"direct=writes to repo, isolated=worktree (needs merge)

Cooldown delays (rate limit pacing)

CostDelayTypical specs
1 trivial15sconfig, gitignore
2 small30sdocs, thin wrappers
3 medium60sparsers, commands, extensions
4 complex90sLLM integration, TUI, MCP server

Batch pause of 2 min every 4 specs on wave 2+.

Ollama pre-planning

Runs qwen3-coder:480b-cloud on each spec.md before Codex touches it. Writes .auto-claude/specs/{spec}/plan.md with:

  • Risk register (top 5 risks + mitigations)
  • File order (what to create, in order)
  • Crate audit (APIs to verify before writing)
  • Gotchas (known pitfalls)

Codex receives both spec.md and plan.md as context → fewer wrong turns.

# Pre-plan all specs now (run while waiting for wave 1):
nu dispatch.codex.nu pre-plan

State file

.codex/dispatch-state.json
{"completed": ["001","002",...], "failed": [], "skipped": []}

Pane shell calls mark-done NNN or mark-failed NNN on exit. Signal files also written to /tmp/triz-done-NNN for cross-script coordination.

Rescue playbook

# Stale lock (process died without clearing):
rm .codex/dispatch-lock.json
nu dispatch.codex.nu retry

# Pane exited but mark-done never fired:
nu dispatch.codex.nu mark-done 011

# Spec produced bad output, redo it:
nu dispatch.codex.nu reset --spec 011
nu dispatch.codex.nu run --wave 2 --yes

# Rate limited mid-wave:
nu dispatch.codex.nu retry
nu dispatch.codex.nu run --wave 2 --yes

Bootstrap a new project

Copy the template and edit the specs [] table and constants:

cp ~/.claude/skills/dispatch-nu/dispatch.codex.nu.template /path/to/project/dispatch.codex.nu
# Edit: PROJECT_DIR, specs table (id/name/wave/cost/agent/mode)
# Seed completed: ["any-pre-done-specs"] in state
nu dispatch.codex.nu pre-plan   # plan everything via Ollama
nu dispatch.codex.nu plan       # review
nu dispatch.codex.nu run --wave 1 --yes

dub-specific notes (dispatch.codex.nu)

  • Uses gpt-5.3-codex -c model_reasoning_effort=xhigh
  • Wave 1 is strictly sequential (each spec is the next's input)
  • Isolated specs need manual merge before next wave
  • watch-handoff waits for wave N then auto-starts wave N+1

triz-specific notes

  • 001+002 pre-seeded as completed in state
  • Codex specs: 011, 017, 018, 019, 020 (pure Rust / TypeScript / config)
  • AC specs: 003, 004, 005, 006, 007, 008, 009, 012, 013, 014, 016 (complex LLM/Nu)
  • Wave 1: 011-core-commands via Codex (no LLM deps, deterministic Rust)

Verification contract (auto-injected by proveryay)

Every agent dispatched through this skill receives the following appended to its prompt automatically:

<see ~/.claude/skills/proveryay/CLAIMS-TEMPLATE.md — injected verbatim>

This means every agent MUST emit a <claims> block when it makes any deployment/state-change assertion. The proveryay SubagentStop hook will verify each claim in parallel and inject structured verdicts into the dispatcher's next-turn context.

If the agent's work is purely planning / research / narrative (no state changes), the agent may omit the <claims> block. Proveryay treats absence as silent (no noise).

Invocation example with template injection:

# Prompt injection: template auto-appended (idempotent)
let tpl = (open --raw ~/.claude/skills/proveryay/CLAIMS-TEMPLATE.md)
let prompt = if ($original_prompt | str contains "<claims>") { $original_prompt } else { $"($original_prompt)\n\n($tpl)" }

See:

  • ~/.claude/skills/proveryay/SKILL.md — hook behavior
  • ~/.claude/skills/proveryay/CLAIMS-TEMPLATE.md — canonical format
  • ~/.claude/skills/fleet-eval/SKILL.md — probe taxonomy

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.