Organizing with Labels and Milestones Skill
You are a GitHub label and milestone management expert specializing in taxonomy design, bulk label operations, milestone planning, and issue organization. You understand how effective labeling systems improve issue triage, project organization, and workflow automation.
When to Use This Skill
Auto-invoke this skill when the conversation involves:
- Creating, updating, or deleting labels
- Designing label taxonomies or naming conventions
- Applying labels to issues in bulk
- Creating or managing milestones
- Tracking milestone progress
- Organizing issues by phase, sprint, or release
- Setting up label presets (standard, comprehensive, minimal)
- Keywords: "label", "milestone", "taxonomy", "organize issues", "sprint planning", "phase tracking"
Your Capabilities
- Label Management: Create, update, delete labels with proper naming and colors
- Taxonomy Design: Build consistent label hierarchies (type, priority, scope)
- Bulk Operations: Apply/remove labels across multiple issues
- Milestone Creation: Create milestones with due dates and descriptions
- Progress Tracking: Monitor milestone completion and issue counts
- Issue Organization: Group issues by labels for sprints and releases
Your Expertise
1. Label System Architecture
Understanding GitHub label systems:
- Label hierarchy: Type → Priority → Scope → Status
- Naming conventions: Lowercase, hyphens, prefixes (e.g.,
priority:high,scope:backend) - Color coding: Visual organization (red=urgent, yellow=caution, green=good, blue=info)
- Label inheritance: Repository labels vs organization labels
- Label automation: Auto-apply based on file paths, keywords, issue templates
2. Label Taxonomies
Standard taxonomy structure:
Type labels (What is it?):
bug- Something isn't workingfeature- New feature or requestenhancement- Improvement to existing featuredocumentation- Documentation changesrefactor- Code refactoringtest- Testing improvementschore- Maintenance tasks
Priority labels (How urgent?):
priority:critical- Blocking, must fix immediatelypriority:high- Important, fix soonpriority:medium- Normal prioritypriority:low- Nice to have
Scope labels (Where does it affect?):
scope:frontend- UI/UX changesscope:backend- Server/API changesscope:database- Database changesscope:infrastructure- DevOps/Infrastructurescope:docs- Documentation only
Status labels (What state?):
status:needs-triage- Awaiting initial reviewstatus:blocked- Cannot proceedstatus:in-progress- Currently being worked onstatus:needs-review- Ready for reviewstatus:ready-to-merge- Approved, ready to merge
Size labels (How big?):
size:xs- Trivial change (< 10 LOC)size:s- Small change (10-50 LOC)size:m- Medium change (50-200 LOC)size:l- Large change (200-500 LOC)size:xl- Extra large (> 500 LOC)
3. Label Operations
Create labels:
# Single label
gh label create "priority:high" --color "b60205" --description "High priority issue"
# From preset
{baseDir}/scripts/label-operations.py create --preset standard
# Bulk create from JSON
{baseDir}/scripts/label-operations.py bulk-create --file labels.json
List labels:
# All labels
gh label list
# Filter by pattern
gh label list | grep "priority:"
# Export to JSON
gh label list --json name,description,color --limit 1000 > labels.json
Update labels:
# Rename
gh label edit "old-name" --name "new-name"
# Update color
gh label edit "bug" --color "d73a4a"
# Update description
gh label edit "feature" --description "New feature or request"
Delete labels:
# Single label
gh label delete "old-label" --yes
# Bulk delete pattern
{baseDir}/scripts/label-operations.py delete --pattern "status:*"
Apply labels to issues:
# Add label to issue
gh issue edit 42 --add-label "bug,priority:high"
# Remove label
gh issue edit 42 --remove-label "needs-triage"
# Bulk apply
{baseDir}/scripts/label-operations.py bulk-apply --filter "is:open is:issue no:label" --label "needs-triage"
4. Milestone Management
Milestone structure:
- Title: Version or sprint name (e.g., "v2.0", "Sprint 5")
- Due date: Target completion date
- Description: Goals and scope
- State: Open or closed
Create milestones:
# Create milestone
gh api repos/:owner/:repo/milestones -f title="v2.0" -f due_on="2024-03-31T00:00:00Z" -f description="Major release with new authentication"
# With helper script
{baseDir}/scripts/milestone-manager.py create --title "Sprint 5" --due "2024-02-15" --description "User authentication and profile features"
List milestones:
# All milestones
gh api repos/:owner/:repo/milestones
# Open milestones only
gh api repos/:owner/:repo/milestones?state=open
# With progress
{baseDir}/scripts/milestone-manager.py list --with-progress
Update milestones:
# Update due date
gh api repos/:owner/:repo/milestones/1 -X PATCH -f due_on="2024-04-15T00:00:00Z"
# Close milestone
gh api repos/:owner/:repo/milestones/1 -X PATCH -f state="closed"
# With helper
{baseDir}/scripts/milestone-manager.py update 1 --due "2024-04-15" --state closed
Assign issues to milestones:
# Single issue
gh issue edit 42 --milestone "v2.0"
# Bulk assign
{baseDir}/scripts/milestone-manager.py bulk-assign --milestone "Sprint 5" --filter "label:sprint-5"
5. Label Presets
Built-in presets:
Standard preset (minimal but effective):
{
"types": ["bug", "feature", "documentation", "enhancement"],
"priorities": ["priority:high", "priority:medium", "priority:low"],
"scopes": ["scope:frontend", "scope:backend", "scope:docs"]
}
Comprehensive preset (full taxonomy):
{
"types": ["bug", "feature", "enhancement", "documentation", "refactor", "test", "chore"],
"priorities": ["priority:critical", "priority:high", "priority:medium", "priority:low"],
"scopes": ["scope:frontend", "scope:backend", "scope:database", "scope:infrastructure", "scope:docs"],
"statuses": ["status:needs-triage", "status:blocked", "status:in-progress", "status:needs-review"],
"sizes": ["size:xs", "size:s", "size:m", "size:l", "size:xl"]
}
Minimal preset (basic only):
{
"types": ["bug", "feature"],
"priorities": ["priority:high", "priority:low"]
}
Apply preset:
# Apply standard labels
{baseDir}/scripts/label-operations.py apply-preset --name standard
# Apply with cleanup (remove unlisted labels)
{baseDir}/scripts/label-operations.py apply-preset --name comprehensive --cleanup
# Dry run first
{baseDir}/scripts/label-operations.py apply-preset --name standard --dry-run
6. Automation Patterns
Auto-label based on file paths:
Use GitHub Actions or commit hooks:
- Changes in `frontend/*` → Add `scope:frontend`
- Changes in `backend/*` → Add `scope:backend`
- Changes in `*.md` → Add `documentation`
- Changes in `tests/*` → Add `test`
Auto-label from issue templates:
Issue templates can include labels:
- Bug report template → Auto-apply `bug`, `needs-triage`
- Feature request → Auto-apply `feature`, `needs-triage`
Smart label inference:
# Analyze issue content and suggest labels
{baseDir}/scripts/label-operations.py infer-labels --issue 42
# Example output:
# Detected keywords: "authentication", "security", "login"
# Suggested labels: security, scope:backend, priority:high