Communityコーディング&開発github.com

taskflow-inbox-triage

TaskFlowパターンを使用した受信トレイの仕分け、インテントルーティング、返信待ち、および後日のサマリーの具体例です。

taskflow-inbox-triage とは?

このスキルは、TaskFlowを用いた受信トレイの仕分けパターンを具体的に示すものです。コアランタイムをDSLにすることなく、一つのオーナーフローでビジネスメッセージ(Slackに投稿して返信待ち)、個人メッセージ(即時通知)、その他(終日日次サマリー)にルーティングする方法を学べます。処理の流れとしては、受信トレイバッチごとにフローを作成し、新しいアイテムの分類をdetached taskで実行、stateJsonにルーティング状態を永続化し、外部からの返信が必要な場合のみ`waiting`状態へ移行します。分類または人間の入力が完了するとフローを再開し、バッチのルーティングが完了したら終了します。このスキルはClaude Code, Cursor, CodexなどTaskFlowをサポートする任意のプラットフォームで利用可能で、`api.runtime.tasks.flow.fromToolContext(ctx)`を介してランタイムを呼び出します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/skills/taskflow-inbox-triage

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

TaskFlow 受信トレイの仕分け

これは、コアランタイムをDSLにせずにTaskFlowをどのように考えるかの具体例です。

目標

1つのオーナーフローで受信トレイアイテムを仕分けします:

  • ビジネス -> Slackに投稿し、返信を待つ
  • 個人 -> すぐにオーナーに通知する
  • その他 -> 終日のサマリー用に保持する

パターン

  1. 受信トレイバッチ用に1つのフローを作成する。
  2. 1つのdetachedタスクを実行して新しいアイテムを分類する。
  3. ルーティング状態をstateJsonに永続化する。
  4. 外部からの返信が必要な場合にのみwaiting状態に移行する。
  5. 分類または人間の入力が完了したらフローを再開する。
  6. バッチのルーティングが完了したら終了する。

推奨される stateJson の構造

{
  "businessThreads": [],
  "personalItems": [],
  "eodSummary": []
}

Slackでブロックされたときの推奨される waitJson:

{
  "kind": "reply",
  "channel": "slack",
  "threadKey": "slack:thread-1"
}

最小限のランタイム呼び出し

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 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,
});

関連例

  • skills/taskflow/examples/inbox-triage.lobster

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Grok Build, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills when explicitly requested; install, verify, update, uninstall, publish, or sync skills.

関連スキル