5.2 KiB
Populating the GitHub Kanban Board
This guide shows how to populate the MetaBuilder GitHub project board (https://github.com/users/johndoe6345789/projects/2) with issues from the TODO files.
Quick Start (3 Steps)
Step 1: Authenticate with GitHub
gh auth login
Follow the prompts to authenticate. Choose:
- GitHub.com (not GitHub Enterprise)
- HTTPS protocol
- Login with a web browser (recommended)
Step 2: Preview Issues (Recommended)
Before creating hundreds of issues, do a dry run:
cd /path/to/metabuilder
python3 tools/project-management/populate-kanban.py --dry-run --limit 10
This shows you what the first 10 issues would look like.
Step 3: Create All Issues
Warning: This creates 775 issues and will take 15-20 minutes.
python3 tools/project-management/populate-kanban.py --create --project-id 2
The script will:
- Parse all TODO files in
docs/todo/ - Create a GitHub issue for each unchecked TODO item
- Add appropriate labels (core, infrastructure, feature, etc.)
- Add priority labels (🔴 Critical, 🟠 High, 🟡 Medium, 🟢 Low)
- Add each issue to project #2
- Pause periodically to avoid rate limiting
Alternative Approaches
Create Issues in Batches
If you want more control, create issues in smaller batches:
# Export all issues to JSON first
python3 tools/project-management/populate-kanban.py --output all-issues.json
# Then create in batches using the --limit flag
# First 100 issues
python3 tools/project-management/populate-kanban.py --create --limit 100
# Wait a bit, then continue...
# (Note: You'd need to modify the script to support offset/skip)
Create Only High Priority Issues
# First export to JSON
python3 tools/project-management/populate-kanban.py --output all-issues.json
# Filter for critical and high priority
cat all-issues.json | jq '[.[] | select(.priority == "🔴 Critical" or .priority == "🟠 High")]' > high-priority.json
# This gives you 426 high-priority items
# You'll need to write a small script to create from this filtered JSON
Manual Review Before Creating
# Export to JSON
python3 tools/project-management/populate-kanban.py --output issues.json
# Review the issues
cat issues.json | jq '.[] | {title, priority, labels, file}' | less
# If satisfied, create them
python3 tools/project-management/populate-kanban.py --create
What Gets Created
Each TODO item from the markdown files becomes a GitHub issue with:
Title: The TODO text (truncated to 100 chars if needed)
Body: Contains:
- Source file path
- Section within the file
- Line number
- Context from surrounding items
- The full task description
Labels: Automatically assigned based on:
- File location (core, infrastructure, features, improvements)
- Filename content (dbal, frontend, security, testing, etc.)
- Priority level from README
Example Issue:
Title: Run `npm run act:diagnose` and `npm run act` to validate local GitHub Actions testing
Body:
**File:** `docs/todo/core/1-TODO.md`
**Section:** Quick Wins
**Line:** 7
**Task:** Run `npm run act:diagnose` and `npm run act` to validate local GitHub Actions testing
Labels: workflow, core, 🟠 High
Statistics
The script will create approximately:
- Total issues: 775
- By priority:
- 🔴 Critical: 40 issues
- 🟠 High: 386 issues
- 🟡 Medium: 269 issues
- 🟢 Low: 80 issues
- By category:
- Feature: 292 issues
- Workflow/Core: 182 issues
- Enhancement: 160 issues
- Infrastructure: 141 issues
- SDLC: 127 issues
- And more...
Troubleshooting
"You are not logged into any GitHub hosts"
Solution: Run gh auth login first
"Rate limit exceeded"
Solution: The script includes automatic pausing. If you still hit limits:
- Wait 15-30 minutes
- Use
--limitto create fewer issues at once
"Project not found"
Solution: Verify the project ID:
gh project list --owner johndoe6345789
Then use the correct ID:
python3 tools/project-management/populate-kanban.py --create --project-id <correct-id>
Want to test first?
Always safe to use --dry-run:
python3 tools/project-management/populate-kanban.py --dry-run
Cleanup (If Needed)
If you need to remove issues:
# List all open issues
gh issue list --repo johndoe6345789/metabuilder --limit 1000
# Close issues in bulk (requires jq)
gh issue list --repo johndoe6345789/metabuilder --limit 1000 --json number \
| jq -r '.[] | .number' \
| xargs -I {} gh issue close {} --repo johndoe6345789/metabuilder
Next Steps After Population
Once issues are created:
- Triage: Review and adjust priorities/labels as needed
- Milestones: Group issues into milestones for releases
- Assignments: Assign issues to team members
- Project board: Organize columns (Backlog, In Progress, Done)
- Labels: Add custom labels if needed (bug, documentation, etc.)
See Also
- tools/project-management/README.md - Detailed script documentation
- docs/todo/README.md - TODO system overview
- GitHub Project - Target kanban board