internal/skill/skills/kanban-based-development/SKILL.md
Autonomous, parallel-safe development workflow using kanban-md. Use when the user asks to work through tasks, do kanban-based development, or when multiple agents need to coordinate work on the same codebase. Optimized for explicit handoffs and a "defer to user" protocol when human intervention is required.
npx skillsauth add antopolskiy/kanban-md kanban-based-developmentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Autonomous, parallel-safe development using kanban-md to coordinate work on a shared board.
Claims prevent duplicate work; review is the waiting room (handoff, user action, merge, decisions).
This board is shared. Multiple agents and humans may be working on it simultaneously. You are NOT the only one reading or modifying tasks. This means:
The claim mechanic is the coordination primitive. It prevents two agents from working on the same task. You MUST claim a task before starting any work on it, and you MUST only pick unclaimed tasks. Violating this causes duplicate work, merge conflicts, and wasted effort.
in-progress for your agent session.edit --release for your own work (or when the user explicitly asks).claim_timeout, periodically renew your claim: kanban-md edit <ID> --claim <agent>.kanban-md from board home (the canonical repo directory that owns the shared board).main as a separate commit after the task is merged and moved to done.At the start of the session, determine and remember <board-home>:
cd <the canonical repo directory that owns the shared board>
pwd # remember this path as <board-home>
Recommended: keep two shells (or split panes) open:
<board-home> for kanban-md commandsDo not run multiple mutating kanban-md commands in parallel against the same board directory.
If you are unsure you’re using the shared board, run kanban-md board --compact and confirm the board name/shape is what you expect.
By default, agents should take tasks all the way to done (worktree → commit → merge → done).
Defer to the user (leave the task in review with a handoff) only when you need:
Each agent session must generate a unique name to identify itself for claims. At the very start of a session, run:
kanban-md agent-name
This produces a name like quiet-storm or frost-maple. Remember this name in your context and use it as a literal string in all claim/release commands for the rest of the session. Do not store it in a file or environment variable — those are not persistent or isolated between agents.
Example: if the generated name is frost-maple, use --claim frost-maple in every claim command.
Use --compact for board/list/log output whenever available to keep output short.
Before picking work, ensure board home is on main:
cd <board-home>
git switch main
git status
From board home:
Pick only from startable columns to avoid accidentally re-picking review work:
kanban-md pick --claim <agent> --status todo --move in-progress
If todo is empty:
kanban-md pick --claim <agent> --status backlog --move in-progress
This is atomic — if another agent claims the task between your list and claim, pick handles it safely. No need to list/choose/claim manually.
After picking, read the full task:
kanban-md show <ID>
Create a worktree for the task branch from board home:
git worktree add ../kanban-md-task-<ID> -b task/<ID>-<kebab-description>
cd ../kanban-md-task-<ID>
Skip a worktree only for truly non-conflicting work (e.g., board-only changes or writing an untracked research report). If you touch tracked code/config, use a worktree.
Implement the smallest change that satisfies the task.
go test ./...golangci-lint run ./...Commit in the worktree when green:
git add <files>
git commit -m "feat: <description>"
While a task is in-progress, leave short timestamped notes in the task body from board home (especially after major steps or before/after running tests). This makes handoffs and reviews much faster.
kanban-md edit <ID> --append-body "Implemented X/Y/Z, now running tests." --timestamp --claim <agent>
The --append-body (-a) flag appends text to the existing body without replacing it. The --timestamp (-t) flag prefixes a timestamp line like [[2026-02-10]] Mon 15:04.
Switch back to board home and merge your task branch:
cd <board-home>
git switch main
git status
If git status shows unexpected changes outside the board directory (usually kanban/) or a git operation in progress, do not proceed. Park the task in review and move on.
Merge and re-run tests on main:
git merge task/<ID>-<kebab-description>
go test ./...
golangci-lint run ./...
If you cannot merge right now (e.g., another merge/rebase is in progress), do not force. Park the task in review, leave a note (branch name + what’s left), and pick the next task.
To park a “ready to merge” task:
From board home:
kanban-md handoff <ID> --claim <agent> --note "Ready to merge: task/<ID>-…; remaining: …" --timestamp --release
Only after the merge is on main and checks pass:
From board home:
kanban-md edit <ID> --release
kanban-md move <ID> done
From board home:
git add kanban/config.yml kanban/tasks/
git commit -m "chore(board): update task #<ID>"
git worktree remove --force ../kanban-md-task-<ID>
git branch -d task/<ID>-<kebab-description>
If you cannot continue without the user (decision, access, environment, or anything outside your control):
From board home:
kanban-md handoff <ID> --claim <agent> \
--block "Waiting on user: <what you need>" \
--note "## Handoff
- Current state:
- Branch (if any):
- Open questions (A/B):
- Next step:" \
--timestamp --release
In your handoff note, include:
Then pick the next task. Do not idle.
When the user answers and you need to continue, re-claim and move back to in-progress:
From board home:
kanban-md edit <ID> --claim <agent>
kanban-md edit <ID> --unblock --claim <agent> # if it was blocked
kanban-md move <ID> in-progress --claim <agent>
| Status | Meaning |
|---|---|
| in-progress | Actively being worked by an agent right now |
| review | Waiting state: ready to merge, or waiting on user/decision/unblock |
| done | Merged to main (and checks pass) |
If pick returns "no unblocked, unclaimed tasks found":
kanban-md list --compact --blockedkanban-md list --compact --status reviewtools
Manage project tasks using kanban-md, a file-based kanban board CLI. Use when the user mentions tasks, kanban, board, backlog, sprint, project management, work items, priorities, blockers, or wants to track, create, list, move, edit, or delete tasks. Also use for standup, status update, sprint planning, triage, or project metrics.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.