원클릭으로
kanban
Hermes Kanban multi-agent system: orchestrator decomposition playbook + worker pitfalls, examples, and edge cases.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Hermes Kanban multi-agent system: orchestrator decomposition playbook + worker pitfalls, examples, and edge cases.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
macOS-specific automation: iMessage/SMS messaging and desktop control (screenshots, clicks, keyboard input).
Messaging platform integrations: email (IMAP/SMTP via Himalaya), X/Twitter (xurl CLI), and Yuanbao groups (@mentions, DMs).
Control creative software programmatically: ComfyUI (AI image/video generation via REST/WebSocket API) and TouchDesigner (real-time visual programming via MCP).
Systematic engineering disciplines: debugging (root cause investigation), TDD (test-first development), and exploratory QA (web app testing).
Creative coding: p5.js sketches, Manim animations, Pretext text layouts.
Create, read, edit .pptx decks, slides, notes, templates.
SOC 직업 분류 기준
| name | kanban |
| description | Hermes Kanban multi-agent system: orchestrator decomposition playbook + worker pitfalls, examples, and edge cases. |
| version | 1.0.0 |
| platforms | ["linux","macos","windows"] |
| environments | ["kanban"] |
| metadata | {"hermes":{"tags":["kanban","multi-agent","orchestration","routing","collaboration","workflow","pitfalls"]}} |
The Kanban system is Hermes' durable multi-agent work queue. This skill covers both roles:
The basic worker lifecycle (6 steps: orient → work → heartbeat → block/complete) is auto-injected into every kanban process via the KANBAN_GUIDANCE system-prompt block. This skill is the deeper playbook for both roles.
Hermes setups vary widely. Some users run a single profile that does everything; some run a small fleet (docker-worker, cron-worker); some run a curated specialist team they've named themselves. There is no default specialist roster — the orchestrator skill does not know what profiles exist on this machine.
Before fanning out, you must ground the decomposition in the profiles that actually exist. The dispatcher silently fails to spawn unknown assignee names — it doesn't autocorrect, doesn't suggest, doesn't fall back. So a card assigned to researcher on a setup that only has docker-worker just sits in ready forever.
Step 0: discover available profiles before planning.
Use one of these:
hermes profile list — prints the table of profiles configured on this machine.kanban_list(assignee="<some-name>") — sanity-check a single name. Returns an empty list (rather than an error) for an unknown assignee.Create Kanban tasks when any of these are true:
If none of those apply — use delegate_task instead or answer the user directly.
parents=[...] in the original kanban_create call.Ask clarifying questions if the goal is ambiguous. Cheap to ask; expensive to spawn the wrong fleet.
Before creating anything, draft the graph out loud:
t1 = kanban_create(
title="research: Postgres cost vs current",
assignee="<profile-A>",
body="Compare estimated infrastructure costs over a 3-year window.",
tenant=os.environ.get("HERMES_TENANT"),
)["task_id"]
t2 = kanban_create(
title="synthesize migration recommendation",
assignee="<profile-B>",
body="Read the findings from T1. Produce a 1-page recommendation.",
parents=[t1],
)["task_id"]
parents=[...] gates promotion — children stay in todo until every parent reaches done, then auto-promote to ready.
kanban_complete(
summary="decomposed into T1-T2: 1 research lane, 1 synthesis on its output",
metadata={"task_graph": {"T1": {"assignee": "<profile-A>", "parents": []}, "T2": {"assignee": "<profile-B>", "parents": ["T1"]}}},
)
planner → implementer → reviewer. Each stage's parents=[previous_task].kanban_block() to wait for input.For open-ended cards where one turn rarely finishes:
kanban_create(
title="Translate the full docs site to French",
body="Acceptance: every page translated, no English left.",
assignee="<translator-profile>",
goal_mode=True,
goal_max_turns=15,
)["task_id"]
ready.| Kind | What it is | How to work |
|---|---|---|
scratch | Fresh tmp dir, yours alone | Read/write freely; GC'd when archived. |
dir:<path> | Shared persistent directory | Other runs will read what you write. |
worktree | Git worktree | Commit work here. |
If $HERMES_TENANT is set, prefix memory entries with the tenant so context doesn't leak across tenants.
Coding task:
kanban_complete(
summary="shipped rate limiter — token bucket, 14 tests pass",
metadata={
"changed_files": ["rate_limiter.py", "tests/test_rate_limiter.py"],
"tests_run": 14, "tests_passed": 14,
"decisions": ["user_id primary, IP fallback for unauthenticated requests"],
},
)
Review-required (block instead of complete):
kanban_comment(body="review-required handoff:\n" + json.dumps({...}, indent=2))
kanban_block(reason="review-required: rate limiter shipped — needs eyes before merging")
Research task:
kanban_complete(
summary="3 libraries reviewed; vLLM wins on throughput",
metadata={"sources_read": 12, "recommendation": "vLLM"},
)
Only list ids captured from successful kanban_create return values in created_cards. Never invent ids from prose.
Bad: "stuck". Good: one sentence naming the specific decision you need. Leave longer context as a comment.
Good: "epoch 12/50, loss 0.31", "scanned 1.2M/2.4M rows". Bad: "still working", empty.
If kanban_show returns prior runs, read their outcome/summary/error. Don't repeat the failed path.
delegate_task as a substitute for kanban_create.clarify — you're headless. Use kanban_comment + kanban_block.$HERMES_KANBAN_WORKSPACE.kanban_show first.kanban_* tools work across all backends.Every tool has a CLI equivalent:
kanban_show ↔ hermes kanban show <id> --jsonkanban_complete ↔ hermes kanban complete <id> --summary "..." --metadata '{...}'kanban_block ↔ hermes kanban block <id> "reason"kanban_create ↔ hermes kanban create "title" --assignee <profile> [--parent <id>]