Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Protocol for multi-agent collaboration via OpenClaw's message-passing and recursive task DAGs. Use this skill whenever the user wants to coordinate work acro...
Protocol for multi-agent collaboration via OpenClaw's message-passing and recursive task DAGs. Use this skill whenever the user wants to coordinate work acro...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
A protocol for OpenClaw agents collaborating through messages and recursive task DAGs. Mental model: Think of a consulting firm. Anyone can receive a project. If they can do it alone, they do. If it's too big, they break it into pieces, hand each piece to a colleague, collect the results, and synthesise. Those colleagues might do the same. There are no fixed "managers" and "workers." Every agent speaks the same protocol.
Message formats, task file structure, status codes โ references/schemas.md The decision loop every agent runs โ references/agent-loop.md DAG decomposition, context passing, synthesis โ references/coordinating.md
One protocol, fluid roles โ every agent is structurally identical. Any agent can execute work directly or decompose and delegate. The role emerges from the task. OpenClaw is the backbone โ agent identity comes from openclaw.json config, peer discovery from openclaw agents list, and message transport from openclaw agent --agent <id> --message "...". No custom identity or peer files. Recursive DAGs โ an agent that delegates becomes a coordinator for that sub-DAG. Its parent doesn't know or care. DAGs nest naturally. Workspace = working memory โ each agent's OpenClaw workspace is its private scratchpad. Task state lives in workspace files. No agent reads another's workspace.
Agent A receives a task โ Can I do this alone? YES โ Execute, reply with results NO โ Decompose into sub-DAG โ Dispatch subtasks to Agents B, C via openclaw agent โ Agent B receives its subtask โ Can I do this alone? YES โ Execute, reply to A NO โ Decompose further, dispatch to D, E... โ Agent C executes, replies to A โ A collects all replies, synthesises, replies to *its* parent Every level looks the same. An agent at any depth follows the same loop.
Comes from the OpenClaw configuration. Do NOT create custom identity files. Config source: openclaw.json โ agents.list[].id, agents.list[].identity Workspace source: IDENTITY.md in the agent's workspace root Read with: openclaw agents list or from injected bootstrap context Each agent already knows who it is โ its id, name, emoji, and theme are injected into the session context on every turn via the workspace bootstrap files (IDENTITY.md, SOUL.md, AGENTS.md).
Discover available agents from OpenClaw configuration. Do NOT maintain a separate peers file. # List all configured agents openclaw agents list # The config defines them: # agents.list[].id โ agent identifier (used in --agent flag) # agents.list[].workspace โ their workspace path # agents.list[].model โ their model An agent's subagents.allowAgents config controls which agents it can delegate to. ["*"] means it can reach any agent.
Use the OpenClaw CLI to send a task message to another agent: # Send a task to a specific agent openclaw agent --agent data-extractor --message "Extract Q3 sales from sales.csv" # The receiving agent gets this in its session, processes it, # and the response comes back through the same mechanism For structured task dispatch with metadata, write the task message to a file and reference it: openclaw agent --agent data-extractor \ --message "$(cat workspace/tasks/task-abc/dispatch-st-extract.md)"
Each agent uses its existing OpenClaw workspace. Clawflow adds a tasks/ directory: <agent-workspace>/ โ OpenClaw workspace root IDENTITY.md โ Agent identity (OpenClaw-managed) AGENTS.md โ Operating instructions (OpenClaw-managed) SOUL.md โ Persona (OpenClaw-managed) mailbox/ โ Agent-level message log (all tasks) inbox/ โ Incoming messages before processing outbox/ โ Outgoing messages (dispatches + replies sent) archive/ โ Processed messages (durable audit trail) tasks/ โ Clawflow working directory {task-id}/ task.md โ DAG definition + progress + results skills/ clawflow/ โ This skill SKILL.md ... Clawflow adds two top-level directories to the workspace: mailbox/ โ agent-level message log, independent of any task. Every message the agent sends or receives is logged here. inbox/ holds unprocessed arrivals, outbox/ logs what was sent, archive/ holds processed messages. This is the durable audit trail โ OpenClaw session history compacts over time, the mailbox doesn't. tasks/ โ one subdirectory per task with a task.md tracking DAG state, subtask results, and the final synthesised output.
When an agent receives a task (via openclaw agent --message): 1. Parse the message 2. Is it a TASK from a parent? โ Create task.md in workspace/tasks/{task-id}/ โ DECIDE: execute directly or decompose? โ Direct: do the work, reply with results โ Decompose: build sub-DAG in task.md, dispatch subtasks via openclaw agent 3. Is it a REPLY from a peer I delegated to? โ Update sub-DAG in task.md (mark subtask done, store results) โ Dispatch any newly unblocked subtasks โ If all subtasks done โ synthesise results, reply to parent Read references/agent-loop.md for the full decision logic and edge cases.
When an agent receives a task, it decides: do it myself or delegate? Execute directly when: The task is within the agent's own capabilities It's simple enough that decomposition adds overhead No relevant peer agents are configured Decompose and delegate when: The task requires capabilities the agent doesn't have The task has naturally parallel parts The task is large enough that breaking it up reduces complexity This is a judgment call. The protocol doesn't force it โ the agent decides.
When coordinating a sub-DAG, the agent tracks subtask status in task.md: def get_ready_subtasks(dag): """Subtasks whose dependencies are all done and haven't been dispatched yet.""" return [ sid for sid, st in dag.subtasks.items() if st.status == 'pending' and all(dag.subtasks[dep].status == 'done' for dep in st.depends_on) ] Called after every reply. Newly unblocked subtasks get dispatched immediately.
Fail-fast. No retries, no partial recovery. ScenarioBehaviourPeer fails a subtaskAgent marks its own task failed, replies with error to parentDuplicate messageIdempotency check โ skip if task already in-progress or doneAgent crashesTask file in workspace preserves state; restart resumes from task.md Errors propagate upward. Future versions will add retry and partial recovery.
Verify agent configuration โ openclaw agents list to see available agents. Check subagent permissions โ ensure subagents.allowAgents includes target agents. Implement the agent loop โ follow references/agent-loop.md. Use message templates โ scripts/message.py generates structured task/reply messages. Test a 2-level chain โ agent A delegates to B, B executes and replies. Test fan-out โ agent A delegates to B and C in parallel. Test recursion โ agent A โ B โ C.
Large result attachments (Google Drive layer) Task retry / partial DAG recovery Agent health checks Progress streaming Cross-agent workspace access (by design, forever)
Messaging, meetings, inboxes, CRM, and teammate communication surfaces.
Largest current source with strong distribution and engagement signals.