agentleFS
CarriedWorldUniverseCarriedWorldUniverse/nexus/.agents/skills/dispatch/SKILL.md

dispatch

Skill0 starsChanged 34 days agoApache-2.0View on GitHub

How to dispatch a ready ticket to a builder aspect and CONFIRM it actually started. For the orchestrator, not the builder. The send_chat "ok" is not acceptance — verify the runner took it.

  • Commits and pushes

40 other projects use a version of this.

Adopted by

Most recently taken up by

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.
  • noahowshSkill

    edge-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

  • noahowshSkill

    odds-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

  • agiprolabsSkill

    walk-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

  • Yahmez3Skill

    backtesting

    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

  • ffsshhttiikkSkill

    feature-engineering

    Machine learning feature engineering

    Also in 4 projects that use this

  • AWSSkill

    ship

    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

The file

We split this skill into the rules it gives an agent

3 rules. 0 are common, 1 is distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 38 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    ALWAYS specify the provider, ATTACHED to the agent with %: anvil%codex, plumb%codex.

    line 39
  2. Very specific:

    Read the BROKER container (the pod has 3 containers.

    line 57
  3. Distinctive:

    Only now: mark the ticket In Progress and report it dispatched.

    line 70

“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.

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

dispatch

You are the orchestrator. You are routing ready work to a builder and you are ACCOUNTABLE for confirming it ran. A dispatch that didn't start is worse than no dispatch — it looks done and isn't.

The one rule that matters

send_chat returning "ok" means the CHAT MESSAGE stored. It does NOT mean the builder accepted the job. The dispatch can fail milliseconds later in the runner and you will not be told on the channel you acted on. Never mark a ticket In Progress or report "dispatched" on the strength of "ok". Verify against the broker (step 4) first. (Until NEX-640 lands, the system won't hand you an honest result — you must go get it.)

1. Pick the builder

  • Builders = aspects with an aspect-keyfile-<agent> secret: anvil, plumb (codex builder pods, idle at 0/0 = dispatch-on-demand; the runner launches an ephemeral Job per dispatch — they do NOT need to be scaled up).
  • One ticket per builder at a time. Builders run in parallel. Alternate anvil/plumb, prefer idle.

2. Write the directive

First line is the directive; everything after is the task brief.

!dispatch <agent>%<provider> repo=<repo> ticket=<KEY> <one-line task>
<full brief on following lines>
  • <agent> is the BUILDER (anvil/plumb) — NOT the ticket key. Putting the ticket key in the agent slot is the classic failure: it parses (unknown agents default to enabled), then dies deep in the runner with aspect-keyfile-<KEY> not found.
  • ALWAYS specify the provider, ATTACHED to the agent with %: anvil%codex, plumb%codex. Syntax is agent%provider, NO space — anvil %codex as a separate token parses as TASK TEXT, leaving provider empty. Empty provider → the runner DEFAULTS to "claude" (runner.go:614-616) → a codex aspect gets a claude-shaped Job with NO codex-auth init container → codex runs unauthenticated (no /root/.codex/auth.json) → exit 1 → 30m idle → produces NOTHING, no log trail. Silently burned two dispatches on 2026-06-13. anvil/plumb are codex → anvil%codex / plumb%codex. (NEX-647 = fix the runner to read the aspect's configured provider so this stops being needed.)
  • Set the comms topic to the ticket key so the builder's replies thread there.
  • The brief body MUST include the cloud-git-workflow + developer-standards blocks (clone /work yourself, cw setup-git github, gh pr create, one ticket per PR, rebase, tests, CI green, reviewer = orchestrator, no self-merge).

3. Submit

Send it. You will get "ok". Ignore it as a success signal. Go to step 4.

4. VERIFY ACCEPTANCE (mandatory gate — do not skip)

Read the BROKER container (the pod has 3 containers; containers[0] is the tailscale sidecar and will mislead you — always -c broker):

POD=$(kubectl -n nexus get pod -l app=nexus-broker -o jsonpath='{.items[0].metadata.name}')
kubectl -n nexus logs "$POD" -c broker --tail=60 | grep -iE 'dispatch|runner|err='
kubectl -n nexus get jobs,pods | grep run-

Require ALL of:

  • runner.Submit returned ... err=<nil> (NOT a WARN "submit failed").
  • runner: builder job created.
  • a builder-<agent>-run-… Running pod.
  • ideally the builder's own first ack in the ticket thread (true acceptance).

Only now: mark the ticket In Progress and report it dispatched.

5. Failure playbook (what step 4 catches)

  • aspect-keyfile-<X> not found → wrong agent slot (X is the ticket key, not a builder) OR that builder has no keyfile secret. Re-dispatch to a real builder.
  • agent <X> is dispatch-disabled → enable it or pick another builder.
  • pod ImagePullBackOff / CrashLoopBackOff → builder image or boot problem; escalate.
  • broker logs skipping git credential grant; git credential name not configured → expected; the builder self-provisions via cw setup-git github per the brief. Only a problem if the builder later can't push.

6. Watch to completion

Acceptance (step 4) ≠ completion. Poll the ticket thread / the repo for the pushed branch + opened PR. On PR open, switch to the review skill. On a builder going quiet with no PR after a reasonable window, read its run pod logs (kubectl -n nexus logs <builder-pod>) — chat-emit can drop a builder's text on non-zero exit, so absence of a reply is not absence of work.

Why this skill exists

A mis-dispatch (ticket key in the agent slot) once looked successful for an hour because "ok" was trusted and the failure was a buried WARN. NEX-640 makes dispatch first-class — 200 only when the builder is up and has accepted, errors escalated. When that ships, delete step 4's manual verification; until then it is the contract enforced by hand.

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.