aidentity / index

abrahamFerga/scrum-skills · MIT

dev-pr-description

Generates a pull request description by reading the git diff and the linked user story, mapping each changed file to an acceptance criterion so reviewers know why each change exists. Use when a developer says things like "write my PR description", "generate a PR", "help me describe this pull request", "create the PR body", "what should I put in my PR", or is about to open a pull request. Do not use for code review, story writing, or general git help unrelated to a pull request.

stable

Contents

PR Description Generator

Purpose

A good PR description answers three questions every reviewer has before they read a single line of code: What changed? Why does it exist? How do I verify it? This skill reads the diff and the story together to answer all three — so the reviewer spends their time reviewing, not detective-work.


Tool detection

  1. Check for active mcp__azure-devops__* tools → $PM_TOOL = ado
  2. Check for active mcp__jira__* tools → $PM_TOOL = jira
  3. If neither → $PM_TOOL = manual

Step 1 — Read the git context

Run the following to understand what changed:

# Changed files and a summary of what moved
git diff --stat HEAD~1..HEAD 2>/dev/null || git diff --stat origin/main..HEAD

# Commit messages on this branch
git log --oneline origin/main..HEAD 2>/dev/null || git log --oneline -10

# Full diff (for understanding the nature of changes)
git diff origin/main..HEAD 2>/dev/null || git diff HEAD~1..HEAD

If git is not available or the branch has no commits yet, ask the developer to describe the changes.


Step 2 — Identify the linked story

Look for the work item ID in this order:

  1. Branch name — extract a pattern like feature/#1234-, feat/PROJ-456-, dev/1234/, etc.
  2. Commit messages — look for #1234, PROJ-456, Refs:, Closes:, or Fixes: references
  3. Ask — "Which story does this PR implement? Provide the ID or paste the content."

Then fetch the story:

  • ADO: use wit_get_work_item — read title, description, and acceptance criteria
  • Jira: use the get-issue tool — read summary, description, and acceptance criteria
  • Manual: accept pasted content

Store as $STORY.


Step 3 — Map changes to acceptance criteria

Before writing the description, build an internal map:

For each acceptance criterion in $STORY:

  • Which files in the diff satisfy it?
  • Is it fully satisfied, partially satisfied, or not covered?

Flag any AC that is not covered by the diff — this is either a missing implementation or the AC belongs to a different PR. Surface it: "AC [N] — '[text]' — does not appear to be covered by these changes. Is that intentional?"


Step 4 — Generate the PR description

Use this structure:

## What this does
[One sentence in user-facing language — what the user can now do that they could not before.
Not a technical summary. Not "refactored the service layer."]

## Work item
Closes #[ID]
[or: Refs: PROJ-456]

## Acceptance criteria covered
- [x] [AC text — copy verbatim from the story]
- [x] [AC text]
- [ ] [AC text — if intentionally deferred, explain why in a Note below]

## Changed files
| File | What changed and why |
|---|---|
| `path/to/file.ext` | [One line — what this file does differently and which AC it serves] |
| `path/to/test-file.ext` | [Tests for AC N and AC M] |

## How to test
1. [Step a reviewer can execute — environment, test data, or command]
2. [Expected result]
3. [Edge case or error state to verify]

## Notes
[Breaking changes, migrations needed, dependent PRs, feature flags, known gaps, or anything
the reviewer needs before they start. Leave blank if none.]


Step 5 — Review and finalise

Present the draft and ask: "Does this capture the PR accurately? Anything to add or adjust before I finalise it?"

Apply corrections. Once confirmed, output the final description in a clean code block ready to paste into GitHub, ADO, or Jira.


Guardrails

  • Never describe changes in technical terms only — always include the user-facing outcome in the "What this does" section.
  • Never mark an AC as covered if the diff does not contain changes that satisfy it.
  • Never include secrets, tokens, connection strings, or personal data in the description — scan the diff for these before generating.
  • If the diff is very large (more than 20 files), suggest splitting the PR: "This PR touches [N] files across [M] concerns. Consider splitting into smaller PRs — one per AC or one per layer — so reviewers can focus."
  • Keep "How to test" steps executable by someone who did not write the code.

Provenance

Authored by abrahamFerga in abrahamFerga/scrum-skills. The content is mirrored here under its upstream license.

Related

audit-backlog-ado Audits the Azure DevOps product backlog for hygiene, story quality, and refinement readiness — identifying items that are too large, missing acceptance criteria, stale, unestimated, or out of priority order. Use when a Scrum Master or Product Owner says things like "audit the backlog", "is the backlog healthy", "review the backlog before refinement", "clean up the backlog", "check backlog hygiene", or "prepare the backlog for planning". Do not use for individual story audits — use audit-user-story for that. Do not use for sprint planning or velocity review. abrahamFerga/scrum-skills MIT audit-sprint-ado Audits a completed or in-progress Azure DevOps sprint against Scrum and ADO best practices — checks Sprint Goal presence, work item hygiene, state transitions, field completeness, capacity tracking, and Definition of Done compliance. Surfaces findings with severity levels and offers to post a summary to the ADO wiki or add comments to specific work items. Use when anyone says things like "audit our sprint in ADO", "review the sprint in Azure DevOps", "check our ADO sprint health", "are our work items following best practices", or "sprint health check". Don't use for Jira, Sprint Planning, Daily Scrum, or Retrospective. Requires an Azure DevOps MCP connection. abrahamFerga/scrum-skills MIT audit-sprint-jira Audits a completed or in-progress Jira sprint against Scrum and Jira best practices — checks Sprint Goal presence, issue hygiene, workflow transitions, field completeness, story point coverage, and sub-task consistency. Surfaces findings with severity levels and offers to add comments to specific issues or export a summary report. Use when anyone says things like "audit our sprint in Jira", "review the Jira sprint", "check our Jira sprint health", "are our issues following best practices", or "sprint health check in Jira". Don't use for Azure DevOps — use audit-sprint-ado instead. Don't use for Sprint Planning, Daily Scrum, or Retrospective. Requires a Jira MCP connection. abrahamFerga/scrum-skills MIT audit-sprint-retrospective-ado Reads an Azure DevOps retrospective — from the ADO Retrospectives extension board, a wiki page, or retro-tagged work items — and produces a structured summary of what the team said, identifies patterns and recurring themes, audits whether action items are properly tracked as work items with owners, and generates concrete suggestions. Use when anyone says things like "summarize our retro", "audit the retrospective in ADO", "what were the action items from the retro", "review the team's retrospective board", "check our retro follow-up", or "did we capture everything from the retro". Don't use for facilitating a retrospective in real time, Jira projects, or general Scrum questions. abrahamFerga/scrum-skills MIT audit-user-story Audits an existing user story against Scrum best practices — checks INVEST criteria, story format, acceptance criteria quality, and Definition of Ready compliance. Raises findings with clear severity levels and offers to post the audit as a comment on the work item for the Product Owner or PM to act on. Use when anyone says things like "audit this story", "review this user story", "is this story ready", "check this PBI", "does this story meet best practices", or pastes a story and asks for feedback. Don't use for creating new stories, sprint planning, or general Scrum questions. Works with ADO, Jira, or a pasted story. abrahamFerga/scrum-skills MIT