| name | kanban-agent |
| version | 1.0.0 |
| description | Full read/write access to YOUR OWN published Kanban board. The board URL is
resolved automatically at runtime (community URL when published, localhost for
dev) โ no hardcoding, no edits.
Use when an agent needs to manage tasks on its board โ list tasks,
create/update/move/delete tasks, manage columns, or check checklists.
|
| delivery | script |
| metadata | {"starchild":{"emoji":"๐","skillKey":"kanban-agent"}} |
Overview
This skill connects to your own Kanban board. The board URL is resolved
automatically at runtime โ you never hardcode or edit it:
KANBAN_URL env var (if set) โ trusted, no ping.
https://community.iamstarchild.com/{USER_ID}-kanban-board โ your published board, if reachable.
http://localhost:5555 โ local dev fallback (node server.js in skills/kanban/).
The first candidate that answers a health ping wins, and the result is cached.
So the same code hits localhost before you publish and your community board
after โ zero edits. No auth, no collisions with other users' boards.
The default board ID is board-001. All functions default to it โ you don't need to pass it unless working with multiple boards.
Quick Start
from exports import kb_health, kb_summary, kb_list_tasks, kb_create_task, kb_move_task
kb_health()
kb_summary()
Connecting / targeting a board
kb_health()
kb_use_board("https://community.iamstarchild.com/{THEIR_USER_ID}-kanban-board")
kb_reset_board()
Auto-detect needs no setup. Use kb_use_board() only to reach a board that
isn't your own (a shared/team board, or another agent's for collaboration).
Sharing your board with a colleague (pre-wired handoff)
Don't hand over a raw copy โ a raw copy auto-detects the recipient's own board,
not yours. Instead stamp a copy with your board URL first:
kb_export_for_sharing()
It resolves your own community board URL, copies this folder to
output/kanban-agent-share/kanban_agent_skill/, stamps DISTRIBUTED_BOARD_URL
into it, and zips it. Send that folder/zip. The recipient:
- Drops
kanban_agent_skill/ into their skills/ directory.
- Their agent runs skill_refresh (registers it as
kanban-agent).
kb_health() โ it auto-connects to your board, no config.
(To wire the copy to a different board, pass kb_export_for_sharing(board_url=...).
The recipient can still set their own KANBAN_URL to use their own board.)
Functions
Board Overview
kb_summary(board_id="board-001")
Returns board info + all columns with task counts and task titles. Always call this first to orient yourself โ get column IDs before creating or moving tasks.
kb_list_boards()
Returns all boards. Each has an id field โ pass it as board_id to scope all other calls.
kb_create_board(title="Sprint 3", emoji=":fire:")
Creates a new board. Returns the new board object including its id.
kb_delete_board(board_id="b-123")
Deletes a board and all its columns and tasks. Irreversible.
Columns
kb_list_columns(board_id="board-001")
Returns all columns. Each has an id field you'll need for kb_create_task and kb_move_task.
kb_create_column(title="QA", board_id="board-001", color="#FF8607")
Add a new column. Color is a hex string.
kb_delete_column(list_id="list-backlog")
โ ๏ธ Deletes the column and all its tasks permanently.
Tasks โ Reading
kb_list_tasks(
board_id="board-001",
list_id=None,
owner=None,
status=None,
priority=None,
archived=False,
due_before=None,
due_after=None,
search=None,
)
List tasks with filters. All args are optional โ combine freely. Examples:
kb_list_tasks(owner="Eric") โ all of Eric's tasks
kb_list_tasks(status="In Progress") โ tasks in the In Progress column
kb_list_tasks(owner="ole", status="In Progress") โ Ole's in-progress tasks
kb_list_tasks(priority="high") โ high priority tasks
kb_list_tasks(search="auth") โ full-text search
kb_get_task(task_id="t1")
Get full details of a single task by ID.
Tasks โ Writing
kb_create_task(
title="Fix login bug",
list_id="list-backlog",
board_id="board-001",
description="Users can't log in on mobile",
tags=["bug", "auth"],
priority="high",
due_date=1782014400,
checklist=["Reproduce", "Fix", "Test"],
)
kb_update_task(
task_id="t1",
title="New title",
description="Updated description",
tags=["frontend"],
priority="urgent",
)
Pass only the fields you want to change โ the rest are preserved.
kb_move_task(task_id="t1", list_id="list-done")
Move a task to a different column (equivalent to drag-and-drop).
kb_delete_task(task_id="t1")
Permanent delete.
kb_archive_task(task_id="t1")
Soft delete โ hides the task without destroying it.
kb_unarchive_task(task_id="t1")
Restore an archived task.
kb_assign_owners(task_id="t1", owners=["alice", "bob@example.com"])
Set (replace) all owners on a task.
kb_bulk_move(from_list_id="list-progress", to_list_id="list-backlog")
Move every task from one column to another in one call. Returns {"moved": N, "errors": [...]}.
Checklist
kb_add_checklist_item(task_id="t1", text="Write tests")
kb_toggle_checklist_item(task_id="t1", index=0, checked=True)
Index is 0-based.
Typical Agent Workflow
summary = kb_summary()
columns = {c["title"]: c["id"] for c in summary["columns"]}
task = kb_create_task(
title="Investigate memory leak",
list_id=columns["Backlog"],
priority="high",
tags=["performance"],
)
kb_move_task(task["id"], columns["In Progress"])
kb_move_task(task["id"], columns["Done"])
Notes
- All writes go to the live board โ changes are visible immediately in the UI.
- No authentication required โ anyone with this skill (and reach to the URL) has full read/write access.
- The board URL is auto-resolved (see Overview) โ no editing needed. Override with the
KANBAN_URL env var, or at runtime with kb_use_board(url) / kb_reset_board().
- No password gate. The board UI loads directly. (Note: the API is open โ anyone who knows your published URL can read/write it. Don't publish a board with sensitive data unless you're comfortable with that.)
UI Features (kanban.html)
Key front-end behaviours to be aware of when editing kanban-board/kanban.html:
- Done column treatment: Cards in any column titled "Done" (case-insensitive) automatically get
card-done class: 90% opacity, orange top-border highlight, diagonal sheen via ::before, orange glow on hover, and a small โ pill badge (.done-badge) in the top-right corner. Controlled by the isDone prop on <Card>.
- Multi-owner chip input: Modal Owners field is a chip input โ Enter/comma adds, รremoves. Stored as
task.participants[].
- Avatar hover tooltip: Tooltips render via a fixed-position
#avatar-tooltip-portal div (plain JS, not React) to avoid clipping by overflow:hidden column containers. showAvatarTip(e, name, role) / hideAvatarTip() are global functions added in a <script> block before React.
- Column drag-and-drop: Columns can be reordered by dragging their header.
- Status field removed: Status was removed from both card face and modal (column = status). Do not re-add it.
- API_BASE: Derived from
window.location.pathname at runtime, so the same kanban.html works at localhost:5555/ and behind any published path prefix (/{USER_ID}-kanban-board/). Do not hardcode a prefix.