Decompose a large task into DISJOINT file-owned workstreams, fan out isolated full-power peers, collect structured reports, run ONE authoritative gate, and commit when green — the collision-free, self-verifying multi-agent flow. Ultra-gated.
Scanned 9/3/2026
Install to Claude Code
npx -y skills add Miosa-osa/OSA --skill fleet-orchestration --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Fleet Orchestration?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/miosa-osa-fleet-orchestration)More formats (shields.io, HTML) on the badges page.
---
name: fleet-orchestration
description: Decompose a large task into DISJOINT file-owned workstreams, fan out isolated full-power peers, collect structured reports, run ONE authoritative gate, and commit when green — the collision-free, self-verifying multi-agent flow. Ultra-gated.
triggers:
- fleet orchestration
- disjoint workstreams
- fan out
- parallel refactor
- multi-agent wave
- orchestrate a wave
priority: 1
tools:
- fleet
- delegate
- list_agents
- file_read
- shell_execute
---
## Instructions
You are the coordinator of a fleet of full-power peer agents. This skill is the
DECOMPOSITION INTELLIGENCE that makes a parallel wave collision-free and
verifiable: you partition a large task into NON-OVERLAPPING file-owned
workstreams, fan them out in isolation, collect structured reports, and run ONE
authoritative gate before committing. This is not naive fan-out — it is a
disjoint, self-verifying, self-committing flow.
Use this when a task is large enough to split across peers AND the files
involved can be partitioned into disjoint sets. It is **ultra-gated**: the
`fleet` workflow action only runs at the `:ultra` effort tier. If you are below
ultra, raise effort first or do the work solo.
### The invariant (never violate)
**Disjoint ownership.** Every spawned node owns a set of files that NO other
concurrent node touches. Two nodes editing the same file in parallel is a
collision, and collisions corrupt the wave. When files must be shared, you do
NOT parallelize them — you SEQUENCE them (see step 2 and step 7).
### The flow
#### 1. Recon first — scout before you fan out
Never partition a task you have not scoped. Before launching anything:
- Read and grep the work-list — discover the ACTUAL files, modules, and
functions involved, not the ones you assume.
- Delegate a READ-ONLY `explorer` for breadth when the surface is unfamiliar:
`delegate(task: "Scan <paths> — report every file touched by <change>, plus shared/contract files", role: "explorer")`.
- Produce a concrete file inventory. The partition in step 2 is only as good as
this recon.
#### 2. Decompose into DISJOINT file-owned workstreams
From the file inventory, partition the task so each workstream owns a
**non-overlapping** set of files:
- Group files by natural seam (module, layer, feature, test target).
- Identify **shared-file chokepoints** — files that more than one workstream
would need to edit (shared types, registries, a common router, an index).
- Chokepoints are NOT parallelized. Emit a sequencing plan:
- a **parallel set** — workstreams with fully disjoint files, run at once;
- **sequenced chokepoints** — the shared-file edits, run one at a time
(before, between, or after the parallel set), each its own phase.
- If you cannot make the sets disjoint, the task is not fan-out-shaped —
sequence it or do it solo instead.
State the plan briefly before launching: "3 disjoint workstreams (A: fleet.ex,
B: finalizer.ex, C: skill+docs) + 1 sequenced chokepoint (registry.ex, after)."
#### 3. Per-node scope — tell each node exactly what it OWNS
Every spawned node is told its exact ownership and the ignore-noise convention.
Put this verbatim into each node's task string:
> YOU OWN ONLY these files: `<explicit list>`. Edit ONLY your files. If
> compile/test shows an error in a file you do NOT own, that is a sibling's
> in-progress edit — IGNORE it, do not fix it, only fix your own files. Return a
> structured report (see below). Do NOT commit. Do NOT push.
Give each node the full context it needs (recon findings, conventions,
acceptance criteria) — nodes do not share your context window.
#### 4. Isolation — run the wave collision-free
Fan out with worktree-per-node isolation so nodes physically cannot collide:
```
fleet(action: "workflow", task: "<umbrella description>", items: [<one task string per node>], isolation: "worktree")
```
Each node's edits land in its own fast-worktree, never the main tree. The
bounded-concurrency queue-drain runs up to 16 at once. Disjoint ownership plus
worktree isolation is belt-and-suspenders collision-freedom.
#### 5. Structured reports back
Each node returns a structured report, not free text:
```
%{node_id, files_changed: [...], gate: :pass | :fail | :skipped, stubbed: [...], summary: "..."}
```
- `files_changed` — exactly what the node edited (verify it is within its owned
set; anything outside is a scope breach to flag).
- `gate` — the node's OWN gate result. This is **advisory only**.
- `stubbed` — anything left as a placeholder for a later phase.
- `summary` — what changed and why.
#### 6. Finalize — merge, authoritative gate, commit when green
Call the finalizer step. It:
1. **Merges** each worktree's disjoint diff into the target branch. Disjoint
files apply cleanly; on any overlap it FLAGS a conflict and does NOT clobber.
2. **Runs the authoritative combined gate** — the configured gate command list
(e.g. `mix compile`, `mix test <targets>`, `cargo build`). **This is the ONLY
source of "green."** Node self-gates (step 5) never count as green.
3. **Commits when green** — attribution-clean (NO AI/Claude footer), a clear
message. If the gate fails, it returns the failing output for you to dispatch
a fix (re-scope the failing files to a node) — it does NOT commit red.
4. **Never pushes.** Pushing is an outward step that requires explicit operator
consent, every time.
#### 7. Protective checkpoints — commit each green phase, sequence chokepoints
- After each coherent phase goes green, COMMIT it before starting the next. A
committed green phase is a rollback point; a wave that dies mid-flight then
costs you one phase, not everything.
- Run the sequenced chokepoints (step 2) as their own phases between parallel
sets — never fold a shared-file edit into the parallel wave.
- Between phases, re-run recon if the tree changed in ways that shift ownership.
### Guardrails (carry these on every wave)
- **Ultra-gated.** The `fleet` workflow action only runs at `:ultra`. Below it,
raise effort or go solo.
- **Disjoint ownership is the invariant.** Overlap → sequence, never
parallel-edit.
- **The coordinator's combined gate is the ONLY source of green.** Node
self-gates are advisory.
- **Caps always apply:** 16 concurrent, 1000 total nodes, the depth cap. Do not
attempt to exceed them.
- **Commit-when-green + protective checkpoints.** Never commit red.
- **Attribution-clean commits.** No AI/Claude co-author or footer, ever.
- **Never push without explicit operator consent.** The finalizer never
auto-pushes; neither do you.
## Examples
**Coordinator:** "Add edge-case handling across the FleetView module — it spans
`fleet.ex`, `finalizer.ex`, the finalizer test, and a shared registry."
**Expected behavior:** Recon the four files and grep for who imports the
registry. Partition: workstream A owns `fleet.ex`, B owns `finalizer.ex` + its
test (disjoint). The registry is a chokepoint (both would touch it) → sequence
it as a final phase. Fan out A and B with `isolation: "worktree"`, each told its
owned files and the ignore-unowned-errors convention. Collect structured
reports, run the finalizer (merge → `mix compile` + targeted `mix test` → commit
green, attribution-clean). Then run the registry chokepoint as its own phase and
commit again. Never push.
---
**Coordinator:** "Refactor these 12 handler files to the new error pattern."
**Expected behavior:** 12 handlers with no shared file → 12 disjoint
workstreams (or batched into a few nodes of N files each), fan out at up to 16
concurrent with worktree isolation. Each node owns its handful of files. One
authoritative gate over all diffs, one green commit.
---
**Coordinator:** "Split this change: three modules plus a shared types file they
all edit."
**Expected behavior:** The three modules are disjoint → parallel set. The shared
types file is a chokepoint edited by all three → it CANNOT be parallelized.
Sequence it FIRST as its own phase (commit green), then fan out the three
modules against the now-stable types. Two phases, two protective commits.
---
**Coordinator (below ultra):** "Fan out this refactor across the fleet."
**Expected behavior:** The `fleet` workflow action is ultra-gated and will
return a "raise effort to ultra" message. Either raise effort to `:ultra` and
proceed with the flow above, or handle the change solo if it is small enough.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!