Agent skill

milestone-management

Use for time-based grouping of issues into delivery phases. Creates, updates, and tracks milestones, associates issues and epics, monitors progress toward milestone completion.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/devops/milestone-management

SKILL.md

Milestone Management

Overview

Milestones group issues by delivery phase or time period. They answer "what will be done by when?"

Core principle: Milestones are delivery commitments. Track them closely.

Announce at start: "I'm using milestone-management to organize work into delivery phases."

What is a Milestone?

A milestone is:

  • A GitHub milestone with a title, description, and optional due date
  • A collection of issues and epics targeting that delivery phase
  • A progress tracker showing completion percentage

Milestone vs Epic

Aspect Milestone Epic
Grouping by Time/delivery phase Feature/capability
Scope Cross-cutting Focused
Can contain Multiple epics Related issues
Progress % of issues closed % of issues closed
Due date Usually has one Usually doesn't

An epic can be assigned to a milestone. Multiple epics can share a milestone.

Creating a Milestone

Via GitHub CLI

bash
# Create milestone with due date
gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones \
  -X POST \
  -f title="[NAME]" \
  -f description="[DESCRIPTION]" \
  -f due_on="YYYY-MM-DDTHH:MM:SSZ"

# Create milestone without due date
gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones \
  -X POST \
  -f title="[NAME]" \
  -f description="[DESCRIPTION]"

Milestone Naming Conventions

Pattern Example Use Case
Version v1.0.0 Release milestones
Quarter Q1 2026 Quarterly planning
Phase Phase 1: Foundation Initiative phases
Sprint Sprint 23 Agile sprints
Date 2026-01 January Monthly releases

Milestone Description Template

markdown
## [MILESTONE NAME]

### Goals
- [Primary goal 1]
- [Primary goal 2]

### Epics Included
- #[EPIC_1] - [Epic Title]
- #[EPIC_2] - [Epic Title]

### Key Deliverables
1. [Deliverable 1]
2. [Deliverable 2]
3. [Deliverable 3]

### Success Criteria
- [ ] [Criterion 1]
- [ ] [Criterion 2]

### Dependencies
- Requires: [Previous milestone or external dependency]
- Enables: [What this milestone unblocks]

---
**Target Date:** [DATE]
**Owner:** [Team/Person]

Assigning Issues to Milestones

Assign During Creation

bash
gh issue create \
  --title "[Title]" \
  --milestone "[MILESTONE_NAME]" \
  --body "[Body]"

Assign Existing Issue

bash
gh issue edit [ISSUE_NUMBER] --milestone "[MILESTONE_NAME]"

Assign Epic to Milestone

bash
# Assign the epic tracking issue
gh issue edit [EPIC_NUMBER] --milestone "[MILESTONE_NAME]"

# Assign all issues in the epic
gh issue list --label "epic-[NAME]" --json number --jq '.[].number' | \
  while read num; do
    gh issue edit "$num" --milestone "[MILESTONE_NAME]"
  done

Tracking Milestone Progress

View Milestone Status

bash
# List milestones with progress
gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones \
  --jq '.[] | "\(.title): \(.open_issues) open, \(.closed_issues) closed"'

# Get specific milestone details
gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones/[NUMBER] \
  --jq '{title, open_issues, closed_issues, due_on, description}'

List Issues in Milestone

bash
# All issues in milestone
gh issue list --milestone "[MILESTONE_NAME]"

# Open issues in milestone
gh issue list --milestone "[MILESTONE_NAME]" --state open

# Closed issues in milestone
gh issue list --milestone "[MILESTONE_NAME]" --state closed

Progress Report

Generate a progress report:

bash
# Get milestone data
MILESTONE_DATA=$(gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones/[NUMBER])

TITLE=$(echo "$MILESTONE_DATA" | jq -r '.title')
OPEN=$(echo "$MILESTONE_DATA" | jq -r '.open_issues')
CLOSED=$(echo "$MILESTONE_DATA" | jq -r '.closed_issues')
TOTAL=$((OPEN + CLOSED))
PERCENT=$((CLOSED * 100 / TOTAL))
DUE=$(echo "$MILESTONE_DATA" | jq -r '.due_on')

echo "## Milestone: $TITLE"
echo "**Progress:** $CLOSED / $TOTAL ($PERCENT%)"
echo "**Open:** $OPEN issues"
echo "**Due:** $DUE"

Milestone Lifecycle

┌────────────┐     ┌────────────┐     ┌────────────┐     ┌────────────┐
│  Planning  │────▶│   Active   │────▶│  Closing   │────▶│   Closed   │
└────────────┘     └────────────┘     └────────────┘     └────────────┘
     │                   │                   │                  │
     ▼                   ▼                   ▼                  ▼
  Adding              Work in            Finishing         All issues
  issues              progress           last items        resolved

Milestone States

State Indicators
Planning Issues being added, 0% complete
Active Work in progress, 1-80% complete
Closing Final stretch, 80-99% complete
Closed 100% complete, milestone closed

Updating Milestones

Update Description/Due Date

bash
# Update due date
gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones/[NUMBER] \
  -X PATCH \
  -f due_on="YYYY-MM-DDTHH:MM:SSZ"

# Update description
gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones/[NUMBER] \
  -X PATCH \
  -f description="[NEW_DESCRIPTION]"

Close a Milestone

bash
gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones/[NUMBER] \
  -X PATCH \
  -f state="closed"

Milestone Planning Patterns

Initiative Phases

For large initiatives, create phase milestones:

bash
# Phase 1: Foundation
gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones -X POST \
  -f title="[Initiative] Phase 1: Foundation" \
  -f description="Infrastructure and setup for [Initiative Name]"

# Phase 2: Core Features
gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones -X POST \
  -f title="[Initiative] Phase 2: Core Features" \
  -f description="Primary feature implementation"

# Phase 3: Polish & Launch
gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones -X POST \
  -f title="[Initiative] Phase 3: Polish & Launch" \
  -f description="Final testing, polish, and release"

Release Milestones

For version-based releases:

bash
gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones -X POST \
  -f title="v2.0.0" \
  -f description="Major release with [features]" \
  -f due_on="2026-03-01T00:00:00Z"

Quarterly Milestones

For quarterly planning:

bash
gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones -X POST \
  -f title="Q1 2026" \
  -f description="Q1 2026 deliverables" \
  -f due_on="2026-03-31T23:59:59Z"

Handling Slippage

When issues won't make a milestone:

Option 1: Move to Next Milestone

bash
gh issue edit [ISSUE_NUMBER] --milestone "[NEXT_MILESTONE]"

Option 2: Extend Milestone

bash
gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones/[NUMBER] \
  -X PATCH \
  -f due_on="[NEW_DATE]"

Option 3: Reduce Scope

Move non-critical issues out:

bash
# Remove from milestone (set to no milestone)
gh issue edit [ISSUE_NUMBER] --milestone ""

Document Slippage

bash
gh issue comment [EPIC_OR_INITIATIVE] --body "## Milestone Update

**Milestone:** [NAME]
**Original Due:** [DATE]
**Status:** At risk

**Issues slipping:**
- #[N] - [Reason]
- #[N] - [Reason]

**Action taken:**
- [Moved X issues to next milestone]
- [Extended deadline by Y days]
- [Descoped Z items]"

Milestone Reports

Weekly Status Report

markdown
## Milestone Status Report - [DATE]

### [MILESTONE 1]
- **Progress:** 12/20 (60%)
- **Due:** [DATE]
- **Status:** 🟢 On Track
- **Blockers:** None

### [MILESTONE 2]
- **Progress:** 3/15 (20%)
- **Due:** [DATE]
- **Status:** 🟡 At Risk
- **Blockers:** Waiting on #123

### [MILESTONE 3]
- **Progress:** 0/10 (0%)
- **Due:** [DATE]
- **Status:** ⚪ Not Started
- **Blockers:** Depends on Milestone 2

Generate Report Script

bash
echo "# Milestone Status Report - $(date +%Y-%m-%d)"
echo ""

gh api repos/$GITHUB_OWNER/$GITHUB_REPO/milestones --jq '.[] |
  "## \(.title)\n- **Progress:** \(.closed_issues)/\(.open_issues + .closed_issues)\n- **Due:** \(.due_on // "No due date")\n"'

Memory Integration

bash
mcp__memory__create_entities([{
  "name": "Milestone-[NAME]",
  "entityType": "Milestone",
  "observations": [
    "Created: [DATE]",
    "Due: [DATE]",
    "Repository: $GITHUB_REPO",
    "Epics: [LIST]",
    "Issues: [COUNT]",
    "Status: [Planning/Active/Closed]"
  ]
}])

Checklist

  • Created milestone with clear name
  • Added description with goals
  • Set due date (if applicable)
  • Assigned epics to milestone
  • Assigned issues to milestone
  • Documented in initiative (if applicable)
  • Set up progress tracking
  • Stored in knowledge graph

Didn't find tool you were looking for?

Be as detailed as possible for better results