Gemini swarm
Use BEFORE writing or editing code, tests, docs, or other content yourself — whenever the writing spans more than one file or more than ~20 lines. Delegating the writing to Gemini sessions via the agy (Antigravity) CLI is the default; you orchestrate. Also use when the user asks to swarm/fan out/parallelize work across Gemini or invokes /gemini-swarm. Triggers include implementing a feature, scaffolding or creating files, refactors, migrations, bulk edits, boilerplate, test suites, documentation, and multi-topic research. Skip only for trivial edits (a few lines in one file) or when the agy CLI is unavailable.From its SKILL.md
npx -y skills add Vallykrie/gemini-swarm-skill --skill gemini-swarmAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 6 stars6 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
7.9 KB, as published. Nobody here has run it
gemini-swarm
You are the orchestrator: you plan, decompose, route, and review. agy
(Antigravity CLI) sessions running Gemini do the writing and the token-heavy
bulk work. Writing substantial code or content yourself instead of
dispatching it is a violation of this workflow — the user installed this
skill precisely so that Gemini does the writing.
Verified against agy 1.0.15. Re-check agy --help if flags seem wrong —
this CLI changes fast.
Delegate by default
Before you write anything, apply this rule:
- Writing work that spans more than one file or more than ~20 lines → dispatch it to Gemini via this skill. This holds even when it is a single coherent task: a swarm of one subtask is a normal, valid run. Parallel fan-out is an optimization, not a precondition.
- Trivial edits (a few lines in one file), pure planning/review, and answers that need no artifacts → do them yourself.
- You still own everything around the writing: decomposition, prompts, model routing, integration, verification, and the final report.
If you catch yourself mid-task writing a file Gemini could have written, stop, turn the remaining work into subtask prompts, and dispatch.
| Excuse for writing it yourself | Reality |
|---|---|
| "It's faster if I just write it" | Dispatch overhead is seconds; Gemini writes while your context stays free for review. |
| "This task doesn't split into parallel parts" | A single-subtask dispatch is a valid swarm. Splitting is optional. |
| "I need fine control over this code" | Put the control in the subtask prompt (exact paths, conventions, constraints), then review the result. |
| "The user didn't ask for a swarm" | The user installed this skill so Gemini does the writing by default. Explicit invocation is not required. |
| "I'm already halfway through writing it" | Sunk cost. Dispatch the remaining files. |
Step 0 — Preflight
command -v agy— if missing, stop and tell the user to install the Antigravity CLI.- Locate the dispatcher script, in this order:
${CLAUDE_PLUGIN_ROOT}/scripts/dispatch.sh(plugin install)scripts/dispatch.shnext to this SKILL.md (standalone skill install)
Step 1 — Resolve the autonomy mode
The /gemini-swarm command (or the user directly) supplies one of three modes.
If none was given, use default.
| Mode | Dispatch flag | Meaning |
|---|---|---|
default | mirror the host | If you (the host agent) are currently running with auto-accepted/bypassed permissions, use --auto. If your own edits require user review, use --request. |
auto | --auto | agy jobs run with --dangerously-skip-permissions --sandbox — full autonomy inside agy's terminal-restricted sandbox. |
request | --request | agy jobs never skip permissions; agy's configured toolPermission policy (request-review) governs gated tool calls. |
Never ask the user to pick a mode mid-run; resolve it yourself from the rule above.
Step 2 — Decompose the task
Split the task into independent subtasks:
- No two subtasks may write the same file or depend on each other's output. Prefer splits along existing boundaries: different files, modules, directories, or research topics.
- If a task has a genuinely sequential core, keep that core for yourself and swarm only the independent parts.
- Each subtask prompt must be fully self-contained. The Gemini sessions share nothing — no conversation history, no knowledge of the other subtasks. Include in every prompt: the goal, the exact file paths to read/write, relevant constraints/conventions, and the expected output format.
- For write tasks, tell each subtask exactly which files it owns and to touch
nothing else. End each prompt with: "When done, print a line starting with
TOUCHED:listing every file you created or modified, then a one-paragraph summary of what you did." - Typical fan-out is 1–10 subtasks. One subtask is fine when the task is a single coherent unit — dispatch it anyway rather than writing it yourself. Do not throttle or batch: quota is not a constraint, and all subtasks launch concurrently.
Step 3 — Route a model per subtask
Choose per subtask, automatically — never ask the user which model:
Gemini 3.1 Pro (High)— reasoning-heavy or ambiguous work: debugging, architecture, tricky refactors, analysis with judgment calls, anything where a wrong answer is expensive.Gemini 3.7 Flash— bulk, boilerplate, or mechanical work: mass renames, format conversions, test scaffolding, doc generation, summarizing files, straightforward CRUD. Use the exact stringGemini 3.7 Flash (High)for mechanical-but-fiddly work andGemini 3.7 Flash (Medium)for plain bulk work.
These are exact agy models names — pass them verbatim to the MODEL: header.
Step 4 — Write the subtask files
Create one prompt file per subtask in a temp directory (e.g.
$(mktemp -d)/01-slug.prompt.md). Format — first line is a model header,
then a blank line, then the prompt:
MODEL: Gemini 3.7 Flash (Medium)
Summarize the public API of src/parser/ ...
Name files NN-short-slug.prompt.md; the basename (minus .prompt.md)
becomes the subtask name in logs.
Step 5 — Dispatch (always parallel)
If the gemini-dispatcher subagent is available (plugin install), delegate
to it: pass the task-file paths, the mode flag, and the project root. It runs
the script, waits, writes the run log, and returns only a summary — keeping
raw Gemini output out of your context.
Otherwise, run the script yourself from the project root:
bash <dispatcher>/dispatch.sh --auto 01-foo.prompt.md 02-bar.prompt.md ...
(substitute --request per Step 1; add --timeout 30m for long jobs).
The script launches every job concurrently with & + wait — never loop over
subtasks sequentially, never cap concurrency. Its stdout is a short status
table (subtask, model, ok/FAIL, seconds) plus the run directory path — safe to
read. Do not cat the raw .out files wholesale into your context; read
them selectively when integrating.
Step 6 — Write the run log
After all jobs finish, write .gemini-swarm/logs/<ISO-timestamp>.md (same
timestamp as the run directory the script printed). If the dispatcher subagent
ran, it writes this log. Template:
# gemini-swarm run <ISO-timestamp>
<One plain-English paragraph: what the task was, how it was split, what
succeeded/failed, and total wall-clock time.>
- **Mode**: auto | request (how it was resolved)
- **Wall-clock**: NNs total
## Subtasks
### 01-short-slug — ok | FAIL
- **Model**: Gemini 3.7 Flash (Medium)
- **Duration**: NNs
- **Files/artifacts touched**: `path/a`, `path/b` (from the TOUCHED: line;
"none" for research tasks — note the .out artifact instead)
- **Result**: one or two sentences from the subtask summary.
Step 7 — Integrate and finish
- Auto-accept the swarm's output. Do not gate on a diff-review step — the run log is the audit trail.
- Verify integration-level correctness yourself (build/tests if relevant), fix small seams between subtask outputs, and only re-dispatch a subtask if it hard-failed (non-zero exit).
- Report to the user: the one-paragraph summary, per-subtask pass/fail, and the log file path.