{
  "schemaVersion": "1.0",
  "item": {
    "slug": "clawflow",
    "name": "Clawflow",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/srikanth235/clawflow",
    "canonicalUrl": "https://clawhub.ai/srikanth235/clawflow",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/clawflow",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=clawflow",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "schemas.md",
      "message.py",
      "agent-loop.md",
      "SKILL.md",
      "init.py",
      "coordinating.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "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."
        },
        {
          "label": "Upgrade existing",
          "body": "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."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/clawflow"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/clawflow",
    "agentPageUrl": "https://openagent3.xyz/skills/clawflow/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clawflow/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clawflow/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "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."
      },
      {
        "label": "Upgrade existing",
        "body": "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."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Clawflow",
        "body": "A protocol for OpenClaw agents collaborating through messages and recursive task DAGs.\n\nMental model: Think of a consulting firm. Anyone can receive a project. If they can\ndo it alone, they do. If it's too big, they break it into pieces, hand each piece to a\ncolleague, collect the results, and synthesise. Those colleagues might do the same.\nThere are no fixed \"managers\" and \"workers.\" Every agent speaks the same protocol."
      },
      {
        "title": "When to Read References",
        "body": "Message formats, task file structure, status codes → references/schemas.md\nThe decision loop every agent runs → references/agent-loop.md\nDAG decomposition, context passing, synthesis → references/coordinating.md"
      },
      {
        "title": "Core Principles",
        "body": "One protocol, fluid roles — every agent is structurally identical. Any agent can\nexecute work directly or decompose and delegate. The role emerges from the task.\nOpenClaw is the backbone — agent identity comes from openclaw.json config,\npeer discovery from openclaw agents list, and message transport from\nopenclaw agent --agent <id> --message \"...\". No custom identity or peer files.\nRecursive DAGs — an agent that delegates becomes a coordinator for that sub-DAG.\nIts parent doesn't know or care. DAGs nest naturally.\nWorkspace = working memory — each agent's OpenClaw workspace is its private\nscratchpad. Task state lives in workspace files. No agent reads another's workspace."
      },
      {
        "title": "How It Works",
        "body": "Agent A receives a task\n  → Can I do this alone?\n     YES → Execute, reply with results\n     NO  → Decompose into sub-DAG\n           → Dispatch subtasks to Agents B, C via openclaw agent\n           → Agent B receives its subtask\n              → Can I do this alone?\n                 YES → Execute, reply to A\n                 NO  → Decompose further, dispatch to D, E...\n           → Agent C executes, replies to A\n           → A collects all replies, synthesises, replies to *its* parent\n\nEvery level looks the same. An agent at any depth follows the same loop."
      },
      {
        "title": "Agent Identity",
        "body": "Comes from the OpenClaw configuration. Do NOT create custom identity files.\n\nConfig source: openclaw.json → agents.list[].id, agents.list[].identity\nWorkspace source: IDENTITY.md in the agent's workspace root\nRead with: openclaw agents list or from injected bootstrap context\n\nEach agent already knows who it is — its id, name, emoji, and theme are\ninjected into the session context on every turn via the workspace bootstrap files\n(IDENTITY.md, SOUL.md, AGENTS.md)."
      },
      {
        "title": "Peer Discovery",
        "body": "Discover available agents from OpenClaw configuration. Do NOT maintain a separate\npeers file.\n\n# List all configured agents\nopenclaw agents list\n\n# The config defines them:\n# agents.list[].id        → agent identifier (used in --agent flag)\n# agents.list[].workspace → their workspace path\n# agents.list[].model     → their model\n\nAn agent's subagents.allowAgents config controls which agents it can delegate to.\n[\"*\"] means it can reach any agent."
      },
      {
        "title": "Sending Tasks to Peers",
        "body": "Use the OpenClaw CLI to send a task message to another agent:\n\n# Send a task to a specific agent\nopenclaw agent --agent data-extractor --message \"Extract Q3 sales from sales.csv\"\n\n# The receiving agent gets this in its session, processes it,\n# and the response comes back through the same mechanism\n\nFor structured task dispatch with metadata, write the task message to a file and\nreference it:\n\nopenclaw agent --agent data-extractor \\\n  --message \"$(cat workspace/tasks/task-abc/dispatch-st-extract.md)\""
      },
      {
        "title": "Workspace Layout for Clawflow",
        "body": "Each agent uses its existing OpenClaw workspace. Clawflow adds a tasks/ directory:\n\n<agent-workspace>/                   ← OpenClaw workspace root\n  IDENTITY.md                        ← Agent identity (OpenClaw-managed)\n  AGENTS.md                          ← Operating instructions (OpenClaw-managed)\n  SOUL.md                            ← Persona (OpenClaw-managed)\n  mailbox/                           ← Agent-level message log (all tasks)\n    inbox/                           ← Incoming messages before processing\n    outbox/                          ← Outgoing messages (dispatches + replies sent)\n    archive/                         ← Processed messages (durable audit trail)\n  tasks/                             ← Clawflow working directory\n    {task-id}/\n      task.md                        ← DAG definition + progress + results\n  skills/\n    clawflow/                        ← This skill\n      SKILL.md\n      ...\n\nClawflow adds two top-level directories to the workspace:\n\nmailbox/ — agent-level message log, independent of any task. Every message\nthe agent sends or receives is logged here. inbox/ holds unprocessed arrivals,\noutbox/ logs what was sent, archive/ holds processed messages. This is the\ndurable audit trail — OpenClaw session history compacts over time, the mailbox doesn't.\ntasks/ — one subdirectory per task with a task.md tracking DAG state, subtask\nresults, and the final synthesised output."
      },
      {
        "title": "The Agent Loop",
        "body": "When an agent receives a task (via openclaw agent --message):\n\n1. Parse the message\n2. Is it a TASK from a parent?\n   → Create task.md in workspace/tasks/{task-id}/\n   → DECIDE: execute directly or decompose?\n     → Direct: do the work, reply with results\n     → Decompose: build sub-DAG in task.md, dispatch subtasks via openclaw agent\n3. Is it a REPLY from a peer I delegated to?\n   → Update sub-DAG in task.md (mark subtask done, store results)\n   → Dispatch any newly unblocked subtasks\n   → If all subtasks done → synthesise results, reply to parent\n\nRead references/agent-loop.md for the full decision logic and edge cases."
      },
      {
        "title": "Delegation Decision",
        "body": "When an agent receives a task, it decides: do it myself or delegate?\n\nExecute directly when:\n\nThe task is within the agent's own capabilities\nIt's simple enough that decomposition adds overhead\nNo relevant peer agents are configured\n\nDecompose and delegate when:\n\nThe task requires capabilities the agent doesn't have\nThe task has naturally parallel parts\nThe task is large enough that breaking it up reduces complexity\n\nThis is a judgment call. The protocol doesn't force it — the agent decides."
      },
      {
        "title": "DAG Dependency Resolution",
        "body": "When coordinating a sub-DAG, the agent tracks subtask status in task.md:\n\ndef get_ready_subtasks(dag):\n    \"\"\"Subtasks whose dependencies are all done and haven't been dispatched yet.\"\"\"\n    return [\n        sid for sid, st in dag.subtasks.items()\n        if st.status == 'pending'\n        and all(dag.subtasks[dep].status == 'done' for dep in st.depends_on)\n    ]\n\nCalled after every reply. Newly unblocked subtasks get dispatched immediately."
      },
      {
        "title": "Error Handling (V1)",
        "body": "Fail-fast. No retries, no partial recovery.\n\nScenarioBehaviourPeer 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\n\nErrors propagate upward. Future versions will add retry and partial recovery."
      },
      {
        "title": "Implementation Checklist",
        "body": "Verify agent configuration — openclaw agents list to see available agents.\nCheck subagent permissions — ensure subagents.allowAgents includes target agents.\nImplement the agent loop — follow references/agent-loop.md.\nUse message templates — scripts/message.py generates structured task/reply messages.\nTest a 2-level chain — agent A delegates to B, B executes and replies.\nTest fan-out — agent A delegates to B and C in parallel.\nTest recursion — agent A → B → C."
      },
      {
        "title": "Out of Scope (V1)",
        "body": "Large result attachments (Google Drive layer)\nTask retry / partial DAG recovery\nAgent health checks\nProgress streaming\nCross-agent workspace access (by design, forever)"
      }
    ],
    "body": "Clawflow\n\nA protocol for OpenClaw agents collaborating through messages and recursive task DAGs.\n\nMental 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.\n\nWhen to Read References\nMessage formats, task file structure, status codes → references/schemas.md\nThe decision loop every agent runs → references/agent-loop.md\nDAG decomposition, context passing, synthesis → references/coordinating.md\nCore Principles\nOne protocol, fluid roles — every agent is structurally identical. Any agent can execute work directly or decompose and delegate. The role emerges from the task.\nOpenClaw 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.\nRecursive DAGs — an agent that delegates becomes a coordinator for that sub-DAG. Its parent doesn't know or care. DAGs nest naturally.\nWorkspace = working memory — each agent's OpenClaw workspace is its private scratchpad. Task state lives in workspace files. No agent reads another's workspace.\nHow It Works\nAgent A receives a task\n  → Can I do this alone?\n     YES → Execute, reply with results\n     NO  → Decompose into sub-DAG\n           → Dispatch subtasks to Agents B, C via openclaw agent\n           → Agent B receives its subtask\n              → Can I do this alone?\n                 YES → Execute, reply to A\n                 NO  → Decompose further, dispatch to D, E...\n           → Agent C executes, replies to A\n           → A collects all replies, synthesises, replies to *its* parent\n\n\nEvery level looks the same. An agent at any depth follows the same loop.\n\nIntegration with OpenClaw\nAgent Identity\n\nComes from the OpenClaw configuration. Do NOT create custom identity files.\n\nConfig source: openclaw.json → agents.list[].id, agents.list[].identity\nWorkspace source: IDENTITY.md in the agent's workspace root\nRead with: openclaw agents list or from injected bootstrap context\n\nEach 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).\n\nPeer Discovery\n\nDiscover available agents from OpenClaw configuration. Do NOT maintain a separate peers file.\n\n# List all configured agents\nopenclaw agents list\n\n# The config defines them:\n# agents.list[].id        → agent identifier (used in --agent flag)\n# agents.list[].workspace → their workspace path\n# agents.list[].model     → their model\n\n\nAn agent's subagents.allowAgents config controls which agents it can delegate to. [\"*\"] means it can reach any agent.\n\nSending Tasks to Peers\n\nUse the OpenClaw CLI to send a task message to another agent:\n\n# Send a task to a specific agent\nopenclaw agent --agent data-extractor --message \"Extract Q3 sales from sales.csv\"\n\n# The receiving agent gets this in its session, processes it,\n# and the response comes back through the same mechanism\n\n\nFor structured task dispatch with metadata, write the task message to a file and reference it:\n\nopenclaw agent --agent data-extractor \\\n  --message \"$(cat workspace/tasks/task-abc/dispatch-st-extract.md)\"\n\nWorkspace Layout for Clawflow\n\nEach agent uses its existing OpenClaw workspace. Clawflow adds a tasks/ directory:\n\n<agent-workspace>/                   ← OpenClaw workspace root\n  IDENTITY.md                        ← Agent identity (OpenClaw-managed)\n  AGENTS.md                          ← Operating instructions (OpenClaw-managed)\n  SOUL.md                            ← Persona (OpenClaw-managed)\n  mailbox/                           ← Agent-level message log (all tasks)\n    inbox/                           ← Incoming messages before processing\n    outbox/                          ← Outgoing messages (dispatches + replies sent)\n    archive/                         ← Processed messages (durable audit trail)\n  tasks/                             ← Clawflow working directory\n    {task-id}/\n      task.md                        ← DAG definition + progress + results\n  skills/\n    clawflow/                        ← This skill\n      SKILL.md\n      ...\n\n\nClawflow adds two top-level directories to the workspace:\n\nmailbox/ — 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.\ntasks/ — one subdirectory per task with a task.md tracking DAG state, subtask results, and the final synthesised output.\nThe Agent Loop\n\nWhen an agent receives a task (via openclaw agent --message):\n\n1. Parse the message\n2. Is it a TASK from a parent?\n   → Create task.md in workspace/tasks/{task-id}/\n   → DECIDE: execute directly or decompose?\n     → Direct: do the work, reply with results\n     → Decompose: build sub-DAG in task.md, dispatch subtasks via openclaw agent\n3. Is it a REPLY from a peer I delegated to?\n   → Update sub-DAG in task.md (mark subtask done, store results)\n   → Dispatch any newly unblocked subtasks\n   → If all subtasks done → synthesise results, reply to parent\n\n\nRead references/agent-loop.md for the full decision logic and edge cases.\n\nDelegation Decision\n\nWhen an agent receives a task, it decides: do it myself or delegate?\n\nExecute directly when:\n\nThe task is within the agent's own capabilities\nIt's simple enough that decomposition adds overhead\nNo relevant peer agents are configured\n\nDecompose and delegate when:\n\nThe task requires capabilities the agent doesn't have\nThe task has naturally parallel parts\nThe task is large enough that breaking it up reduces complexity\n\nThis is a judgment call. The protocol doesn't force it — the agent decides.\n\nDAG Dependency Resolution\n\nWhen coordinating a sub-DAG, the agent tracks subtask status in task.md:\n\ndef get_ready_subtasks(dag):\n    \"\"\"Subtasks whose dependencies are all done and haven't been dispatched yet.\"\"\"\n    return [\n        sid for sid, st in dag.subtasks.items()\n        if st.status == 'pending'\n        and all(dag.subtasks[dep].status == 'done' for dep in st.depends_on)\n    ]\n\n\nCalled after every reply. Newly unblocked subtasks get dispatched immediately.\n\nError Handling (V1)\n\nFail-fast. No retries, no partial recovery.\n\nScenario\tBehaviour\nPeer fails a subtask\tAgent marks its own task failed, replies with error to parent\nDuplicate message\tIdempotency check — skip if task already in-progress or done\nAgent crashes\tTask file in workspace preserves state; restart resumes from task.md\n\nErrors propagate upward. Future versions will add retry and partial recovery.\n\nImplementation Checklist\nVerify agent configuration — openclaw agents list to see available agents.\nCheck subagent permissions — ensure subagents.allowAgents includes target agents.\nImplement the agent loop — follow references/agent-loop.md.\nUse message templates — scripts/message.py generates structured task/reply messages.\nTest a 2-level chain — agent A delegates to B, B executes and replies.\nTest fan-out — agent A delegates to B and C in parallel.\nTest recursion — agent A → B → C.\nOut of Scope (V1)\nLarge result attachments (Google Drive layer)\nTask retry / partial DAG recovery\nAgent health checks\nProgress streaming\nCross-agent workspace access (by design, forever)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/srikanth235/clawflow",
    "publisherUrl": "https://clawhub.ai/srikanth235/clawflow",
    "owner": "srikanth235",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/clawflow",
    "downloadUrl": "https://openagent3.xyz/downloads/clawflow",
    "agentUrl": "https://openagent3.xyz/skills/clawflow/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clawflow/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clawflow/agent.md"
  }
}