生活とツール
#ai
taskflow-inbox-triage
Example TaskFlow pattern for inbox triage, intent routing, waiting on replies, and later summaries.
DeepseekModel
キュレーション済みスキル
品質 優秀 · 90
v1.0.0
取得
https://deepseekmodel.com/api/download.php?id=openclaw-openclaw-skills-taskflow-inbox-triage-skill-md&format=skill
ダウンロード .skill
標準形式。system_prompt と model_config を収録し、任意の Agent で利用可能
.skill ファイルの system_prompt フィールドの実際の内容。
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
このスキルを起動するキーワード。クリックでコピーできます。
このスキルにはトリガーワードがありません。
ダウンロードした .skill に含まれるフィールド。
| フィールド | 説明 |
|---|---|
| format | フォーマット識別子(skill/v1) |
| skill_id | スキル固有 ID |
| name | スキル名 |
| version | バージョン |
| description | 説明 |
| category | カテゴリ(配列) |
| trigger_words | トリガーワード |
| tags | タグ |
| source | ソース |
| source_url | ソース URL(本ページ) |
| exported_at | エクスポート日時(ダウンロード毎) |
| system_prompt | システムプロンプト本文 |
| model_config | モデル設定:provider / model / temperature / max_tokens / top_p |
| examples | サンプル |
| install_guide | 各プラットフォームの導入説明(Coze / Dify / Claude / カスタム) |