Community코딩 & 개발github.com

인박스 분류를 위한 TaskFlow 패턴

인박스 항목을 업무, 개인, 기타로 분류하고 Slack 회신 대기, 요약 등을 처리하는 TaskFlow 예제 패턴입니다.

인박스 분류를 위한 TaskFlow 패턴란 무엇인가요?

이 스킬은 TaskFlow를 사용하여 인박스(inbox) 항목을 분류하고 라우팅하는 실용적인 예제 패턴을 제공합니다. 핵심 런타임을 DSL로 변환하지 않고도 TaskFlow의 핵심 개념을 보여줍니다. 구체적으로는 업무(business) 항목은 Slack에 게시하고 회신을 기다리며, 개인(personal) 항목은 즉시 알리고, 나머지는 하루 마무리 요약으로 보관합니다. 이 패턴은 `stateJson`에 라우팅 상태를 저장하고, 외부 회신이 필요할 때만 `waiting` 상태로 전환하며, 분류나 사람의 입력이 완료되면 플로우를 재개합니다. 최종적으로 모든 항목이 라우팅되면 플로우를 종료합니다. 이 스킬은 TaskFlow를 실제 워크플로우에 적용하려는 개발자에게 유용합니다.

지원 대상~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 인박스 분류

이것은 TaskFlow를 핵심 런타임을 DSL로 변환하지 않고도 어떻게 사용할 수 있는지에 대한 구체적인 예제입니다.

목표

단일 소유자 플로우로 인박스 항목을 분류합니다:

  • 업무 -> Slack에 게시하고 회신 대기
  • 개인 -> 지금 소유자에게 알림
  • 기타 -> 하루 마무리 요약을 위해 보관

패턴

  1. 인박스 배치를 위한 하나의 플로우를 생성합니다.
  2. 새 항목을 분류하기 위해 분리된 태스크를 하나 실행합니다.
  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.

관련 스킬