Skip to main content
skill CX Codex

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.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add mattjoyce/kanban-skill --skill kanban-ai -a claude-code
Open on GitHub

What 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 doing only 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 todo and 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-code

2Manually: put the files in place

~/.claude/skills/kanban-ai/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/kanban-ai/

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

Similar skills

All skills for Notes, tasks and projects →

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor