label-management
Create, edit, delete, and organize GitHub Issue labels and milestones. Use for label operations, milestone management, or organizing issue taxonomy.
When & Why to Use This Skill
This Claude skill automates GitHub repository metadata management by providing a comprehensive interface for Label and Milestone CRUD operations. It leverages native GitHub CLI commands to streamline project organization, enabling users to programmatically standardize issue taxonomies, synchronize labels across multiple repositories, and manage project timelines without manual web UI interaction. It effectively solves the overhead of repository setup and ensures consistent project tracking standards across large-scale development environments.
Use Cases
- Standardizing Label Taxonomies: Automatically create a unified set of priority, status, and type labels across all repositories within a GitHub organization to ensure consistent reporting.
- Automated Sprint Planning: Programmatically create and update milestones with specific due dates and descriptions based on project roadmaps.
- Repository Migration & Sync: Export a proven label system from a template repository and clone it to new or existing projects to maintain workflow consistency.
- Bulk Issue Triage: Perform batch operations such as renaming labels across hundreds of issues or cleaning up redundant/deprecated labels using automated CLI scripts.
- Project Health Analytics: Retrieve milestone progress and label usage statistics to generate insights into team velocity and issue distribution.
| name | label-management |
|---|---|
| description | Create, edit, delete, and organize GitHub Issue labels and milestones. Use for label operations, milestone management, or organizing issue taxonomy. |
Label & Milestone Management
Capability: Complete label and milestone CRUD operations with native GitHub CLI
When to use: Managing labels, milestones, and metadata organization
No Extension Required: All operations use native gh commands
Label Operations
List Labels
# List all labels
gh label list
# List with JSON output
gh label list --json name,color,description
# Filter and format
gh label list --json name,color --jq '.[] | "\(.name): #\(.color)"'
Create Labels
# Basic creation
gh label create "bug" --color "ff0000" --description "Something isn't working"
# Multiple labels at once
gh label create "priority:high" --color "ff0000"
gh label create "priority:medium" --color "ffaa00"
gh label create "priority:low" --color "00ff00"
# Knowledge base labels
gh label create "claude-code" --color "0366d6" --description "Claude Code tips and tricks"
gh label create "github-cli" --color "2ea44f" --description "GitHub CLI workflows"
Update Labels
# Update color
gh label edit "bug" --color "d73a4a"
# Update description
gh label edit "bug" --description "Confirmed bugs"
# Rename label
gh label edit "old-name" --name "new-name"
Delete Labels
# Delete single label
gh label delete "wontfix"
# Delete with confirmation skip
gh label delete "duplicate" --yes
# Batch delete (careful!)
gh label list --json name --jq '.[].name' | grep "temp-" | xargs -I {} gh label delete {} --yes
Label Organization Strategies
Knowledge Base Labels
# Topic categories
gh label create "claude-code" --color "0366d6"
gh label create "github-cli" --color "2ea44f"
gh label create "git" --color "5319e7"
gh label create "terminal" --color "0e8a16"
# Content types
gh label create "tips" --color "c5def5"
gh label create "troubleshooting" --color "d93f0b"
gh label create "how-to" --color "bfdadc"
gh label create "reference" --color "d4c5f9"
gh label create "example" --color "c2e0c6"
# Workflows
gh label create "workflow" --color "fbca04"
gh label create "mcp" --color "f9d0c4"
Priority System
# Hierarchical priorities
gh label create "priority:critical" --color "b60205" --description "Urgent - immediate action required"
gh label create "priority:high" --color "d93f0b" --description "Important - address soon"
gh label create "priority:medium" --color "fbca04" --description "Normal priority"
gh label create "priority:low" --color "0e8a16" --description "Low priority - nice to have"
Status Tracking
# Workflow states
gh label create "status:needs-triage" --color "ededed"
gh label create "status:in-progress" --color "fbca04"
gh label create "status:blocked" --color "d93f0b"
gh label create "status:review" --color "0366d6"
gh label create "status:ready" --color "0e8a16"
Cloning Labels Between Repositories
# Export labels from source repo
gh label list --repo source-owner/source-repo --json name,color,description > labels.json
# Import to target repo
cat labels.json | jq -r '.[] | @sh "gh label create \(.name) --color \(.color) --description \(.description) --repo target-owner/target-repo"' | sh
Milestone Operations
List Milestones
# Using gh api (no native gh milestone command)
gh api repos/{owner}/{repo}/milestones --jq '.[] | {number, title, state}'
# With full details
gh api repos/{owner}/{repo}/milestones --jq '.[] | {number, title, description, due_on, state, open_issues, closed_issues}'
Create Milestone
# Basic milestone
gh api repos/{owner}/{repo}/milestones \
--method POST \
--field title="v1.0.0" \
--field description="First stable release" \
--field due_on="2025-12-31T23:59:59Z"
# With state (open/closed)
gh api repos/{owner}/{repo}/milestones \
--method POST \
--field title="Q1 2025" \
--field state="open"
Update Milestone
# Update milestone
gh api repos/{owner}/{repo}/milestones/MILESTONE_NUMBER \
--method PATCH \
--field title="Updated Title" \
--field description="Updated description" \
--field state="closed"
Delete Milestone
# Delete milestone
gh api repos/{owner}/{repo}/milestones/MILESTONE_NUMBER --method DELETE
Batch Label Operations
Apply Label to Multiple Issues
# Add label to all open bugs
gh issue list --label bug --state open --json number --jq '.[].number' | \
xargs -I {} gh issue edit {} --add-label priority:high
# Remove label from closed issues
gh issue list --label needs-triage --state closed --json number --jq '.[].number' | \
xargs -I {} gh issue edit {} --remove-label needs-triage
Rename Labels Across Issues
# 1. Get all issues with old label
ISSUES=$(gh issue list --label old-label --json number --jq '.[].number')
# 2. Add new label, remove old label
for issue in $ISSUES; do
gh issue edit $issue --add-label new-label --remove-label old-label
done
# 3. Delete old label
gh label delete old-label
Label Analytics
Label Usage Statistics
#!/bin/bash
# Count issues per label
gh label list --json name --jq '.[].name' | while read -r label; do
count=$(gh issue list --label "$label" --json number --jq '. | length')
echo "$label: $count issues"
done | sort -t: -k2 -rn
Milestone Progress
# Get milestone progress
gh api repos/{owner}/{repo}/milestones/MILESTONE_NUMBER --jq '{
title,
open: .open_issues,
closed: .closed_issues,
percent_complete: ((.closed_issues / (.open_issues + .closed_issues)) * 100 | round)
}'
Common Workflows
Knowledge Base Setup
# 1. Create label structure
gh label create "claude-code" --color "0366d6"
gh label create "tips" --color "c5def5"
gh label create "how-to" --color "bfdadc"
# 2. Create issues with labels
gh issue create --title "Tip: Plan Mode" --label claude-code,tips,how-to --body-file tip.md
# 3. Search by label
gh search issues --label claude-code,tips
Issue Triage Workflow
# 1. List untriaged issues
gh issue list --label needs-triage
# 2. Review and categorize
gh issue edit 123 --add-label bug,priority:high --remove-label needs-triage
# 3. Assign milestone
gh api repos/{owner}/{repo}/issues/123 --method PATCH --field milestone=1
Color Palette (Standard GitHub)
| Color | Hex | Use Case |
|---|---|---|
| Red | #d73a4a |
Bugs, critical |
| Orange | #d93f0b |
Warnings, high priority |
| Yellow | #fbca04 |
Medium priority, needs |
| Green | #0e8a16 |
Improvements, low |
| Blue | #0366d6 |
Enhancements, features |
| Purple | #5319e7 |
Questions, research |
| Gray | #ededed |
Meta, wontfix |
Best Practices
- Consistent naming - Use prefixes for hierarchies (
priority:high,type:bug) - Clear descriptions - Help users understand when to use each label
- Limited set - 10-20 core labels, avoid label proliferation
- Color coding - Use colors meaningfully (red=urgent, green=low-priority)
- Regular cleanup - Remove unused labels, consolidate duplicates
- Document system - Maintain label guide in repository docs
Label Anti-Patterns
❌ Too many labels - Hard to choose, inconsistent application ❌ Duplicate meanings - "bug" vs "defect" vs "broken" ❌ Unclear names - "label1", "misc", "other" ❌ No descriptions - Users don't know when to apply ❌ Random colors - No meaningful color coding
Migration: Deprecated Extensions
DON'T USE:
gh-labelextension (last updated 2022) → Use nativegh labelinsteadgh-milestoneextension (last updated 2023) → Usegh apiinstead
Native commands are:
- ✅ Better maintained
- ✅ Faster (no extension overhead)
- ✅ More reliable
- ✅ Always available
Empirical Testing: 40+ test cases covering all label operations
Full Operational Guide: AI_AGENT_OPERATIONAL_GUIDE.md