From kanbaroo
Use this skill when working with Kanbaroo, a kanban-style issue tracker for managing software work across workspaces, epics, and stories. Triggers when the user asks to: work on a specific story by its human ID (e.g. "let's work on KAN-123"), review what's in progress or up next, create stories from a planning session, comment on or transition stories, or otherwise interact with the Kanbaroo board. Also triggers when the user is deep in a coding session and identifies follow-up work that should be captured on the board rather than held in context. Works standalone on any Kanbaroo instance; optionally integrates with trusty-cage for delegating story implementation to isolated inner Claude sessions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/kanbaroo:kanbaroo-workflowThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Kanbaroo is a kanban-style issue tracker. This skill teaches you (outer Claude)
Kanbaroo is a kanban-style issue tracker. This skill teaches you (outer Claude) how to use its MCP tools to help the user manage work, and how to integrate that workflow with a coding session.
Kanbaroo has a three-level hierarchy:
KAN) used as a prefix for human-readable story IDs.KAN-123.Stories move through a fixed state machine:
backlog → todo → in_progress → in_review → done, with a rework loop from
in_review back to in_progress and a reopen path from done.
Every mutation is attributed to an actor (human, claude, or system).
When you act on Kanbaroo via MCP, your mutations are stamped claude. When
the user acts via the TUI or CLI, mutations are stamped human. This
distinction is visible in the audit log and the UI.
Kanbaroo's owner runs a single shared instance and points multiple Claude
Code sessions at it — one per project they work on. Each project gets its
own bearer token with a distinct actor_id, so the audit log can tell which
project's outer Claude did what.
Convention: actor_id = claude-<project-slug>. Examples: claude-kanbaroo,
claude-diff-donkey, claude-snippets. The actor is set at token-mint
time; you do not pass it in tool calls. Trust that whatever token the MCP
server is launched with already carries the right actor_id for the
current project.
What this means in practice:
actor_id (e.g. "claude-diff-donkey moved this to in_progress").claude-<other-project> actor on a workspace you're operating in, that's
another project's outer Claude legitimately reaching across workspaces —
not an error.Before doing anything Kanbaroo-related, confirm the current project is wired up:
.mcp.json at the project root (<cwd>/.mcp.json). It
should contain a kanbaroo mcpServers entry pointing at
kanbaroo-mcp with --token-file set.mcp__kanbaroo__* tools in your tool list. If they're
absent, the MCP server didn't start — usually because Claude Code was
launched before the wiring landed.If wiring is missing or the token file referenced by .mcp.json doesn't
exist, do not improvise. Tell the user:
"This project doesn't look wired up to Kanbaroo yet. Want me to walk you through
kb project init? It creates the workspace, mints a per-project token, and writes the.mcp.jsonin one shot. You'll need to restart Claude Code afterward for the MCP entry to activate."
If the user agrees, the host CLI command is:
kb project init [--key KEY --name "Name" --actor-id claude-<slug>]
It accepts --dry-run and --json. Defaults derive everything sensible
from the cwd basename. After running, the user must restart Claude Code in
that project for the new MCP server to be picked up. Don't try to use the
new tools in the same session — they're only available after restart.
Only fire this prompt once per session, and only when the user has already brought up Kanbaroo concepts (a story human ID, "the board", asking about work to pick up). Don't volunteer it in plain coding sessions.
Stories are workspace-scoped. Before any non-trivial workflow, pin down which workspace you're operating in:
~/.kanbaroo/config.toml for default_workspace. If set,
that's the user's preferred default and should be your first guess..mcp.json actor_id. A token with
actor_id=claude-diff-donkey strongly implies workspace key DD (or
similar — DIFFDONK, derived from the project's cwd basename).When you've identified the active workspace, pin it for the rest of the session unless the user redirects.
Use it proactively when:
Do not use it when:
The kanbaroo MCP server exposes these tools. Full descriptions live on
the tools themselves; this is a quick reference of what's wired and known
to work.
Reading:
list_workspaces — discover workspacesget_workspace — workspace with countslist_stories — search and filter (by workspace, state, priority, tag,
epic, text)get_story — full story detail including comments and linkageslist_epics — under a workspacelist_tags — workspace-scoped tagsReading (limited):
get_audit_trail — history of a specific entity. The MCP tool exists,
but the underlying REST endpoint
(GET /audit/entity/{entity_type}/{id}) is not yet wired in Phase 1.
Calls may 404 until the endpoint lands. If you need audit history,
flag this to the user rather than retrying.Writing:
create_story — new story under a workspace (epic optional)update_story — patch title, description, priority, branch, commit,
PR URLtransition_story_state — move through the state machinecomment_on_story — new comment or replylink_stories — create a typed linkage (relates_to, blocks, etc.)unlink_stories — remove a linkagecreate_epic / update_epic — epic lifecycleadd_tag_to_story / remove_tag_from_story — tag managementNot available via MCP (requires human via CLI/TUI/web):
kb token create etc.)kb project init or the web UI)get_story with the human ID. Read title, description, comments,
linkages, current state.backlog or todo, ask whether you should
transition it to in_progress before starting.transition_story_state to in_progress. This
stamps your actor_id on the state change.update_story.in_review (if PR exists) or done (if already merged).When the user identifies follow-up work mid-session:
create_story.list_epics to show options) or directly
under the workspace.none if the user doesn't have a
strong opinion; it's cheap to set later.create_story with the confirmed values. Surface the new human ID
to the user.list_stories filtered by state=in_progress for the active
workspace (or, if the user asks across all, repeat per workspace
from list_workspaces).get_story to see linkages in detail).The companion kanbaroo-cage-bridge skill (shipped in this plugin)
automates the hooks below when both cage-orchestrator and the
Kanbaroo MCP are active in the same session. If the bridge skill is
not active — or you are driving the integration manually — the steps
below describe what to do by hand:
get_story to pull full context (title, description, comments,
linkages).in_progress if not already there.tc launch (cage-orchestrator skill handles
this).update_story with the branch name and commit SHA.transition_story_state to in_review
or done.comment_on_story with a summary of what was done.comment_on_story to capture the blocker.You stamp your actor_id (claude-<project-slug>) on everything you do.
Keep this in mind:
done. Humans should confirm
completion.none. Priority is a human judgment.actor_id. Don't try to be clever with batch updates that obscure
what changed.get_audit_trail note above). Ask
the user to confirm.~/.kanbaroo/tokens/claude-<project-slug> exists and is
readable, and that .mcp.json points at the right path.kb project init (for workspaces) or the TUI/web UI (for epics).If you're unsure on any of these, stop and confirm with the user.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub areese801/kanbaroo-plugin --plugin kanbaroo