aidentity / index

abrahamFerga/scrum-skills · MIT

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.

stable

Contents

Backlog Audit — Azure DevOps

Purpose

A neglected backlog is a planning liability. Items without acceptance criteria become guesswork in Sprint Planning. Items that haven't moved in months crowd out real priorities. Items sized at 40 points can't be committed to. This audit surfaces all of it before it causes a problem, so the team walks into refinement with a clear picture of what needs attention.


Tool detection

This skill requires ADO MCP tools. If mcp__azure-devops__* tools are not active, tell the user: "This skill requires an Azure DevOps MCP connection. See docs/mcp-setup.md for setup instructions."


Step 1 — Identify the backlog scope

Ask: "Which project and team backlog should I audit? And how deep — just the top 20 items, the full backlog, or a specific number?"

Use wit_list_backlogs to confirm available backlog levels (Portfolio, Requirements, Task).

Default: audit the Requirements backlog (Product Backlog Items and Bugs) — the layer the team commits from. If the team uses a different backlog level, adjust.

Use wit_list_backlog_work_items or wit_query_by_wiql to retrieve the items. Sort by backlog rank (stack rank). Read: title, state, story points, description, acceptance criteria (custom field or description), tags, and last modified date.


Step 2 — Run the health checks

For each backlog item, evaluate the following criteria. Track counts and flag specifics.

2a — Readiness (Definition of Ready)
CheckPass conditionFlag if
Has a titleClear, action-orientedTitle is "Story", "TBD", a jira key, or too vague to understand without context
Has a description or user story formatAs a / I want / So that OR a clear descriptionEmpty description
Has acceptance criteriaAt least one testable ACNo acceptance criteria at all
ACs are testableEach AC describes an observable conditionACs are vague ("it should be good") or describe UI steps rather than outcomes
Has an estimateStory points > 0Unestimated (null or 0)
2b — Size
CheckFlag if
Story fits one SprintStory points > team's typical Sprint velocity ÷ 2 (or > 13 points as a default threshold — ask if team uses a different threshold)
Story is not an epic disguised as a storyTitle or description spans multiple independent capabilities
2c — Staleness
CheckFlag if
Item is actively relevantLast modified > 90 days ago AND still in New/Active state
Item is not blocked indefinitelyTagged "Blocked" or "On Hold" with no resolution date
Item is not a duplicateTitle is near-identical to another item in the backlog
2d — Priority coherence
  • Are the top 10 items the ones the PO would actually commit to next Sprint?
  • Are there items in the top 10 that depend on items ranked below them? (dependency inversion risk)
  • Are there items in Active state that are not in the current Sprint? (orphaned actives)
2e — Sprint assignment anomalies
  • Items assigned to a past Sprint that were not completed — are they still relevant or should they be reprioritised?
  • Items assigned to a future Sprint with no estimate or AC — they will fail Sprint Planning.

Step 3 — Produce the audit report

Backlog Audit — [PROJECT] / [TEAM] — [DATE]

Items reviewed: [N]
Items flagged: [N] ([X]%)

━━━ Critical — blocks Sprint Planning ━━━━━━━━━━━━━━━━━

Missing acceptance criteria: [N items]
  - #[ID] [Title] — last modified [date]
  - ...

Unestimated items in top 20: [N items]
  - #[ID] [Title]
  - ...

━━━ Size issues ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Oversized items (> [threshold] points): [N]
  - #[ID] [Title] — [N] points — consider splitting

━━━ Staleness ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Items not touched in 90+ days: [N]
  - #[ID] [Title] — last modified [date] — still in [state]

Blocked / On Hold with no path forward: [N]
  - #[ID] [Title] — tagged [tag] since [date]

━━━ Priority concerns ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Dependency inversions detected: [N]
  - #[ID] [Title] ranked above #[ID] [Title] which it depends on

Orphaned actives (Active but not in a Sprint): [N]
  - #[ID] [Title]

━━━ Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Refinement-ready (top [N] items): [N] of [N]
Recommended refinement focus: [list top 3–5 most critical items to fix]


Step 4 — Offer actions

After presenting the report, offer:

  1. "Should I add comments to the flagged items explaining what's needed?"
  • If yes, use wit_add_work_item_comment for each flagged item with a clear, actionable note: "This item is missing acceptance criteria and cannot be committed to in Sprint Planning. Please add at least one testable AC before the next refinement session."
  1. "Should I tag the oversized items so they're easy to filter in the refinement session?"
  • If yes, use wit_update_work_item to add a tag like needs-splitting.
  1. "Should I generate a refinement agenda — ordered list of items to address in the next session?"
  • If yes, produce a prioritised list: critical items first (missing ACs, unestimated), then oversized, then stale.

Never modify state, priority, or content of items without explicit confirmation.


Guardrails

  • Never change backlog priority (stack rank) without explicit PO confirmation — rank is a PO decision.
  • Never mark items as Resolved or Closed — only flag for PO attention.
  • A large story is not automatically bad — if the team consistently delivers 40-point stories because they decompose them into tasks during Sprint Planning, note it but don't flag it as critical.
  • If the backlog has more than 100 items, focus the detailed audit on the top 40 (the realistic planning horizon). Note the total backlog size but don't flood the report with items the team won't touch for six months.
  • Stale items in the bottom half of the backlog are normal — only flag stale items that are ranked in the top 30.

Provenance

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

Related

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 daily-sync-dev Prepares a developer's Daily Scrum update by pulling assigned Sprint Backlog items from the connected project management tool, checking recent git activity, and composing a concise Sprint-Goal-focused statement. Use when a developer says things like "prepare my standup", "daily sync update", "what did I work on", "help me with standup", or "what's my daily update". Don't use for sprint planning, backlog refinement, retrospectives, or any other Scrum ceremony. Don't use when the user is asking general questions about Scrum or the Daily Scrum format. abrahamFerga/scrum-skills MIT