clawflow
OpenBMB/EdgeClaw/skills/clawflow/SKILL.md
Use when work should span one or more detached tasks but still behave like one job with a single owner context. ClawFlow is the runtime substrate under authoring layers like Lobster, acpx, or plain code. Keep conditional logic in the caller; use ClawFlow for flow identity, waiting, outputs, and user-facing emergence.
Skill1.2k starsChanged 6 months ago
What's in it
- ClawFlow
- When to use it
- What ClawFlow owns
- Runtime pattern
- Example shape
- Keep conditionals above the runtime
- Examples
---
name: clawflow
description: Use when work should span one or more detached tasks but still behave like one job with a single owner context. ClawFlow is the runtime substrate under authoring layers like Lobster, acpx, or plain code. Keep conditional logic in the caller; use ClawFlow for flow identity, waiting, outputs, and user-facing emergence.
metadata: { "openclaw": { "emoji": "🪝" } }
---
# ClawFlow
Use ClawFlow when a job needs to outlive one prompt or one detached run, but you still want one owner session, one thread context, and one place to inspect or resume the work.
## When to use it
- Multi-step background work with one owner
- Work that waits on detached ACP or subagent tasks
- Jobs that may need to emit one clear update back to the owner
- Jobs that need a small persisted output bag between steps
## What ClawFlow owns
- flow identity
- owner session and return context
- waiting state
- small persisted outputs
- finish, fail, cancel, and blocked state
It does **not** own branching or business logic. Put that in Lobster, acpx, or the calling code.
## Runtime pattern
1. `createFlow(...)`
2. `runTaskInFlow(...)`
3. `setFlowWaiting(...)` or `setFlowOutput(...)`
4. `resumeFlow(...)`
5. `emitFlowUpdate(...)` only when needed
6. `finishFlow(...)` or `failFlow(...)`
## Example shape
```ts
const flow = createFlow({
ownerSessionKey,
goal: "triage inbox",
});
const classify = runTaskInFlow({
flowId: flow.flowId,
runtime: "acp",
task: "Classify inbox messages",
currentStep: "wait_for_classification",
});
resumeFlow({
flowId: flow.flowId,
currentStep: "route_results",
});
setFlowOutput({
flowId: flow.flowId,
key: "classification",
value: { route: "business" },
});
```
## Keep conditionals above the runtime
Use the flow runtime for state and task linkage. Keep decisions in the authoring layer:
- `business` → post to Slack and wait
- `personal` → notify the owner now
- `later` → append to an end-of-day summary bucket
## Examples
- See `skills/clawflow/examples/inbox-triage.lobster`
- See `skills/clawflow/examples/pr-intake.lobster`
- See `skills/clawflow-inbox-triage/SKILL.md` for a concrete routing pattern
More agent context in OpenBMB/EdgeClaw
63 other files this repository gives its agents, the first 60 shown.
AGENTS.md
CLAUDE.md
Skill
- openclaw-ghsa-maintainer.agents/skills/openclaw-ghsa-maintainer/SKILL.md
- openclaw-parallels-smoke.agents/skills/openclaw-parallels-smoke/SKILL.md
- openclaw-pr-maintainer.agents/skills/openclaw-pr-maintainer/SKILL.md
- openclaw-release-maintainer.agents/skills/openclaw-release-maintainer/SKILL.md
- openclaw-test-heap-leaks.agents/skills/openclaw-test-heap-leaks/SKILL.md
- parallels-discord-roundtrip.agents/skills/parallels-discord-roundtrip/SKILL.md
- security-triage.agents/skills/security-triage/SKILL.md
- 1passwordskills/1password/SKILL.md
- apple-notesskills/apple-notes/SKILL.md
- apple-remindersskills/apple-reminders/SKILL.md
- bear-notesskills/bear-notes/SKILL.md
- blogwatcherskills/blogwatcher/SKILL.md
- blucliskills/blucli/SKILL.md
- bluebubblesskills/bluebubbles/SKILL.md
- camsnapskills/camsnap/SKILL.md
- canvasskills/canvas/SKILL.md
- clawflow-inbox-triageskills/clawflow-inbox-triage/SKILL.md
- clawhubskills/clawhub/SKILL.md
- coding-agentskills/coding-agent/SKILL.md
- discordskills/discord/SKILL.md
- eightctlskills/eightctl/SKILL.md
- geminiskills/gemini/SKILL.md
- gh-issuesskills/gh-issues/SKILL.md
- gifgrepskills/gifgrep/SKILL.md
- githubskills/github/SKILL.md
- gogskills/gog/SKILL.md
- goplacesskills/goplaces/SKILL.md
- healthcheckskills/healthcheck/SKILL.md
- himalayaskills/himalaya/SKILL.md
- imsgskills/imsg/SKILL.md
- mcporterskills/mcporter/SKILL.md
- model-usageskills/model-usage/SKILL.md
- nano-pdfskills/nano-pdf/SKILL.md
- node-connectskills/node-connect/SKILL.md
- notionskills/notion/SKILL.md
- obsidianskills/obsidian/SKILL.md
- openai-whisper-apiskills/openai-whisper-api/SKILL.md
- openai-whisperskills/openai-whisper/SKILL.md
- openhueskills/openhue/SKILL.md
- oracleskills/oracle/SKILL.md
- ordercliskills/ordercli/SKILL.md
- peekabooskills/peekaboo/SKILL.md
- sagskills/sag/SKILL.md
- session-logsskills/session-logs/SKILL.md
- sherpa-onnx-ttsskills/sherpa-onnx-tts/SKILL.md
- skill-creatorskills/skill-creator/SKILL.md
- slackskills/slack/SKILL.md
- songseeskills/songsee/SKILL.md
- sonoscliskills/sonoscli/SKILL.md
- spotify-playerskills/spotify-player/SKILL.md
- summarizeskills/summarize/SKILL.md
- things-macskills/things-mac/SKILL.md
- tmuxskills/tmux/SKILL.md
- trelloskills/trello/SKILL.md
- video-framesskills/video-frames/SKILL.md
- voice-callskills/voice-call/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Posts are public. Sign in to say whether it worked for you.Sign in to post
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

