agentsclimarketplace

Multi cli spawn

Skill ImL1s/agent-cli-skills/skills/multi-cli-spawn

Fan out one brief to multiple coding CLIs in parallel (agy, grok, claude, codex, kimi, qwen) via spawn.sh with PID-file / process-group kill safety and per-seat .status files (RUNNING → DONE|BLOCKED). Use for multi-LLM council, parallel second opinions, or cross-provider review. Prefer foreground wait; for --no-wait poll terminal .status — never treat missing .md alone as failure. Always --no-git; orchestrator owns commits.From its SKILL.md

Install
npx -y skills add ImL1s/agent-cli-skills --skill multi-cli-spawn

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

  • 2 stars2 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

3.6 KB, 947 tokens by cl100k_base, as published. Nobody here has run it

Multi-CLI Spawn (cross-provider parallel seats)

When to use

  • Need several providers to answer the same brief in parallel
  • Multi-LLM council / second opinions / cross-vendor review
  • You already have (or will install) the per-CLI *-cli-agent wrappers

This is not a substitute for vendor-native multi-agent inside one CLI (-T / ultracode / teamwork). Use those for fan-out within one provider; use this skill to fan-out across providers.

Why

Each vendor has native multi-agent inside one CLI (agy teamwork, Claude ultracode, Codex subagents, Grok spawn_subagent, …). This skill is the cross-CLI layer: one brief → N providers → N answer files.

Usage

./spawn.sh --outdir /tmp/council-$$ \
  -f /tmp/brief.md \
  --seat agy:readonly \
  --seat claude:ultracode \
  --seat codex:team \
  --seat grok \
  --seat kimi:readonly \
  --seat qwen:readonly \
  -C /path/to/repo \
  -t 1200s

Seat forms: name, name:readonly, name:ultracode|team, name:readonly,team, name@label (unique output key when duplicating a CLI).

Seat modifiers (comma-separated after :): readonly/r, team/ultracode/T.

Outputs

FileMeaning
<key>.logLive CLI stdout/stderr
<key>.mdFinal answer, or BLOCKED:… stub (written when the seat finishes)
<key>.pidSeat process-group id (kill target)
<key>.rcSeat exit code
<key>.statusRUNNINGDONE rc=0 | BLOCKED rc=N (atomic)
spawn.pid / spawn.statusParent: RUNNINGDONE, or SPAWNED if --no-wait
brief.mdCopied/normalized brief inside outdir

Waiting contract

  1. Default: do not poll. Run spawn.sh in the foreground (wait mode). Its exit code and CLI_AGENT_RESULT: PASS|BLOCKED <seat> lines are the completion signal.
  2. --no-wait / external watcher: wait until every seat .status is terminal (DONE / BLOCKED), e.g.:
    while grep -qlE '^RUNNING' "$OUTDIR"/*.status 2>/dev/null; do sleep 15; done
    
    Do not treat missing *.md or a dead *.pid alone as "no answer" — .md appears only when the seat finishes; pidfiles can look dead if the parent spawn was killed while seats continue.
  3. Kill only via numeric PIDs in seat *.pid files (process groups). Skip spawn.pid when iterating kill targets unless you intend to stop the parent. Never pkill -f long patterns.

Hard rules

  1. PID files only — never pkill -f with a pattern that also appears in the launcher argv
  2. Quota fail-open — provider errors / empty output → BLOCKED stub; do not retry-loop
  3. agy needs PTY — handled inside agy-exec.sh
  4. Orchestrator owns git — spawn always passes --no-git
  5. Parallel writers should use separate worktrees (-C per seat) to avoid collisions
  6. Seat rc != 0 is BLOCKED (missing binary is not a council vote)

Synthesize

Read *.md only for seats whose .status is terminal. Strictest blockers win. Divergent findings are high value. Re-run only BLOCKED seats after the user refreshes quota/auth.

See also: docs/CORRECTNESS.md, docs/FEATURES.md.

What ships with it: 4 files

19.8 KB alongside SKILL.md, 4 of them executable

lib/

Gives 0 of the 12 instructions most context ai engineering skills give in 947 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

  • Run spawn.sh in foreground by default
  • Use --no-git for all spawned agents
  • Use separate worktrees for parallel writers
  • Poll .status files for terminal state when using --no-wait
  • Read .md files only when .status is terminal
  • Treat seat exit code non-zero as BLOCKED

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.