dew/docs/features/kanban.md
Chris Hendrickson 198d65b7e2 Update stale documentation (DEW-0009)
- index.md: rewrite architecture section to reflect DewToolCommand mixin,
  CommandRegistry, and per-package config extension pattern
- config.md: update default columns to backlog/doing/done
- features/mcp.md: replace McpToolProvider references with DewToolCommand,
  add all 12 tools to the table, add link types table
- features/kanban.md: replace stub with full docs covering storage layout,
  ticket format, CLI command reference, link types, and config

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-23 19:56:08 -04:00

3.5 KiB

Dew Kanban Board

The Dew Kanban Board lets you create and manage tickets across a set of configurable columns. Every command is also registered as an MCP tool, so AI agents can interact with the board using the same operations as the CLI.

Storage layout

Tickets live inside the .project/kanban/ directory. Each column has its own subdirectory, and attachments are stored separately by ticket ID so they survive column moves:

.project/
└── kanban/
    ├── backlog/
    │   └── DEW-0001.md
    ├── doing/
    │   └── DEW-0002.md
    ├── done/
    │   └── DEW-0003.md
    ├── archive/            ← soft-deleted tickets (future)
    └── attachments/
        └── DEW-0001/       ← per-ticket attachment directory
            └── screenshot.png

Ticket format

Each ticket is a Markdown file with a YAML frontmatter block. The column is derived from the containing directory and is not stored redundantly in the file.

---
id: DEW-0001
title: "My ticket"
type: story
created: 2026-04-23T19:00:00.000Z
links:
  - id: DEW-0002
    type: blocks
---

Body text goes here.

---

First comment.

---

Second comment.

CLI commands

All commands are available under dew kanban <subcommand>.

Subcommand Description
create Create a new ticket (--title, --type, --column, --body)
list List tickets (--column, --type)
get Get a ticket by ID (--id)
update Update fields on a ticket (--id, --title, --type, --column, --body)
delete Delete a ticket permanently (--id)
move Move a ticket to a different column (--id, --column)
search Full-text search across all ticket content (--query)
comment Append a comment to a ticket (--id, --comment)
config Print the current kanban configuration
stats Show ticket counts by column and type
link Link two tickets with a typed relationship (--id, --target, --type)
unlink Remove a link between two tickets (--id, --target)

Links are typed and bidirectional — writing one side automatically writes the inverse on the target.

Type Inverse Use case
blocks is_blocked_by Dependency between tickets
relates_to relates_to General relationship (symmetric)
duplicates is_duplicated_by Duplicate ticket tracking
parent_of child_of Epic → story → task hierarchy

Configuration

Columns, ticket types, and the ticket ID prefix are configured in .project/dew.yaml:

dew:
  kanban:
    prefix: "DEW"
    ticket_types:
      - id: epic
        name: Epic
      - id: story
        name: Story
    columns:
      - id: backlog
        name: Backlog
        color: blue
      - id: doing
        name: Doing
        color: yellow
      - id: done
        name: Done
        color: green

See the Configuration documentation for the full schema reference.