agents/taskflow/SKILL.md
Coordinate multi-step detached tasks as one durable TaskFlow job with owner context, state, waits, and child tasks.
npx skillsauth add adminlove520/xiaoxi-skills taskflowInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
currentStep, stateJson, and waitJsonIt does not own branching or business logic. Put that in Lobster, acpx, or the calling code.
Canonical plugin/runtime entrypoint:
api.runtime.tasks.flowapi.runtime.taskFlow still exists as an alias, but api.runtime.tasks.flow is the canonical shapeBinding:
api.runtime.tasks.flow.fromToolContext(ctx) when you already have trusted tool context with sessionKeyapi.runtime.tasks.flow.bindSession({ sessionKey, requesterOrigin }) when your binding layer already resolved the session and delivery contextManaged-flow lifecycle:
createManaged(...)runTask(...)setWaiting(...) when waiting on a person or an external systemresume(...) when work can continuefinish(...) or fail(...)requestCancel(...) or cancel(...) when the whole job should stopstateJson as the persisted state bag. There is no separate setFlowOutput or appendFlowOutput API.flow.revision after each successful mutation.runTask(...) links the child task to the flow. Use it instead of manually creating detached tasks when you want parent orchestration.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:
business → post to Slack and waitpersonal → notify the owner nowlater → append to an end-of-day summary bucketblockedSummary or structured wait metadata in waitJson.getTaskSummary(flowId) when the orchestrator needs a compact health view of child work.requestCancel(...) when a caller wants the flow to stop scheduling immediately.cancel(...) when you also want active linked child tasks cancelled.skills/taskflow/examples/inbox-triage.lobsterskills/taskflow/examples/pr-intake.lobsterskills/taskflow-inbox-triage/SKILL.md for a concrete routing patterndata-ai
Spaced-repetition flashcard system. Create cards from facts or text, chat with flashcards using free-text answers graded by the agent, generate quizzes from YouTube transcripts, review due cards with adaptive scheduling, and export/import decks as CSV.
development
Canvas LMS integration — fetch enrolled courses and assignments using API token authentication.
development
Provides PyTorch-native distributed LLM pretraining using torchtitan with 4D parallelism (FSDP2, TP, PP, CP). Use when pretraining Llama 3.1, DeepSeek V3, or custom models at scale from 8 to 512+ GPUs with Float8, torch.compile, and distributed checkpointing.
devops
Optimizes LLM inference with NVIDIA TensorRT for maximum throughput and lowest latency. Use for production deployment on NVIDIA GPUs (A100/H100), when you need 10-100x faster inference than PyTorch, or for serving models with quantization (FP8/INT4), in-flight batching, and multi-GPU scaling.