Interactive sprint board generator for BMAD projects
Project description
bmad-sprint-board
Interactive sprint board generator for BMAD projects. Produces a self-contained HTML file with a kanban board, list view, workflow guide, and changelog — all from your epics.md and sprint-status.yaml.
Zero dependencies. Pure Python standard library.
Install
pip install bmad-sprint-board
Or install from source:
pip install git+https://github.com/Isaqdn03/bmad-sprint-board.git
Or for development:
git clone https://github.com/Isaqdn03/bmad-sprint-board.git
cd bmad-sprint-board
pip install -e .
Usage
CLI
From your project root (directory containing _bmad-output/):
# Generate sprint-board.html
bmad-board
# Generate and open in browser
bmad-board --open
# Custom output directory
bmad-board -o ./docs
# Explicit project name (otherwise auto-detected from sprint-status.yaml)
bmad-board --project "My Project"
# Explicit project root
bmad-board --root /path/to/project
Python API
from pathlib import Path
from bmad_sprint_board.sprint_board import generate_sprint_board
path = generate_sprint_board(
project_root=Path("/path/to/project"),
output_dir=Path("./output"), # optional
project_name="My Project", # optional, auto-detected
)
print(f"Board at: {path}")
Required Directory Structure
your-project/
_bmad-output/
planning-artifacts/
epics.md # Epic and story definitions
implementation-artifacts/
sprint-status.yaml # Story statuses
sprint-board.html # Generated output
.sprint-board-snapshot.json # Auto-generated for changelog
epics.md format
Standard BMAD epics markdown:
## Epic 0: First Epic Title
Description of the epic.
### Story 0.1: First Story Title
Story content with acceptance criteria...
### Story 0.2: Second Story Title
More content...
## Epic 1: Second Epic Title
...
sprint-status.yaml format
project: My Project
last_updated: 2026-03-26
development_status:
epic-0: in-progress
0-1-first-story: done
0-2-second-story: in-progress
epic-1: backlog
1-1-next-story: backlog
Valid statuses: backlog, ready-for-dev, in-progress, review, done
Auto-Regeneration with Claude Code
Add a hook so the board auto-regenerates whenever sprint-status.yaml is edited during a Claude Code session.
.claude/hooks/regenerate-sprint-board.sh
#!/bin/bash
input=$(cat)
file_path=$(echo "$input" | jq -r '.tool_input.file_path // empty' 2>/dev/null)
if [[ "$file_path" == *"sprint-status.yaml" ]]; then
project_dir=$(echo "$input" | jq -r '.cwd // empty' 2>/dev/null)
cd "$project_dir" 2>/dev/null || exit 0
bmad-board 2>/dev/null || true
fi
exit 0
chmod +x .claude/hooks/regenerate-sprint-board.sh
.claude/settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/regenerate-sprint-board.sh",
"timeout": 30
}
]
}
]
}
}
BMAD skills (bmad-create-story, bmad-dev-story, bmad-code-review) auto-update sprint-status.yaml. With this hook, the board stays in sync automatically.
Features
- Kanban board — 5-column drag-free visual board (backlog, ready, in-progress, review, done)
- List view — Compact epic/story list with status badges
- Workflow view — Visual guide to the BMAD implementation pipeline
- Story detail panel — Click any story to see full content with rendered markdown
- Epic filtering — Filter by epic or search by story name
- Changelog — Shows what changed since last generation
- Dark theme — GitHub-inspired dark UI
- Self-contained — Single HTML file with embedded CSS/JS, no external dependencies
- Zero dependencies — Pure Python stdlib, no PyYAML or other packages needed
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bmad_sprint_board-1.0.1.tar.gz.
File metadata
- Download URL: bmad_sprint_board-1.0.1.tar.gz
- Upload date:
- Size: 15.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6673ee652ef5909d56082ec8f0a4e253e5c79b6f59fa05669b798b6fd6e26538
|
|
| MD5 |
4688f6ce67cca33f8b7535a5540a9e8e
|
|
| BLAKE2b-256 |
a39b55bc7aa7d50d51cf200f2f19d3d091a9121c0801943637507eb77210126a
|
File details
Details for the file bmad_sprint_board-1.0.1-py3-none-any.whl.
File metadata
- Download URL: bmad_sprint_board-1.0.1-py3-none-any.whl
- Upload date:
- Size: 17.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35f5dc9d3f2e637cc7cf74f117de18cad0565d487edcf151db1c55fb8cdf9c61
|
|
| MD5 |
8b3057ebc90533b731be0afc32015d9b
|
|
| BLAKE2b-256 |
00395ba7be139efc9a966711147d2ed56b8b569fa72438b5ded73e0c8906ee56
|