1password
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app…
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow
$ npx -y skills add the-open-agent/openagent --skill taskflow --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/taskflowContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow
name: taskflow
description: Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
metadata: { "openclaw": { "emoji": "🪝" } }Use TaskFlow when a job needs to outlive one prompt or one detached run, but you still want one owner session, one return context, and one place to inspect or resume the work.
It does **not** own branching or business logic. Put that in Lobster, acpx, or the calling code.
Canonical plugin/runtime entrypoint:
Binding:
Managed-flow lifecycle:
1. `createManaged(...)` 2. `runTask(...)` 3. `setWaiting(...)` when waiting on a person or an external system 4. `resume(...)` when work can continue 5. `finish(...)` or `fail(...)` 6. `requestCancel(...)` or `cancel(...)` when the whole job should stop
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 classify = taskFlow.runTask({
flowId: created.flowId,
runtime: "acp",
childSessionKey: "agent:main:subagent:classifier",
runId: "inbox-classify-1",
task: "Classify inbox messages",
status: "running",
startedAt: Date.now(),
lastEventAt: Date.now(),
});
if (!classify.created) {
throw new Error(classify.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: "finalize",
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,
});Use the flow runtime for state and task linkage. Keep decisions in the authoring layer:
⚡️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.