Files
gh-yebot-rad-cc-plugins-plu…/commands/jira-sprint-planning.md
2025-11-30 09:08:00 +08:00

16 KiB
Raw Permalink Blame History

Jira Sprint Planning Command

Sprint planning, backlog grooming, and sprint execution workflows using jira-cli.

Instructions

Guide users through complete agile sprint ceremonies and workflows using jira-cli.

Sprint Lifecycle

Backlog Grooming → Sprint Planning → Sprint Execution → Daily Standups → Sprint Review → Retrospective → Repeat

Phase 1: Backlog Grooming

Prepare the backlog before sprint planning.

Review and Prioritize Backlog

View all backlog items:

jira issue list --status "To Do" --plain

View by priority:

jira issue list --status "To Do" --priority High,Critical --plain

View unestimated stories:

jira issue list --status "To Do" --jql "\"Story Points\" IS EMPTY" --plain

Grooming Checklist

For each backlog item, ensure:

  1. Clear description - Well-written user story or bug report

    jira issue view PROJ-123 --plain
    
  2. Acceptance criteria defined - What "done" looks like

    jira issue edit PROJ-123 --body "
    ## Acceptance Criteria
    - [ ] User can login with email
    - [ ] Password validation in place
    - [ ] Error messages displayed
    "
    
  3. Properly sized - Story points estimated

    jira issue edit PROJ-123 --custom story_points=5
    
  4. Dependencies identified - Link blocking/blocked issues

    jira issue link PROJ-123 PROJ-100 "is blocked by"
    
  5. Questions answered - No unknowns

    jira issue comment PROJ-123 "Clarified with product: should support OAuth and email/password"
    

Grooming Activities

Break down large stories:

# Create subtasks for large story
jira issue create --type Subtask --parent PROJ-123 --summary "Create database schema"
jira issue create --type Subtask --parent PROJ-123 --summary "Implement API endpoints"
jira issue create --type Subtask --parent PROJ-123 --summary "Add UI components"

Add labels for organization:

jira issue edit PROJ-123 --label frontend,high-priority

Update priority based on business value:

jira issue edit PROJ-123 --priority High

Phase 2: Sprint Planning

Plan the upcoming sprint iteration.

Pre-Planning: Check Current Sprint

View active sprint:

jira sprint list --state active --plain

Check sprint progress:

jira sprint view <SPRINT_ID> --plain

Identify incomplete items (to carry over):

jira issue list --status "In Progress,To Do" --plain

Sprint Planning Meeting

Step 1: Set Sprint Goal

Define the sprint objective (document outside Jira or in sprint description):

  • What is the primary goal?
  • What value will we deliver?
  • What will we demo?

Step 2: Review Team Capacity

Calculate available capacity:

  • Number of team members
  • Days in sprint
  • Planned time off
  • Other commitments

Example: 5 developers × 10 days × 6 hours = 300 story points capacity

Step 3: Select Sprint Backlog

List candidate stories (prioritized backlog):

jira issue list --status "To Do" --priority High,Medium --plain

View details for consideration:

jira issue view PROJ-123 --plain

Add items to sprint:

jira sprint add <SPRINT_ID> PROJ-123 PROJ-124 PROJ-125

Continue until capacity reached.

Step 4: Assign Initial Ownership

View sprint issues:

jira sprint view <SPRINT_ID> --plain

Assign to team members:

jira issue assign PROJ-123 developer1@example.com
jira issue assign PROJ-124 developer2@example.com
jira issue assign PROJ-125 @me

Step 5: Verify Sprint Commitment

Calculate total story points:

# List all sprint issues with story points
jira issue list --jql "sprint = <SPRINT_ID>" --raw

Parse and sum story points to verify it matches capacity.

Check for blockers:

jira issue list --status Blocked --plain

Resolve blockers before sprint starts.

Sprint Planning Checklist

  • Sprint goal defined and communicated
  • Team capacity calculated
  • Backlog items selected and added to sprint
  • Total story points ≤ team capacity
  • All items meet Definition of Ready
  • Initial assignments made
  • Dependencies identified and managed
  • No critical blockers
  • Team agrees on commitment

Definition of Ready

Before adding to sprint, ensure:

  • User story clearly written
  • Acceptance criteria defined
  • Story pointed/estimated
  • Dependencies identified
  • Technical approach discussed
  • No major unknowns

Phase 3: Sprint Execution

Day-to-day sprint activities.

Daily Workflow

Morning: Check your work:

jira issue list --assignee @me --status "In Progress,To Do" --plain

Start working on item:

jira issue move PROJ-123 "In Progress" --comment "Starting work on authentication"

Throughout day: Update progress:

jira issue comment PROJ-123 "Implemented login form, working on validation"

End of day: Update status:

jira issue comment PROJ-123 "Completed form validation, ready for API integration tomorrow"

When blocked:

jira issue move PROJ-123 "Blocked" --comment "Waiting for API specification from backend team"
jira issue link PROJ-123 PROJ-100 "is blocked by"

Sprint Monitoring

Check sprint progress:

jira sprint view <SPRINT_ID> --plain

Identify at-risk items:

jira issue list --status "To Do" --priority High --plain

Find blocked issues:

jira issue list --status Blocked --plain

Check unassigned work:

jira issue list --assignee EMPTY --status "To Do" --plain

Mid-Sprint Adjustments

Add urgent issues (if capacity allows):

jira sprint add <SPRINT_ID> PROJ-130
jira issue assign PROJ-130 @me
jira issue move PROJ-130 "In Progress"

Remove items if overcommitted:

# Remove from sprint (moves back to backlog)
jira sprint remove <SPRINT_ID> PROJ-125

Phase 4: Daily Standup

Quick daily synchronization.

Standup Report Generation

My yesterday/today/blockers:

# What I completed yesterday
jira issue list --assignee @me --status Done --jql "updated >= -1d" --plain

# What I'm working on today
jira issue list --assignee @me --status "In Progress" --plain

# My blockers
jira issue list --assignee @me --status Blocked --plain

Team Status

Overall sprint progress:

jira sprint view <SPRINT_ID> --plain

Team workload:

jira issue list --status "In Progress" --plain

Blockers across team:

jira issue list --status Blocked --plain

Standup Best Practices

  1. Keep it brief - 15 minutes max
  2. Focus on progress - What's done, what's next
  3. Identify blockers - Not problem-solving session
  4. Update Jira before standup - Issues reflect current state
  5. Follow up separately - Deep discussions after standup

Phase 5: Sprint Review

Demonstrate completed work.

Pre-Review Preparation

Completed items for demo:

jira issue list --status Done --jql "sprint = <SPRINT_ID>" --plain

Verify all done items meet Definition of Done:

jira issue view PROJ-123 --plain

Check:

  • Acceptance criteria met
  • Tested and working
  • Deployed (if applicable)
  • Documented

Review Metrics

Sprint completion rate:

# Total issues in sprint
jira issue list --jql "sprint = <SPRINT_ID>" --raw

# Completed issues
jira issue list --jql "sprint = <SPRINT_ID> AND status = Done" --raw

# Calculate percentage

Story points completed:

# Sum story points of completed issues
jira issue list --jql "sprint = <SPRINT_ID> AND status = Done" --raw | grep storyPoints

Issue breakdown:

# By type
jira issue list --jql "sprint = <SPRINT_ID>" --plain | grep -c Story
jira issue list --jql "sprint = <SPRINT_ID>" --plain | grep -c Bug
jira issue list --jql "sprint = <SPRINT_ID>" --plain | grep -c Task

Incomplete Work

Items not finished:

jira issue list --jql "sprint = <SPRINT_ID> AND status != Done" --plain

Move to next sprint or backlog:

# Move to next sprint
jira sprint add <NEXT_SPRINT_ID> PROJ-125 PROJ-126

# Or move back to backlog
jira issue edit PROJ-127 --status "To Do"

Review Artifacts

Document:

  • Sprint goal achievement (met/not met)
  • Velocity (story points completed)
  • Completed items
  • Demo feedback
  • Incomplete items and reasons

Phase 6: Sprint Retrospective

Reflect and improve.

Retrospective Data Gathering

Sprint metrics:

# All sprint issues
jira issue list --jql "sprint = <SPRINT_ID>" --plain

# Completed work
jira issue list --jql "sprint = <SPRINT_ID> AND status = Done" --plain

# Issues that were blocked
jira issue list --jql "sprint = <SPRINT_ID> AND status was Blocked" --plain

Retrospective Topics

  1. What went well?

    • High velocity
    • Good collaboration
    • Smooth deployments
  2. What could be improved?

    • Too many blockers
    • Underestimated complexity
    • Scope creep
  3. Action items

    • Create issues for improvements
    jira issue create --type Task --summary "Improve estimation process" --label retrospective-action
    

Track Retrospective Actions

Create improvement tasks:

jira issue create \
  --type Task \
  --summary "Set up automated testing pipeline" \
  --label retrospective-action,process-improvement \
  --assignee teamlead@example.com

Review previous retrospective actions:

jira issue list --label retrospective-action --status "To Do,In Progress" --plain

Sprint Metrics and Reporting

Velocity Tracking

Last 3 sprints velocity:

# Sprint 1
jira issue list --jql "sprint = <SPRINT_1> AND status = Done" --raw | grep storyPoints

# Sprint 2
jira issue list --jql "sprint = <SPRINT_2> AND status = Done" --raw | grep storyPoints

# Sprint 3 (current)
jira issue list --jql "sprint = <SPRINT_3> AND status = Done" --raw | grep storyPoints

Calculate average for future planning.

Burndown Tracking

Remaining work over time:

# At sprint start: Total story points
# Daily: Remaining story points
jira issue list --jql "sprint = <SPRINT_ID> AND status != Done" --raw | grep storyPoints

Track daily to create burndown chart externally.

Quality Metrics

Bug rate:

# Bugs in sprint
jira issue list --jql "sprint = <SPRINT_ID> AND type = Bug" --raw

# Bugs found post-deployment
jira issue list --jql "type = Bug AND created >= -14d AND labels = production" --raw

Rework rate:

# Issues returned from review
jira issue list --jql "status was 'In Review' AND status = 'In Progress'" --raw

Epic Management

Epics span multiple sprints.

Creating Epic

jira epic create --name "User Authentication System" --summary "Implement complete auth system"

Planning Epic Across Sprints

View epic details:

jira epic view PROJ-100 --plain

List all epic stories:

jira issue list --jql "\"Epic Link\" = PROJ-100" --plain

Distribute across sprints:

# Sprint 1: Foundation
jira sprint add <SPRINT_1> PROJ-101 PROJ-102

# Sprint 2: Core features
jira sprint add <SPRINT_2> PROJ-103 PROJ-104

# Sprint 3: Polish
jira sprint add <SPRINT_3> PROJ-105 PROJ-106

Epic Progress Tracking

Completion status:

# Total issues in epic
jira issue list --jql "\"Epic Link\" = PROJ-100" --raw

# Completed issues
jira issue list --jql "\"Epic Link\" = PROJ-100 AND status = Done" --raw

Common Sprint Patterns

Pattern 1: Standard Two-Week Sprint

# Week 1 Monday: Sprint Planning
jira sprint list --state future --plain  # Get next sprint ID
jira issue list --status "To Do" --priority High --plain  # Review backlog
jira sprint add <SPRINT_ID> PROJ-123 PROJ-124 PROJ-125  # Add to sprint
jira issue assign PROJ-123 @me  # Assign work

# Daily: Standups and updates
jira issue list --assignee @me --status "In Progress" --plain

# Week 2 Friday: Sprint Review & Retrospective
jira sprint view <SPRINT_ID> --plain  # Review progress
jira issue list --jql "sprint = <SPRINT_ID> AND status != Done" --plain  # Incomplete items

# Move incomplete items
jira sprint add <NEXT_SPRINT_ID> PROJ-126

Pattern 2: Continuous Flow (Kanban)

# Regular backlog grooming
jira issue list --status "To Do" --plain

# Pull work as capacity allows
jira issue assign PROJ-123 @me
jira issue move PROJ-123 "In Progress"

# Track WIP limits
jira issue list --status "In Progress" --plain

Pattern 3: Rapid Iteration (One-Week Sprints)

# Monday: Quick planning
jira sprint add <SPRINT_ID> PROJ-123 PROJ-124 PROJ-125

# Tuesday-Thursday: Execute
jira issue move PROJ-123 "In Progress"
# ... work ...
jira issue move PROJ-123 "Done"

# Friday: Review and retro (combined)
jira sprint view <SPRINT_ID> --plain

Automation and Scripts

Sprint Start Script

#!/bin/bash
# sprint-start.sh

SPRINT_ID=$1

echo "Starting Sprint $SPRINT_ID"

# List sprint contents
echo "Sprint Backlog:"
jira sprint view "$SPRINT_ID" --plain

# Check for blockers
echo -e "\nChecking for blockers:"
jira issue list --status Blocked --plain

# Team assignments
echo -e "\nTeam Workload:"
jira issue list --jql "sprint = $SPRINT_ID" --plain

Daily Status Script

#!/bin/bash
# daily-status.sh

echo "===== My Work ====="
echo "In Progress:"
jira issue list --assignee @me --status "In Progress" --plain

echo -e "\nTo Do:"
jira issue list --assignee @me --status "To Do" --plain

echo -e "\nBlocked:"
jira issue list --assignee @me --status Blocked --plain

echo -e "\n===== Sprint Progress ====="
jira sprint view <SPRINT_ID> --plain

Sprint End Script

#!/bin/bash
# sprint-end.sh

SPRINT_ID=$1
NEXT_SPRINT_ID=$2

echo "Completing Sprint $SPRINT_ID"

# Completed items
echo "Completed Issues:"
jira issue list --jql "sprint = $SPRINT_ID AND status = Done" --plain

# Incomplete items
echo -e "\nIncomplete Issues:"
INCOMPLETE=$(jira issue list --jql "sprint = $SPRINT_ID AND status != Done" --raw)
echo "$INCOMPLETE"

# Move incomplete to next sprint
echo -e "\nMoving incomplete items to Sprint $NEXT_SPRINT_ID"
# Extract issue keys and move (requires jq)
echo "$INCOMPLETE" | jq -r '.issues[].key' | while read issue; do
  jira sprint add "$NEXT_SPRINT_ID" "$issue"
done

Best Practices

Sprint Planning

  1. Don't overcommit - Use 80% of capacity
  2. Balance work types - Mix of features, bugs, tech debt
  3. Consider dependencies - Don't block yourself
  4. Include buffer - Time for unexpected issues
  5. Get team buy-in - Everyone agrees on commitment

Sprint Execution

  1. Update Jira daily - Keep status current
  2. Communicate blockers - Immediately when stuck
  3. Focus on sprint goal - Avoid scope creep
  4. Swarm on blockers - Help unblock teammates
  5. Demo early and often - Get feedback during sprint

Sprint Ceremonies

  1. Time-box meetings - Respect team's time
  2. Come prepared - Review work before meetings
  3. Stay focused - Avoid rabbit holes
  4. Document decisions - Record in Jira or wiki
  5. Action all items - Every decision becomes a task

Definition of Done

Story Level

  • Code complete and reviewed
  • Unit tests written and passing
  • Integration tests passing
  • Documentation updated
  • Deployed to staging
  • QA approved
  • Acceptance criteria met

Sprint Level

  • Sprint goal achieved
  • All committed stories done
  • Demo completed
  • Stakeholder feedback gathered
  • Retrospective conducted
  • Velocity recorded
  • Next sprint planned

Troubleshooting

Sprint not showing:

  • Check board configuration
  • Verify sprint is created for correct board
  • Ensure you have permissions

Can't add issues to sprint:

  • Check if issue is in correct project
  • Verify issue isn't in another sprint
  • Ensure sprint isn't closed

Sprint metrics incorrect:

  • Verify story points field is configured
  • Check custom field names
  • May need admin to configure

Team velocity varies wildly:

  • Review estimation process
  • Check for consistent team composition
  • Consider external factors (holidays, etc.)

Next Steps

  • Use jira-query-builder agent for advanced sprint queries
  • Set up automation scripts for common tasks
  • Create dashboards for sprint metrics
  • Integrate with CI/CD for automated updates
  • Establish team norms and Definition of Done