{"skill":{"slug":"subagent-orchestrator","displayName":"subagent-orchestrator","summary":"Orchestrate OpenClaw subagents for continuous autopilot workflows. Use when managing UI/代码/验证/档案/侦察 task lines, continuing multi-round work without waiting f...","description":"---\nname: subagent-orchestrator\ndescription: Orchestrate OpenClaw subagents for continuous autopilot workflows. Use when managing UI/代码/验证/档案/侦察 task lines, continuing multi-round work without waiting for the user to restate each step, cleaning finished sessions while preserving memory records, routing default models by role, or updating AGENT_TASK_BOARD / subagent handoff rules.\n---\n\n# subagent-orchestrator\n\nRun continuous task lines through the main controller, not by accident.\n\n## Core rules\n\n1. **Treat `autopilot` as a continuous line**\n   - Do not stop at “one run finished”.\n   - A finished run means **handoff**, not “whole line done”.\n   - Continue until one of: complete, blocked, paused by user.\n\n2. **The main controller must directly re-dispatch**\n   - Do not wait for the user to remind you to continue.\n   - For every autopilot line, the main controller decides the next slice and spawns it.\n\n3. **Keep the task board current**\n   - Update `AGENT_TASK_BOARD.md` before or when dispatching the next round.\n   - Record: goal, current round, completed items, remaining items, next slice, follow-up roles.\n\n4. **Keep subagent replies short**\n   - Prefer: goal / completed / files / status / next / risk.\n   - Avoid long background restatements.\n\n5. **Clean finished sessions, keep memory**\n   - Finished subagent sessions do not need to be kept.\n   - Before forgetting them, write the durable record into `memory/YYYY-MM-DD.md`.\n   - Include at least: task goal, changed files, result status, risk, next step.\n   - Promote stable collaboration rules into `MEMORY.md` when needed.\n\n6. **Do not keep unnecessary artifacts**\n   - Temporary screenshots, temp files, and intermediate outputs can be deleted when no longer needed.\n   - If the user wants screenshot proof, prefer sending it directly instead of long-term local retention.\n\n## Role routing\n\nDo not hard-code project-specific model rules into this skill.\n\nUse the current session defaults unless the user or project rules override them. If a project has role-specific model preferences, keep them in project memory, task board rules, or project docs — not as universal orchestrator behavior.\n\n## Dispatch pattern\n\nWhen an autopilot line is active:\n\n1. Read the current line from `AGENT_TASK_BOARD.md`\n2. Pick the next **small closed slice**\n3. Spawn the correct role\n4. Require short structured return\n5. On completion:\n   - summarize for the user\n   - update memory\n   - clean finished session if no longer needed\n   - immediately dispatch the next slice if the line is still active\n\n## Cross-role coordination\n\n### Cross-role dependency pattern\nWhen one role creates a dependency for another role:\n- the producing role must explicitly name the follow-up role in `next_role`\n- the main controller should dispatch that follow-up role without waiting for the user to restate it\n- do not let dependent task lines drift apart\n\nExamples:\n- research -> UI integration\n- code logic -> validation\n- code structure -> UI presentation\n\n### Validation\nValidation is a follow-up role, not usually the main line.\nTrigger it after:\n- a meaningful UI slice\n- a meaningful code slice\n- a user asks for proof/checks\n\n## Return protocol\n\nKeep the canonical protocol in `references/SUBAGENT_RECORD_PROTOCOL.md` and use it together with this skill.\n\nRequire subagents to include these header fields before the short report:\n\n- `tag:` one of `autopilot | done | idle | blocked | handoff | need_user`\n- `line:` the task line name, such as `ui-autopilot`, `code-autopilot`, `scout-art`, `archive-worldview`\n- `node:` the current task-line node id, such as `code-n4`, `ui-n5`\n- `goal_status:` use only `partial | complete | waiting | blocked` (do not invent values like `half_done`, `in_progress`, `done`)\n- `next_role:` free-form next owner/role label, such as `ui`, `code`, `verify`, `research`, `archive`, `user`, `none`, or any project-specific role name\n\nThen use the short body (see `references/SUBAGENT_RECORD_PROTOCOL.md` for the full paired format):\n\n1. Goal\n2. Completed (max 3-4)\n3. Changed files\n4. Status\n5. Next\n6. Risk\n\n### Tag meanings\n\n- `autopilot`: this round finished, but the whole line is probably not done; main controller must compare against the task board and either continue or close\n- `done`: the whole line is complete\n- `idle`: this role is waiting for another line or condition; do not continue this role yet\n- `blocked`: the line cannot safely continue automatically\n- `handoff`: this round finished and the next role is already clear\n- `need_user`: user decision is required before any safe continuation\n\n## Main-controller decision rules\n\nWhen a subagent returns:\n\n1. If `tag=done`\n   - close the line\n   - write memory\n   - clean finished session\n\n2. If `tag=autopilot`\n   - compare against `AGENT_TASK_BOARD.md`\n   - resolve the current `line` and `node`\n   - ignore vague per-run completion phrasing in the body\n   - if `node != end_node`, dispatch the next node immediately in the same controller turn\n   - only close the line when `current_node == end_node` and the line completion condition is actually satisfied\n\n### Anti-drop guard\n\nFor every `autopilot` return, the main controller must verify all three:\n- the line exists on the task board\n- the line is not yet complete\n- a next dispatch was either sent, or the line was explicitly converted to `idle`, `blocked`, `need_user`, or `done`\n\nIf none of those happened, the turn is incomplete and should not be considered finished.\n\n### Stricter continuation rules\n\nA local slice finishing is **not** enough to stop a line.\nDo not treat phrases like “this small closure is done”, “this round passed”, or “this piece is complete” as permission to pause.\n\nThe controller may stop only when one of these is true:\n- `current_node == end_node` and the line completion condition is actually satisfied\n- the return is explicitly `blocked`\n- the return is explicitly `need_user`\n- the user explicitly paused/stopped the line\n\nIf a subagent returns `goal_status: complete` for a node, that means:\n- the node itself finished\n- the controller must immediately resolve `next_on_done`\n- and dispatch the next owner in the same turn unless the line is truly at `end_node`\n\n### Delivery-proof rule\n\nIf a task claims a delivery/output was completed on an external surface (for example Discord/Telegram/channel/thread/board), the controller must require proof.\nA claim like “已上屏 / 已交付 / 已发布 / 已发送” is not sufficient by itself.\n\nMinimum proof for delivery-type tasks:\n- target channel/thread id\n- message id (or equivalent object id)\n- a human-checkable location description\n\nIf any proof item is missing, treat the task as **not delivered yet**.\nDo not mark the line done or the node complete on verbal assurance alone.\n\n### Mandatory node advancement\n\nAfter receiving a valid `autopilot` return with `line` and `node`, the main controller must do this in order:\n1. resolve the matching task-line in `AGENT_TASK_BOARD.md`\n2. resolve the current node definition\n3. advance `current_node` to that node's `next_on_done`\n4. if the advanced node is not `end_node`, dispatch the owner of the advanced node immediately in the same turn\n\nDo not stop after summarizing the finished round. The turn is only complete after the node has been advanced and the next node has either been dispatched or explicitly put into `idle / blocked / need_user / done`.\n\n3. If `tag=handoff`\n   - dispatch `next_role` directly\n   - update task board\n\n4. If `tag=idle`\n   - do not continue this role yet\n   - mark dependency in task board\n   - resume after the dependency line advances\n\n5. If `tag=blocked`\n   - stop automatic continuation\n   - summarize blocker\n   - ask only for the smallest required decision if needed\n\n6. If `tag=need_user`\n   - ask the user\n   - do not keep other roles guessing\n\n## Completion conditions\n\nOnly mark a line done when:\n- the user says stop/pause, or\n- the task board objective is fully satisfied and no meaningful next slice remains.\n\nDo **not** mark done just because one run finished.\n","topics":["Subagent"],"tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":1405,"installsAllTime":52,"installsCurrent":12,"stars":0,"versions":1},"createdAt":1772979702156,"updatedAt":1778491777153},"latestVersion":{"version":"1.0.0","createdAt":1772979702156,"changelog":"Initial public release: continuous autopilot orchestration, structured return tags, anti-drop guard, delivery-proof rule, and same-turn node advancement.","license":null},"metadata":null,"owner":{"handle":"hackjsw","userId":"s17ewd476yg63nd5vn6dqhqxzd884194","displayName":"hackjsw","image":"https://avatars.githubusercontent.com/u/48341540?v=4"},"moderation":null}