> 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 skills add https://github.com/antopolskiy/kanban-md --skill kanban-based-development
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 reviewThis skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.
Build agentic applications with GitHub Copilot SDK. Use when embedding AI agents in apps, creating custom tools, implementing streaming responses, managing sessions, connecting to MCP servers, or creating custom agents. Triggers on Copilot SDK, GitHub SDK, agentic app, embed Copilot, programmable agent, MCP server, custom agent.
Coding Agent Session Search - unified CLI/TUI to index and search local coding agent history from Claude Code, Codex, Gemini, Cursor, Aider, ChatGPT, Pi-Agent, Factory, and more. Purpose-built for AI agent consumption with robot mode.
Destructive Command Guard - High-performance Rust hook for Claude Code that blocks dangerous commands before execution. SIMD-accelerated, modular pack system, whitelist-first architecture. Essential safety layer for agent workflows.
Makepad UI development skills for Rust apps: setup, patterns, shaders, packaging, and troubleshooting.
Secure environment variable management ensuring secrets are never exposed in Claude sessions, terminals, logs, or git commits
Prompt for generating an AGENTS.md file for a repository
Take antopolskiy/kanban-based-development from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.