npx skills add openclaw/openclaw --skill taskflow-inbox-triage
steipete/openclaw · Archived
taskflow-inbox-triage
Example TaskFlow pattern for inbox triage, intent routing, waiting on replies, and later summaries.
Installation
npx skills add steipete/openclaw --skill taskflow-inbox-triage
Stronger alternatives
This repository is archived — consider an actively maintained alternative.
Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane outpu…
2 installsLocal speech-to-text with the Whisper CLI (no API key).
2 installsList, configure, authenticate, call, and inspect MCP servers/tools with mcporter over HTTP or s…
2 installsUse xurl for authenticated X API posts, replies, search, DMs, media upload, followers, or raw v…
1 installsSimilar popular skills
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Run approval-gated workflows with durable TaskFlow state; distinguish workflow execution from l…
470 installsPreview synthetic inbox routing with a real TaskFlow approval pause, and identify the adapters …
432 installsAlso in this package
Other skills from steipete/openclaw · top by installs.
npx skills add steipete/openclaw
More details
Agent compatibility
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
Also listed on
Alternate registries and mirrors of this skill.
Repository health
main
Skill metadata
Parsed from SKILL.md frontmatter.
Package contents
Files included with this skill beyond the listing page.
-
skill md
SKILL.md2,570 B -
docs
SUMMARY.md128 B
History
- First seen on skills.sh
- First recorded snapshot · 1 installs
SKILL.md
TaskFlow inbox triage
This is a concrete example of how to think about TaskFlow without turning the core runtime into a DSL.
Goal
Triage inbox items with one owner flow:
- business → post to Slack and wait for reply
- personal → notify the owner now
- everything else → keep for end-of-day summary
Pattern
- Create one flow for the inbox batch.
- Run one detached task to classify new items.
- Persist the routing state in
stateJson. - Move to
waitingonly when an outside reply is required. - Resume the flow when classification or human input completes.
- Finish when the batch has been routed.
Suggested stateJson shape
{
"businessThreads": [],
"personalItems": [],
"eodSummary": []
}
Suggested waitJson when blocked on Slack:
{
"kind": "reply",
"channel": "slack",
"threadKey": "slack:thread-1"
}
Minimal runtime calls
const taskFlow = api.runtime.tasks.flow.fromToolContext(ctx);
const created = taskFlow.createManaged({
controllerId: "my-plugin/inbox-triage",
goal: "triage inbox",
currentStep: "classify",
stateJson: {
businessThreads: [],
personalItems: [],
eodSummary: [],
},
});
const child = taskFlow.runTask({
flowId: created.flowId,
runtime: "acp",
childSessionKey: "agent:main:subagent:classifier",
task: "Classify inbox messages",
status: "running",
startedAt: Date.now(),
lastEventAt: Date.now(),
});
if (!child.created) {
throw new Error(child.reason);
}
const waiting = taskFlow.setWaiting({
flowId: created.flowId,
expectedRevision: created.revision,
currentStep: "await_business_reply",
stateJson: {
businessThreads: ["slack:thread-1"],
personalItems: [],
eodSummary: [],
},
waitJson: {
kind: "reply",
channel: "slack",
threadKey: "slack:thread-1",
},
});
if (!waiting.applied) {
throw new Error(waiting.code);
}
const resumed = taskFlow.resume({
flowId: waiting.flow.flowId,
expectedRevision: waiting.flow.revision,
status: "running",
currentStep: "route_items",
stateJson: waiting.flow.stateJson,
});
if (!resumed.applied) {
throw new Error(resumed.code);
}
taskFlow.finish({
flowId: resumed.flow.flowId,
expectedRevision: resumed.flow.revision,
stateJson: resumed.flow.stateJson,
});
Related example
skills/taskflow/examples/inbox-triage.lobster