kanban-ai
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.
git clone https://github.com/mattjoyce/kanban-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/mattjoyce/kanban-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/kanban-ai" ~/.claude/skills/mattjoyce-kanban-skill-kanban-ai && rm -rf "$T"
skills/kanban-ai/SKILL.mdKanban 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:
## 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:
— Unique numeric identifier. Scan existing cards inid
(includingkanban/
), take max + 1. Start atkanban/archived/
if empty. Reference cards by this number.1
— Column:status
,backlog
,todo
,doing
, ordone
.archive
—priority
orHigh
. Defaults toNormal
if omitted.Normal
— List of card IDs that must beblocked_by
before this card moves todone
. Example:doing
. Omit or set to[3, 7]
if unblocked.[]
— (optional) Owner of the card.assignee
— (optional) Target date.due_date
— (optional) List of labels.tags
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.
--- 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 <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 <SCRIPTS_DIR>/search_by_tag.sh kanban/ <tag>
Output: Cards with that tag (ID, status, title)
Search Content
bash <SCRIPTS_DIR>/search_content.sh kanban/ "<search term>"
Output: Cards matching the search term with context lines
Show Blocked Cards
bash <SCRIPTS_DIR>/show_blocked.sh kanban/
Output: Cards with non-empty
blocked_by field and what's blocking them
List All Tags
bash <SCRIPTS_DIR>/list_tags.sh kanban/
Output: All tags sorted by usage count (most used first)
List All Cards
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.