taskflow-inbox-triage
Example TaskFlow pattern for inbox triage, intent routing, waiting on replies, and later summaries.
DeepseekModel
Curated skill
Quality Excellent · 90
v1.0.0
Get
https://deepseekmodel.com/api/download.php?id=openclaw-openclaw-skills-taskflow-inbox-triage-skill-md&format=skill
Download .skill
Standard format with system_prompt and model_config, ready for any agent framework
The actual content of the system_prompt field in the .skill file.
name taskflow-inbox-triage description Example TaskFlow pattern for inbox triage, intent routing, waiting on replies, and later summaries. metadata {"openclaw":{"emoji":"📥"}} 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 waiting only 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 . managedFlows . 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
Keywords that activate this skill. Click one to copy it.
This skill does not provide trigger words.
The downloaded .skill package contains the following fields.
| Field | Description |
|---|---|
| format | Format tag (skill/v1) |
| skill_id | Unique skill ID |
| name | Skill name |
| version | Version |
| description | Description |
| category | Categories (array) |
| trigger_words | Trigger words |
| tags | Tags |
| source | Source |
| source_url | Source URL (this page) |
| exported_at | Exported at (set per download) |
| system_prompt | System prompt body |
| model_config | Model config: provider / model / temperature / max_tokens / top_p |
| examples | Examples |
| install_guide | Import guide for Coze / Dify / Claude / custom frameworks |
The same skill can be exported in different platform formats.