1password
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app…
Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.
$ npx -y skills add the-open-agent/openagent --skill taskflow-inbox-triage --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/taskflow-inbox-triageContext preview
The summary Claude sees to decide when to auto-load this skill.
Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.
name: taskflow-inbox-triage
description: Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.
metadata: { "openclaw": { "emoji": "📥" } }This is a concrete example of how to think about TaskFlow without turning the core runtime into a DSL.
Triage inbox items with one owner flow:
1. Create one flow for the inbox batch. 2. Run one detached task to classify new items. 3. Persist the routing state in `stateJson`. 4. Move to `waiting` only when an outside reply is required. 5. Resume the flow when classification or human input completes. 6. Finish when the batch has been routed.
{
"businessThreads": [],
"personalItems": [],
"eodSummary": []
}Suggested `waitJson` when blocked on Slack:
{
"kind": "reply",
"channel": "slack",
"threadKey": "slack:thread-1"
}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,
});⚡️next-generation personal AI assistant powered by LLM, RAG and agent loops, supporting computer-use, browser-use and coding agent, demo: https://demo.openagentai.org
Repo: the-open-agent/openagent
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app…
Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and…
Manage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists,…
Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.