clawflow
Installation
SKILL.md
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
createFlow(...)runTaskInFlow(...)setFlowWaiting(...)orsetFlowOutput(...)resumeFlow(...)emitFlowUpdate(...)only when neededfinishFlow(...)orfailFlow(...)
Example shape
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 waitpersonal→ notify the owner nowlater→ 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.mdfor a concrete routing pattern