aidentity / index

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.

stable

Contents

User Story Audit

Purpose

A story that is unclear, too large, or untestable wastes the whole team's time — in refinement, in planning, and in delivery. This skill runs a structured audit so issues are caught before the story enters a Sprint, not during one.


Tool detection

  1. Check for active mcp__azure-devops__* tools → set $PM_TOOL to ado
  2. Otherwise check for active mcp__jira__* tools → set $PM_TOOL to jira
  3. If both → ask: "I see both ADO and Jira connected — which should I use?"
  4. If neither → set $PM_TOOL to manual

Step 1 — Fetch the story

  • ADO / Jira: Ask: "What's the work item ID or issue key you'd like me to audit?" Then retrieve the full item including title, description, acceptance criteria, state, and any linked items.
  • Manual: Ask the user to paste the story content directly.

Store the content as $STORY. If the item cannot be found, say so and ask the user to paste it instead.


Step 2 — Run the audit

Evaluate $STORY across four areas. Grade each check as:

  • ✅ Pass — meets the standard
  • ⚠️ Warning — present but weak; worth improving
  • ❌ Fail — missing or clearly broken; blocks readiness
Area 1 — Story Format
CheckPass condition
Title is action-orientedStarts with a verb + noun (e.g. "View monthly summary")
Story statement presentHas "As a / I want / So that" or equivalent
Persona is specificNot "user", "the system", or "admin"
"So that" states valueNames an outcome or benefit, not a restatement of the want
No implementation detail in the storyStory describes what, not how
Area 2 — Acceptance Criteria
CheckPass condition
ACs presentAt least 3 criteria exist
ACs are conditions, not UI stepsEach AC describes an observable outcome, not a sequence of clicks
ACs are independently verifiableEach AC can be tested without depending on another
Edge cases coveredError states, empty states, or boundary conditions addressed where relevant
No ambiguous languageAvoid "should", "might", "fast", "easy" — prefer measurable specifics
Area 3 — INVEST
CriterionWhat to look for
IndependentCan this be delivered without another unfinished story?
NegotiableIs the story a conversation starter, not a rigid spec?
ValuableDoes it deliver a real outcome to a user or the business?
EstimableEnough detail for developers to size it?
SmallCompletable within one Sprint by the team?
TestableCan the ACs be verified objectively?

Flag only the INVEST criteria that are genuinely at risk — not all six for every story.

Area 4 — Definition of Ready
CheckPass condition
Persona named and understoodTeam knows who this is for
Business value clearPO can explain why this is prioritized now
Dependencies identifiedBlockers or upstream dependencies are named
Size estimate presentStory has been sized (optional but flag absence)
No open assumptionsAny assumptions are captured and resolved

Step 3 — Present findings

Format the audit output as follows:

User Story Audit — [#ID / Issue Key] [Title]
Audited: [DATE]

Story Format
  ✅ / ⚠️ / ❌  [Check]: [brief finding]

Acceptance Criteria
  ✅ / ⚠️ / ❌  [Check]: [brief finding]

INVEST
  ✅ / ⚠️ / ❌  [Criterion]: [brief finding]

Definition of Ready
  ✅ / ⚠️ / ❌  [Check]: [brief finding]

Overall readiness: Ready / Needs work / Not ready

Top recommendations
1. [Most important fix — be specific, offer a rewrite if helpful]
2. [Second fix]
3. [Third fix]

Keep findings concise — a one-line note per check is enough unless a rewrite is warranted. Offer a specific rewrite for the persona, "So that" clause, or individual ACs when the existing text is weak.


Step 4 — Offer to comment

Ask: "Should I add these findings as a comment on the work item for the Product Owner to review?"

If yes, post a comment via the PM tool using wit_add_work_item_comment (ADO) or the equivalent Jira comment tool. Frame the comment as constructive peer feedback, not a rejection:

> Story Audit Findings — [DATE]

>

> This story was reviewed against Scrum best practices. Here are the findings:

>

> [Paste the formatted findings block]

>

> These are suggestions to help the team get the most value from this story — happy to discuss any of them in refinement.

If $PM_TOOL is manual, output the comment text in a clean block for the user to paste manually.


Guardrails

  • Never reject a story outright — frame every finding as an improvement opportunity.
  • Never suggest story points or estimates — sizing belongs to the Developers.
  • Never rewrite the full story without being asked — offer rewrites for specific weak sections only.
  • If the story is clearly an epic (covers multiple independent workflows), say so clearly: "This reads like an epic — the most valuable single story might be [X]. Want me to help split it?"
  • Keep the tone peer-to-peer. The audit is a team quality tool, not a gate kept by a single role.

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 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