# Scrum — Project Management

> Backlog, Kanban board, and sprints in one place

Full Scrum toolkit: backlog with advanced filtering, Kanban board with HTMX status updates, sprints with velocity tracking, Markdown comments, and time logging.

## Features

- **Kanban board**: Four status columns: todo → in_progress → in_review → done. Status updates via HTMX — no page reload.
- **Backlog with filtering**: Filter by status, priority, assignee, sprint, and search by title. Pagination at 20 tickets per page.
- **Sprints**: Create, start, and complete sprints. On completion, unfinished tickets return to backlog. Only one active sprint at a time.
- **Story points & velocity**: Assign points to tickets. System aggregates them per sprint to track team velocity.
- **Markdown comments**: Discussions on tickets with full Markdown support. Rendered with Tailwind prose for clean formatting.
- **Time logging**: Add time entries with descriptions. Status workflow: draft → submitted → approved/rejected.
- **Auto-numbering**: Each ticket gets a unique number per project (e.g., PIM-1, PIM-2). Auto-increment per project.
- **Create from 500s errors**: Create a ticket directly from an error — description auto-fills with stacktrace and request context.

## How it works

1. **Create a sprint**: Set a name, goal, start and end dates.
2. **Add tickets to backlog**: Create tickets with title, Markdown description, priority, and story points.
3. **Start the sprint**: Assign tickets to the sprint and start it. The Kanban board becomes active.
4. **Work and move cards**: Update statuses on the Kanban board. Add comments and log time.
5. **Complete the sprint**: Unfinished tickets automatically return to backlog. Check velocity in reports.

## AI and MCP

Your AI agent can manage the entire Scrum cycle: create tickets, move between sprints, add comments, labels, attachments, and log time — 17 MCP tools.

- `list_tickets`: Filter by status, priority, sprint, text search
- `search_tickets`: Advanced ticket search with full-text filtering
- `create_ticket`: Create with auto-numbering, optional sprint and assignee
- `update_ticket`: Change title, description, status, priority, story points
- `get_board`: Current Kanban board state with all columns
- `create_sprint`: New sprint with name, goal, and dates
- `update_sprint`: Edit sprint name, goal or dates
- `start_sprint / complete_sprint`: Sprint lifecycle management
- `bulk_update_tickets`: Bulk update status, priority or sprint for multiple tickets
- `add_comment`: Add Markdown comment to a ticket
- `add_attachment`: Add attachment to ticket (base64, max 200MB)
- `get_attachment`: Get attachment content (base64, images as data URI)
- `log_time`: Log work hours with description
- `list_labels`: List project labels with assigned ticket counts
- `create_label`: Create a new label with name and color
- `get_burndown`: Burndown chart data — ideal/actual line, velocity, forecast
- `get_activity_log`: Project activity log

## Technical details

- **Pagination**: 20 tickets per page. Filters applied before pagination, story point sums computed after filters.
- **HTMX**: Ticket status update via PATCH without page reload. Kanban board updates in place.
- **Numbering**: Auto-increment per project. Safe under concurrent requests (SELECT MAX + 1 with row-level lock).
- **Markdown**: render_markdown_html() with Tailwind prose prose-invert. Used in ticket descriptions, comments, and wiki.
