$npx -y skills add anombyte93/prd-taskmaster --skill execute-fleetPhase execution skill for licensed Atlas Fleet runs. Use when HANDOFF has selected Atlas Fleet and the project should be executed across isolated launcher worktrees with inbox-based result collection, verified CDD cards, sequential integration merges, and one final PR.
| 1 | # execute-fleet |
| 2 | |
| 3 | Atlas Fleet is the premium parallel sibling of `execute-task`. It keeps the |
| 4 | same proof discipline, but the orchestrator owns the scoreboard while workers |
| 5 | only build inside isolated worktrees. |
| 6 | |
| 7 | ## Hard Gates |
| 8 | |
| 9 | Before the first wave, all gates must pass. If any gate fails, report the gap |
| 10 | and stop; do not fall back to solo execution from inside this skill. |
| 11 | |
| 12 | 1. `mcp__plugin_prd_go__detect_capabilities()` reports |
| 13 | `tier: "premium"` and atlas-launcher MCP registration/aliveness. |
| 14 | 2. `mcp__atlas-launcher__inbox_read` is callable for this session. |
| 15 | 3. `.taskmaster/tasks/tasks.json` exists. |
| 16 | 4. `.taskmaster/reports/task-complexity-report.json` exists. |
| 17 | 5. `git status --short` is empty. Fleet starts only from a committed base. |
| 18 | 6. The integration branch policy is clear: use `fleet-integration`; main is never auto-touched. |
| 19 | |
| 20 | **SOLE-WRITER RULE:** only this orchestrator writes |
| 21 | `.taskmaster/tasks/tasks.json` and `.atlas-ai/state/pipeline.json`. Workers |
| 22 | must never edit those files. The orchestrator may update task state only |
| 23 | through TaskMaster or the plugin pipeline MCP, and only after verification. |
| 24 | |
| 25 | ## Wave Loop |
| 26 | |
| 27 | Repeat until no runnable tasks remain: |
| 28 | |
| 29 | 1. Call `mcp__plugin_prd_go__compute_fleet_waves(concurrency=<N>, tag=<tag>)`. |
| 30 | Use the returned frontier as the only dispatch source. If it reports a |
| 31 | deadlock, render status, mark the blocked set, and stop dispatching those |
| 32 | tasks. |
| 33 | 2. For each chunk in the current wave, spawn exactly one worker: |
| 34 | `mcp__atlas-launcher__session_spawn(isolation="worktree", report_to=<this session>, model=<routing[task_id] model part>, prompt=<worker prompt>)`. |
| 35 | **Model is NEVER left default**: `compute_fleet_waves` returns a `routing` |
| 36 | map (task id -> backend:model) from the capability ladder — Fable for the |
| 37 | hardest/longest-running (frontier tier), down the cost-efficiency curve to |
| 38 | haiku for trivial tasks. Pass the model part explicitly; non-claude backends |
| 39 | require experimental_backends=true and the launcher backend param. |
| 40 | The prompt must include the full task JSON inline; never tell workers to |
| 41 | read shared `tasks.json`. |
| 42 | 3. Inspect the spawn result. If `prompt_injected` is false, re-kick once with |
| 43 | `mcp__atlas-launcher__session_send` using the same worker prompt, then |
| 44 | confirm injection/readiness. If it is still false, treat that worker as |
| 45 | failed and apply the retry policy below. |
| 46 | 4. Render the fleet status view after the wave starts and after each wave |
| 47 | transition. |
| 48 | 5. Poll `mcp__atlas-launcher__inbox_read` for terminal worker messages. The |
| 49 | only accepted terminal status vocabulary is `DONE`, `DONE_WITH_CONCERNS`, |
| 50 | `NEEDS_CONTEXT`, or `BLOCKED`; any other terminal word is a protocol |
| 51 | failure and counts as a worker failure. |
| 52 | 6. On a completion message, verify the branch, never the narration: |
| 53 | - The worker branch contains `.atlas-ai/cdd/task-<id>.json`. |
| 54 | - No `.atlas-ai/evidence/` file in that branch contains a non-zero |
| 55 | `Exit status N` line. |
| 56 | - The branch changed only its own worktree scope and did not edit |
| 57 | `.taskmaster/tasks/tasks.json` or `.atlas-ai/state/pipeline.json`. |
| 58 | 7. Never mark a task done without the CDD card. Missing card means the worker |
| 59 | did not satisfy the contract, regardless of any `DONE` message. |
| 60 | 8. Merge verified worker branches into `fleet-integration` sequentially, one |
| 61 | at a time. After each merge, run the checker/build gate expected for the |
| 62 | project before merging the next branch. |
| 63 | 9. Mark the task done only after the merge gate passes: |
| 64 | `python3 script.py set-status --id <id> --status done`. |
| 65 | 10. Recompute waves after every accepted merge. Do not keep dispatching from a |
| 66 | stale frontier. |
| 67 | |
| 68 | ## Worker Prompt Template |
| 69 | |
| 70 | Embed this template verbatim for each worker, replacing placeholders before |
| 71 | dispatch: |
| 72 | |
| 73 | ```text |
| 74 | WORKER_CONTRACT_ORCHESTRATOR_REPORT_TO |
| 75 | You are an Atlas Fleet worker. Your orchestrator is <ORCHESTRATOR_ID>. Report every question, blocker, and terminal result to <REPORT_TO_SESSION>. |
| 76 | |
| 77 | WORKER_CONTRACT_FULL_TASK_JSON_INLINE |
| 78 | Your assigned task JSON is inline below. Treat this as the source of truth. Do not read shared .taskmaster/tasks/tasks.json. |
| 79 | <FULL_TASK_JSON> |
| 80 | |
| 81 | WORKER_CONTRACT_WORKTREE_BRANCH |
| 82 | Work only in this isolated worktree and branch: |
| 83 | worktree: <WORKTREE_PATH> |
| 84 | branch: <WORKER_BRANCH> |
| 85 | |
| 86 | WORKER_CONTRACT_CDD_CARD |
| 87 | Before reporting any terminal status, write this CDD card in your worktree: .atlas-ai/cdd/task-<id>.json. The card must list the checks you ran and the evidence paths that prove |