GitScrum / Docs
All Best Practices

GitHub Sprint Planning | Git + Agile Workflow

Plan sprints with GitHub integration. GitScrum provides velocity tracking, burndown charts, and sprint boundaries while linking commits and PRs to tasks.

8 min read

GitHub is where code lives, but sprint planning needs more structure than GitHub Projects provides. Connecting a dedicated sprint planning tool to GitHub gives teams the best of both worldsβ€”agile planning with automatic development tracking when code is pushed.

GitHub + Sprint Planning Overview

GitHub ProvidesSprint Tool ProvidesIntegration Benefit
Code repositorySprint planningUnified workflow
PRs and reviewsVelocity trackingProgress visibility
IssuesStory pointsEstimation
Actions/CIBurndown chartsSprint health
BranchesCapacity planningResource management

Why GitHub Alone Isn't Enough

GITHUB PROJECTS LIMITATIONS
═══════════════════════════

WHAT GITHUB PROJECTS HAS:
─────────────────────────────────────
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  βœ… Kanban boards                                           β”‚
β”‚  βœ… Issue tracking                                          β”‚
β”‚  βœ… Basic automation                                        β”‚
β”‚  βœ… Tight code integration                                  β”‚
β”‚  βœ… Free for public repos                                   β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

WHAT GITHUB PROJECTS LACKS:
─────────────────────────────────────
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  ❌ Sprint velocity tracking                                β”‚
β”‚  ❌ Burndown/burnup charts                                  β”‚
β”‚  ❌ Story point estimation (native)                         β”‚
β”‚  ❌ Sprint boundaries and goals                             β”‚
β”‚  ❌ Capacity planning                                       β”‚
β”‚  ❌ Cross-repo visibility                                   β”‚
β”‚  ❌ Time tracking                                           β”‚
β”‚  ❌ Client-facing dashboards                                β”‚
β”‚  ❌ Advanced reporting                                      β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

THE HYBRID APPROACH:
─────────────────────────────────────
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  GitScrum (Sprint Planning)    GitHub (Development)         β”‚
β”‚  ─────────────────────────     ────────────────────         β”‚
β”‚  β€’ Backlog grooming            β€’ Code repository            β”‚
β”‚  β€’ Sprint planning             β€’ Pull requests              β”‚
β”‚  β€’ Velocity tracking           β€’ Code reviews               β”‚
β”‚  β€’ Story points                β€’ CI/CD pipelines            β”‚
β”‚  β€’ Burndown charts             β€’ Branch management          β”‚
β”‚  β€’ Time tracking               β€’ Issue discussions          β”‚
β”‚                                                             β”‚
β”‚           β”‚                           β”‚                     β”‚
β”‚           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                     β”‚
β”‚                       β”‚                                     β”‚
β”‚                       β–Ό                                     β”‚
β”‚              AUTOMATIC LINKING                              β”‚
β”‚              ─────────────────                              β”‚
β”‚              Commits β†’ Tasks                                β”‚
β”‚              PRs β†’ Tasks                                    β”‚
β”‚              Status updates                                 β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Setting Up GitHub Integration

GITSCRUM + GITHUB SETUP
═══════════════════════

STEP 1: CONNECT GITHUB
─────────────────────────────────────
Project Settings β†’ Integrations β†’ GitHub

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ GitHub Integration                                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚ Status: βœ… Connected                                        β”‚
β”‚ Account: your-organization                                  β”‚
β”‚                                                             β”‚
β”‚ Repositories:                                               β”‚
β”‚ β˜‘ frontend-app                                             β”‚
β”‚ β˜‘ backend-api                                              β”‚
β”‚ β˜‘ mobile-app                                               β”‚
β”‚ ☐ infrastructure (not linked)                              β”‚
β”‚                                                             β”‚
β”‚ [Add Repository] [Refresh]                                  β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

STEP 2: CONFIGURE COMMIT PARSING
─────────────────────────────────────
Settings β†’ Git Integration β†’ Commit Parsing

Patterns recognized:
β”œβ”€β”€ [TASK-123] or [#123] in commit message
β”œβ”€β”€ Closes #123 or Fixes #123
β”œβ”€β”€ Branch name: feature/TASK-123-description
└── PR title: [TASK-123] Feature description

STEP 3: SET UP AUTOMATIONS
─────────────────────────────────────
Settings β†’ Automations

Rules:
β”œβ”€β”€ PR opened β†’ Move task to "In Review"
β”œβ”€β”€ PR merged β†’ Move task to "Done"
β”œβ”€β”€ CI failed β†’ Add "needs-fix" label
└── Branch created β†’ Move task to "In Progress"

Sprint Planning Workflow

GITHUB-INTEGRATED SPRINT PLANNING
═════════════════════════════════

BEFORE SPRINT:
─────────────────────────────────────
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  BACKLOG GROOMING (in GitScrum)                             β”‚
β”‚  ─────────────────────────────                             β”‚
β”‚  1. Review backlog items                                    β”‚
β”‚  2. Estimate with story points                              β”‚
β”‚  3. Add acceptance criteria                                 β”‚
β”‚  4. Prioritize by value                                     β”‚
β”‚                                                             β”‚
β”‚  SPRINT PLANNING (in GitScrum)                              β”‚
β”‚  ─────────────────────────────                             β”‚
β”‚  1. Check team capacity (40 pts available)                  β”‚
β”‚  2. Pull items into sprint                                  β”‚
β”‚  3. Set sprint goal                                         β”‚
β”‚  4. Assign initial owners                                   β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

DURING SPRINT:
─────────────────────────────────────
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  Developer Workflow:                                        β”‚
β”‚  ─────────────────────                                     β”‚
β”‚                                                             β”‚
β”‚  1. Pick task from GitScrum board                          β”‚
β”‚     └── Task: [TASK-456] Add user authentication           β”‚
β”‚                                                             β”‚
β”‚  2. Create branch in GitHub                                 β”‚
β”‚     └── git checkout -b feature/TASK-456-auth              β”‚
β”‚                                                             β”‚
β”‚  3. Commit with task reference                              β”‚
β”‚     └── git commit -m "[TASK-456] Add login endpoint"      β”‚
β”‚                                                             β”‚
β”‚  4. Push and create PR                                      β”‚
β”‚     └── PR title: [TASK-456] User authentication           β”‚
β”‚                                                             β”‚
β”‚  5. GitScrum automatically:                                 β”‚
β”‚     β”œβ”€β”€ Links commits to task                              β”‚
β”‚     β”œβ”€β”€ Shows PR status on task                            β”‚
β”‚     β”œβ”€β”€ Moves task to "In Review"                          β”‚
β”‚     └── Updates burndown chart                             β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

TASK VIEW WITH GIT INFO:
─────────────────────────────────────
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ [TASK-456] Add user authentication                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚ Status: In Review                                           β”‚
β”‚ Assignee: Alice                                             β”‚
β”‚ Points: 5                                                   β”‚
β”‚                                                             β”‚
β”‚ GIT ACTIVITY:                                               β”‚
β”‚ ─────────────                                              β”‚
β”‚ Branch: feature/TASK-456-auth                               β”‚
β”‚                                                             β”‚
β”‚ Commits:                                                    β”‚
β”‚ β”œβ”€β”€ a1b2c3d [TASK-456] Add login endpoint                  β”‚
β”‚ β”œβ”€β”€ e4f5g6h [TASK-456] Add JWT token generation            β”‚
β”‚ └── i7j8k9l [TASK-456] Add password hashing                β”‚
β”‚                                                             β”‚
β”‚ Pull Request:                                               β”‚
β”‚ └── #234 User authentication ──── ⏳ Review pending        β”‚
β”‚     └── 2 approvals needed, 1 received                     β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Commit Message Best Practices

COMMIT MESSAGE FORMAT
═════════════════════

STANDARD FORMAT:
─────────────────────────────────────
[TASK-ID] Short description (50 chars max)

Longer explanation if needed. Wrap at 72 characters.
Explain what and why, not how.

- Bullet points are okay
- Keep it concise

EXAMPLES:
─────────────────────────────────────
Good:
β”œβ”€β”€ [TASK-456] Add JWT authentication to API endpoints
β”œβ”€β”€ [TASK-789] Fix null pointer in user service
β”œβ”€β”€ [TASK-123] Refactor payment module for testability
└── Closes #234: Update dependencies for security patch

Bad:
β”œβ”€β”€ Fixed stuff
β”œβ”€β”€ WIP
β”œβ”€β”€ Updates
└── asdfasdf

BRANCH NAMING:
─────────────────────────────────────
Pattern: type/TASK-ID-short-description

Examples:
β”œβ”€β”€ feature/TASK-456-user-auth
β”œβ”€β”€ bugfix/TASK-789-null-pointer
β”œβ”€β”€ hotfix/TASK-999-security-patch
└── refactor/TASK-123-payment-module

Sprint Board with Git Status

INTEGRATED SPRINT BOARD
═══════════════════════

Sprint 14 Board View:
─────────────────────────────────────
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚  TO DO          IN PROGRESS      IN REVIEW       DONE       β”‚
β”‚  ──────         ───────────      ─────────       ────       β”‚
β”‚                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚TASK-458 β”‚   β”‚TASK-456 β”‚     β”‚TASK-455 β”‚    β”‚TASK-451 β”‚  β”‚
β”‚  β”‚Search   β”‚   β”‚Auth     β”‚     β”‚Profile  β”‚    β”‚Login UI β”‚  β”‚
β”‚  β”‚feature  β”‚   β”‚         β”‚     β”‚page     β”‚    β”‚         β”‚  β”‚
β”‚  β”‚         β”‚   β”‚πŸ”€ 3 commitsβ”‚   β”‚         β”‚    β”‚βœ… Mergedβ”‚  β”‚
β”‚  β”‚3 pts    β”‚   │⏳ PR open β”‚   β”‚πŸ”€ PR #234β”‚    β”‚5 pts    β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚5 pts    β”‚     β”‚βœ… 2/2 revβ”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚5 pts    β”‚                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚TASK-460 β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                    β”‚TASK-452 β”‚  β”‚
β”‚  β”‚Payment  β”‚   β”‚TASK-457 β”‚                    β”‚API docs β”‚  β”‚
β”‚  β”‚gateway  β”‚   β”‚Database β”‚                    β”‚         β”‚  β”‚
β”‚  β”‚         β”‚   β”‚migrationβ”‚                    β”‚βœ… Mergedβ”‚  β”‚
β”‚  β”‚8 pts    β”‚   β”‚         β”‚                    β”‚2 pts    β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚πŸ”€ 1 commitβ”‚                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                β”‚βš οΈ CI fail β”‚                                β”‚
β”‚                β”‚3 pts    β”‚                                  β”‚
β”‚                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                  β”‚
β”‚                                                             β”‚
β”‚  Legend: πŸ”€ Git activity  ⏳ PR pending  βœ… Merged  ⚠️ Issue β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Velocity with GitHub Data

ENHANCED VELOCITY TRACKING
══════════════════════════

SPRINT METRICS (with GitHub data):
─────────────────────────────────────
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Sprint 14 - Day 7 of 10                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚ DELIVERY METRICS                                            β”‚
β”‚ ────────────────                                           β”‚
β”‚ Points Committed:    42                                     β”‚
β”‚ Points Completed:    28                                     β”‚
β”‚ Points In Progress:  10                                     β”‚
β”‚ Burndown Status:     On Track βœ…                           β”‚
β”‚                                                             β”‚
β”‚ DEVELOPMENT METRICS (from GitHub)                           β”‚
β”‚ ─────────────────────────────────                          β”‚
β”‚ Commits This Sprint: 89                                     β”‚
β”‚ PRs Merged:          12                                     β”‚
β”‚ PRs Open:            3                                      β”‚
β”‚ Avg PR Review Time:  4.2 hours                             β”‚
β”‚ CI Success Rate:     94%                                    β”‚
β”‚                                                             β”‚
β”‚ CORRELATION                                                 β”‚
β”‚ ───────────                                                β”‚
β”‚ Commits per Point:   3.2 (team average: 2.8)               β”‚
β”‚ β†’ Slightly more commits than usual                         β”‚
β”‚ β†’ May indicate complex tasks or refactoring                β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Best practices

  • Always reference tasks - Include task ID in commits and PRs
  • Use consistent naming - Branch and commit patterns
  • Automate status updates - PR events move tasks automatically
  • Review Git data in retros - Commits per point, PR review time
  • Keep tasks atomic - One feature = one task = one PR
  • Link PRs to tasks - Even for work not in commits
  • Use sprint boundaries - Don't merge to main mid-sprint randomly
  • Track CI status - Failed builds should alert task owners
  • Related solutions