{"id":"execute-fleet","name":"execute-fleet","summary":"ライセンスされたAtlas Fleetランのフェーズ実行スキル。HANDOFFがAtlas Fleetを選択し、プロジェクトは独立したランチャーワークツリー間で実行され、受信箱ベースの結果収集、検証済みのCDDカード、逐次統合マージ、そして最終PRが行われます。","body":"# execute-fleet\n\nAtlas Fleet is the premium parallel sibling of `execute-task`. It keeps the\nsame proof discipline, but the orchestrator owns the scoreboard while workers\nonly build inside isolated worktrees.\n\n## Hard Gates\n\nBefore the first wave, all gates must pass. If any gate fails, report the gap\nand stop; do not fall back to solo execution from inside this skill.\n\n1. `mcp__plugin_prd_go__detect_capabilities()` reports\n   `tier: \"premium\"` and atlas-launcher MCP registration/aliveness.\n2. `mcp__atlas-launcher__inbox_read` is callable for this session.\n3. `.taskmaster/tasks/tasks.json` exists.\n4. `.taskmaster/reports/task-complexity-report.json` exists.\n5. `git status --short` is empty. Fleet starts only from a committed base.\n6. The integration branch policy is clear: use `fleet-integration`; main is never auto-touched.\n\n**SOLE-WRITER RULE:** only this orchestrator writes\n`.taskmaster/tasks/tasks.json` and `.atlas-ai/state/pipeline.json`. Workers\nmust never edit those files. The orchestrator may update task state only\nthrough TaskMaster or the plugin pipeline MCP, and only after verification.\n\n## Wave Loop\n\nRepeat until no runnable tasks remain:\n\n1. Call `mcp__plugin_prd_go__compute_fleet_waves(concurrency=<N>, tag=<tag>)`.\n   Use the returned frontier as the only dispatch source. If it reports a\n   deadlock, render status, mark the blocked set, and stop dispatching those\n   tasks.\n2. For each chunk in the current wave, spawn exactly one worker:\n   `mcp__atlas-launcher__session_spawn(isolation=\"worktree\", report_to=<this session>, model=<routing[task_id] model part>, prompt=<worker prompt>)`.\n   **Model is NEVER left default**: `compute_fleet_waves` returns a `routing`\n   map (task id -> backend:model) from the capability ladder — Fable for the\n   hardest/longest-running (frontier tier), down the cost-efficiency curve to\n   haiku for trivial tasks. Pass the model part explicitly; non-claude backends\n   require experimental_backends=true and the launcher backend param.\n   The prompt must include the full task JSON inline; never tell workers to\n   read shared `tasks.json`.\n3. Inspect the spawn result. If `prompt_injected` is false, re-kick once with\n   `mcp__atlas-launcher__session_send` using the same worker prompt, then\n   confirm injection/readiness. If it is still false, treat that worker as\n   failed and apply the retry policy below.\n4. Render the fleet status view after the wave starts and after each wave\n   transition.\n5. Poll `mcp__atlas-launcher__inbox_read` for terminal worker messages. The\n   only accepted terminal status vocabulary is `DONE`, `DONE_WITH_CONCERNS`,\n   `NEEDS_CONTEXT`, or `BLOCKED`; any other terminal word is a protocol\n   failure and counts as a worker failure.\n6. On a completion message, verify the branch, never the narration:\n   - The worker branch contains `.atlas-ai/cdd/task-<id>.json`.\n   - No `.atlas-ai/evidence/` file in that branch contains a non-zero\n     `Exit status N` line.\n   - The branch changed only its own worktree scope and did not edit\n     `.taskmaster/tasks/tasks.json` or `.atlas-ai/state/pipeline.json`.\n7. Never mark a task done without the CDD card. Missing card means the worker\n   did not satisfy the contract, regardless of any `DONE` message.\n8. Merge verified worker branches into `fleet-integration` sequentially, one\n   at a time. After each merge, run the checker/build gate expected for the\n   project before merging the next branch.\n9. Mark the task done only after the merge gate passes:\n   `python3 script.py set-status --id <id> --status done`.\n10. Recompute waves after every accepted merge. Do not keep dispatching from a\n    stale frontier.\n\n## Worker Prompt Template\n\nEmbed this template verbatim for each worker, replacing placeholders before\ndispatch:\n\n```text\nWORKER_CONTRACT_ORCHESTRATOR_REPORT_TO\nYou are an Atlas Fleet worker. Your orchestrator is <ORCHESTRATOR_ID>. Report every question, blocker, and terminal result to <REPORT_TO_SESSION>.\n\nWORKER_CONTRACT_FULL_TASK_JSON_INLINE\nYour assigned task JSON is inline below. Treat this as the source of truth. Do not read shared .taskmaster/tasks/tasks.json.\n<FULL_TASK_JSON>\n\nWORKER_CONTRACT_WORKTREE_BRANCH\nWork only in this isolated worktree and branch:\nworktree: <WORKTREE_PATH>\nbranch: <WORKER_BRANCH>\n\nWORKER_CONTRACT_CDD_CARD\nBefore 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 them. Evidence files under .atlas-ai/evidence/ must contain the FINAL verification run ONLY (one green run, one exit-status line) — intermediate TDD red runs go to .atlas-ai/logs/, never evidence/ (ship-check Gate 5 reads every Exit status line in evidence/ as final-state proof).\n\nWORKER_CONTRACT_TERMINAL_STATUS\nEnd with exactly one terminal status: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED.\nReport it via mcp__atlas-launcher__inbox_send(target_session=<REPORT_TO_SESSION>, message_type=\"task_handoff\", payload=<JSON string with at least {\"task_id\": <id>, \"status\": \"<terminal status>\", \"branch\": \"<worktree branch>\", \"cdd_card\": \".atlas-ai/cdd/task-<id>.json\"}>, sender_session=<your session name>). The launcher message_type allowlist is task_handoff | notification | data | request | heartbeat — terminal reports use task_handoff; the status lives INSIDE the payload JSON.\n\nWORKER_CONTRACT_HARD_RULES\nHard rules: never edit .taskmaster/tasks/tasks.json or .atlas-ai/state/pipeline.json; never git push; commit only in your own worktree branch.\n\nWORKER_CONTRACT_QUESTIONS_INBOX\nAsk questions before building if context is missing: use mcp__atlas-launcher__inbox_send(target_session=<REPORT_TO_SESSION>, message_type=\"request\", payload=<your question as a string>, sender_session=<your session name>). (\"question\"/\"completion\"/\"blocker\" are template intents, not runtime message types — see docs/INTEGRATION-prd-taskmaster.md in the atlas-launcher repo, contract v1.)\n```\n\n## Failure Paths\n\n- Silent/dead worker: if there is no inbox message and the session is gone,\n  re-queue the task ONCE with a fresh worker prompt. On the second failure,\n  mark the task `BLOCKED` in the orchestrator scoreboard and continue with\n  remaining tasks.\n- `NEEDS_CONTEXT`: answer through `mcp__atlas-launcher__inbox_send`, then let\n  the same worker continue. If it cannot continue, count it under the same\n  retry cap.\n- Worker `BLOCKED`: record the blocker, mark the task `BLOCKED`, and continue\n  with independent tasks.\n- Merge conflict: do not force. Do not resolve by guessing. Create a fix task\n  that captures the conflict and continue with remaining non-conflicting work.\n- Evidence failure: do not merge, do not mark done, and do not rewrite the\n  worker's CDD card on their behalf.\n\n## Status Rendering\n\nAfter every wave transition, render the terminal status view with the UX-SPEC\ngrammar. Use model plus index names such as `claude-1`, `codex-1`, and\n`claude-2`. Keep the gate line in plain English every time.\n\n```text\n┌─ atlas fleet ── wave 2 of 3 ──────────────── ▶ running 12m ┐\n│  wave 1  ✓ merged     3 tasks · 18m · integration green    │\n│  wave 2  ▶ running                                         │\n│    claude-1   task 6  API endpoints      ▰▰▰▱  3/4         │\n│    codex-1    task 7  UI components      ▰▰▱▱  2/4         │\n│    claude-2   task 9  DB migrations      ✓ done — waiting  │\n│  wave 3  ○ queued     4 tasks · starts when wave 2 merges  │\n│                                                            │\n│  Gate: a wave merges only after the checker approves it    │\n│        and the integration branch builds green.            │\n│                                                            │\n│  watch:  atlas fleet status        logs: .atlas-ai/fleet/  │\n└────────────────────────────────────────────────────────────┘\n```\n\n## Termination\n\nWhen all waves are done, or all remaining tasks are `BLOCKED`, switch to\n`fleet-integration` and run:\n\n```bash\npython3 skel/ship-check.py\n```\n\nIf it exits non-zero, report the failing gate and stop. If it exits 0, emit\n`SHIP_CHECK_OK` exactly once, then open one final PR from `fleet-integration`.\nDo not print the token anywhere else. Do not merge the PR yourself.\n\n## Non-Exits\n\nThis skill never kills the shell and never pushes. Halt conditions are reported\nto the caller and, when relevant, to the launcher inbox.","author":"@anombyte93","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/anombyte93/prd-taskmaster/tree/main/skills/execute-fleet","license":"MIT","category":"document","lang":"en","tokens":2045,"stars":0,"calls30d":2,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[],"requires":{"mcp":["plugin_prd_go","atlas-launcher"],"tools":["Read","Bash","Skill","ToolSearch","mcp__atlas-engine","mcp__plugin_prd_go","mcp__plugin_prd-taskmaster_go","mcp__plugin_atlas-go_go"]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":false,"networkEndpoints":[]}}