kanban-ai — Claude Code skill: a Markdown kanban board
Keeps a kanban board inside your repo, one .md card per task in kanban/, with the column read from frontmatter. Handy when tasks should live next to the code.
npx skills add mattjoyce/kanban-skill --skill kanban-ai -a claude-codeWhat kanban-ai does
The skill turns a kanban/ folder into a board. Every card is a file, and the board state comes from reading all of them and grouping by the status field: backlog, todo, doing, done or archive. No external service involved.
Cards carry an id, a priority, a blocked_by list, plus optional assignee, due_date and tags. A card only reaches doing once every ID in blocked_by is done; otherwise it stays where it is. Bundled scripts in scripts/ cover the everyday moves: view the board, search by tag, search card contents, list blocked cards, list tags by how often they appear, and dump every card as id|status|blocked_by|title.
One rule stands out: a ## Narrative section at the bottom of each card. Updates append a short dated note about what was learned or why the approach changed, using ISO dates. Earlier notes are left alone unless you ask otherwise, so the reasoning stays in the repo. A typo fix does not need a note. The scripts run under bash, and you find their path with **/kanban-ai/scripts/view_board.sh inside the installed plugin.
What it helps with
- create a task card in
kanban/with the right fields - move a card to
doingonly after its blockers are done - view the board by column with priority and blocker flags
- find cards by tag or by a word in the text
- tidy the board by moving finished cards into
kanban/archived/
Example prompts for the agent
- Create a card for JWT authentication with status
todoand tags auth, backend - Show me the board in
kanban/ - Which cards are blocked right now, and by what?
How to install kanban-ai
1Skills CLI (Vercel)
npx skills add mattjoyce/kanban-skill --skill kanban-ai -a claude-code2Manually: put the files in place
~/.claude/skills/kanban-ai/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/kanban-ai/
1Skills CLI (Vercel)
npx skills add mattjoyce/kanban-skill --skill kanban-ai -a codex2Manually: put the files in place
.agents/skills/kanban-ai/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add mattjoyce/kanban-skill --skill kanban-ai -a cursor2Manually: put the files in place
.cursor/skills/kanban-ai/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install mattjoyce/kanban-skill kanban-ai2Manually: put the files in place
.github/skills/kanban-ai/SKILL.md1Skills CLI (Vercel)
npx skills add mattjoyce/kanban-skill --skill kanban-ai -a gemini-cli2Platform CLI
gemini skills install https://github.com/mattjoyce/kanban-skill --path skills/kanban-aiManually: put the files in place
.devin/skills/kanban-ai/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add mattjoyce/kanban-skill --skill kanban-ai -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about kanban-ai
How do I install kanban-ai in Claude Code?
Run npx skills add mattjoyce/kanban-skill --skill kanban-ai -a claude-code. The skill lands at ~/.claude/skills/kanban-ai/SKILL.md.
What does kanban-ai do?
It runs a kanban board made of Markdown files in kanban/: creating cards, changing status, showing the board, searching tags and contents, and enforcing blocked_by dependencies.
What is the ## Narrative section for?
It sits at the end of a card and collects dated notes on reasons and decisions. Older entries stay untouched, so the card shows how the thinking evolved.
Source text
SKILL.md · Apache-2.0
--- name: kanban-ai description: Manage a Markdown-based Kanban board using card files in a kanban/ directory (including kanban/archived/ for completed cards). Use when the user asks to create, move, view, list, or manage tasks or cards on a kanban board, or when tracking work items across statuses like backlog, todo, doing, done, or archive. --- # Kanban AI Skill Manage a Kanban board as Markdown files in the `kanban/` directory. Each file is a card. The board state is derived by reading all card files and grouping by `status`. ## Narrative Record (Required) Treat cards as durable source material for future review. Do not rewrite or delete prior narrative content unless explicitly asked. When updating a card, append a brief narrative note to a `## Narrative` section at the end of the file. Focus on reasons, discoveries, insights, and decisions. Avoid transactional status-change logs unless they matter to the story. Use ISO dates. Narrative entry format: ```markdown ## Narrative - 2026-02-05: Discovered the auth flow must support device-based MFA; shifted approach to use WebAuthn. (by @assistant) ``` If the card has no `## Narrative` section, add it. If a change is minor (e.g., typo), skip the narrative note unless it carries meaningful insight. When a card is moved to `done`, add enough narrative detail that a future reader can understand the card’s story and outcome. Keep it coherent and complete without being verbose. ## Card Fields Each card's frontmatter supports the following fields: - `id` — Unique numeric identifier. Scan existing cards in `kanban/` (including `kanban/archived/`), take max + 1. Start at `1` if empty. Reference cards by this number. - `status` — Column: `backlog`, `todo`, `doing`, `done`, or `archive`. - `priority` — `High` or `Normal`. Defaults to `Normal` if omitted. - `blocked_by` — List of card IDs that must be `done` before this card moves to `doing`. Example: `[3, 7]`. Omit or set to `[]` if unblocked. - `assignee` — (optional) Owner of the card. - `due_date` — (optional) Target date. - `tags` — (optional) List of labels. ## Creating a Card Create a new `.md` file in `kanban/`. Filename should be kebab-case. If possible, include a Job Story using the structure “When [situation], I want to [motivation], so I can [expected outcome].” Do not force it; only add when it fits. If you add one, share it with the requester to confirm. ```markdown --- id: 1 status: todo priority: Normal blocked_by: [] assignee: "@claude" due_date: 2026-02-28 tags: [auth, backend] --- # Implement User Authentication Set up user authentication using JWTs. ## Acceptance Criteria - Users can register for a new account. - Users can log in with their credentials. - Authenticated users receive a JWT. ``` ## Moving a Card Update the `status` field in frontmatter. Before moving to `doing`, verify all IDs in `blocked_by` have status `done`. If any are not `done`, the card stays put. Cards with `status: done` may be moved into `kanban/archived/` to keep the main board tidy. This is a file-location move only; the card should remain a normal card with `status: done` unless explicitly changed. If `kanban/archived/` does not exist, create it under the active cards folder (`kanban/`) before moving the card. ## Viewing the Board Helper scripts are bundled in the `scripts/` directory alongside this skill file. To locate them, find this skill's directory within the installed plugin (e.g., using `glob` for `**/kanban-ai/scripts/view_board.sh`). Run the board view script: ```bash bash <SCRIPTS_DIR>/view_board.sh kanban/ ``` Outputs cards grouped by status column, with priority and blocked_by flags inline. ## Searching and Filtering ### Search by Tag ```bash bash <SCRIPTS_DIR>/search_by_tag.sh kanban/ <tag> ``` Output: Cards with that tag (ID, status, title) ### Search Content ```bash bash <SCRIPTS_DIR>/search_content.sh kanban/ "<search term>" ``` Output: Cards matching the search term with context lines ### Show Blocked Cards ```bash bash <SCRIPTS_DIR>/show_blocked.sh kanban/ ``` Output: Cards with non-empty `blocked_by` field and what's blocking them ### List All Tags ```bash bash <SCRIPTS_DIR>/list_tags.sh kanban/ ``` Output: All tags sorted by usage count (most used first) ### List All Cards ```bash bash <SCRIPTS_DIR>/list_all_cards.sh kanban/ ``` Output: All cards in pipe-delimited format (id|status|blocked_by|title), sorted by ID. Useful for parsing, debugging dependencies, or exporting board state. **Note:** `<SCRIPTS_DIR>` refers to the `scripts/` directory next to this SKILL.md file. All scripts take the kanban directory as the first argument. If omitted, they default to the current directory.
© mattjoyce · Apache-2.0 · mattjoyce/kanban-skill