Fast, concise sprint snapshot — burndown and emerging risks for situational awareness. 'How is the sprint going?'
60
76%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.claude/skills/sprint-status/SKILL.md!bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys story_granularity,workflow
This is a fast situational awareness check, not a sprint review. It reads the
current sprint plan and story files, scans for status markers, and produces a
concise snapshot in under 30 lines. For detailed sprint management, use
/sprint-plan update or /milestone-review.
This skill is read-only. It never proposes changes, never asks to write files, and makes at most one concrete recommendation.
story_granularity — it sets the
grain of the burn-down read: feature-sized chunks at coarse (the default, via rigor: minimal), task-sized
at balanced (rigor: standard), AC-sized at fine.
Argument: $ARGUMENTS (blank = use current sprint)
/sprint-status 3), search
production/sprints/ for a file matching sprint-003.md, sprint-03.md, sprint-3.md,
or similar (/sprint-plan writes three digits). Report which file was found.production/sprints/ and treat it as the current sprint.production/sprints/ does not exist or is empty:
workflow: minimal there are no sprints by design — the brief's
build order is the plan and the story files carry it. Report progress
through it instead, then stop:
.claude/scripts/story-status.sh
before you read this skill: one line per unfinished story, already in
the route's order (IN_REVIEW, IN_PROGRESS, then TODO — a Ready
or Not Started story — in build order), then BLOCKED, OTHER,
NO_STATUS and the COMPLETE count:!bash "${CLAUDE_SKILL_DIR}/../../scripts/story-status.sh"
2. Print, in under 15 lines: `Build order: [N] of [M] stories complete`
from the `COMPLETE` line (count only `Complete` and `Done` stories —
`In Review` is not complete), then **Next**: the story on the first
`IN_REVIEW`, `IN_PROGRESS` or `TODO` line. The list is already
current; do not run the script again, and do not re-rank the story files — an `In Review` story is closed before an
`In Progress` one continues: its work is written. Recommend
`/story-done [path]` for `IN_REVIEW`, `/dev-story [path]` for
`IN_PROGRESS` or `TODO`. Name any `BLOCKED` story with its blocker; it is
never Next.
3. Every story `Complete` (or `Done`) → "Build order done: [M] of [M]
stories complete." Offer three ways on: play the build; add the next
stories from the brief with `/create-stories`; or `/settings` to raise
`modes.rigor` if the game has outgrown a one-page brief.
4. `STORIES none` — no story files at all → "No stories yet. Run
`/create-stories` to turn the brief's build order into stories."
5. No `IN_REVIEW`, `IN_PROGRESS` or `TODO` line, yet the `COMPLETE` line
is short of the total — every unfinished story is `BLOCKED`, `OTHER`
(such as `Draft`) or `NO_STATUS`. There is **no Next**, and the build
order is **not** done: never say it is. Print the `Build order` line,
then name each `BLOCKED` story with its blocker — read from its story
file, usually a `BLOCKED:` note — and each other story with its status
as written. Recommend one step: what the first blocker needs, or else
finishing the first `Draft` or unstatused story and setting its Status
to `Ready`.standard or full, report: "No sprint files found. Start a sprint
with /sprint-plan new." Then stop.Read the sprint file in full. Extract:
Using today's date and the sprint end date from the sprint file, calculate:
If the sprint file does not include explicit dates, note "Sprint dates not found — burndown assessment skipped."
First: check for production/sprint-status.yaml.
If it exists, read it directly — it is the authoritative source of truth.
Extract each story's status, and its priority, owner and blocker when set — they fill the status table's columns. No markdown scanning needed.
Use its sprint, goal, start, end fields instead of re-parsing the sprint plan.
If sprint-status.yaml does not exist (legacy sprint or first-time setup),
fall back to markdown scanning:
When using the fallback, add a note at the bottom of the output:
"⚠ No sprint-status.yaml found — status inferred from markdown. Run /sprint-plan update to generate one."
Optionally (fast check only — do not do a deep scan): grep the code root for a directory or file name that matches the story's system slug to check for implementation evidence. This is a hint only, not a definitive status.
After collecting status for all stories, check each IN PROGRESS story for staleness:
Grep pattern="\*{0,2}(Last Updated|Updated|last-updated|updated_at)\*{0,2}[[:space:]]*:" glob="production/epics/**/story-*.md" output_mode="content"The
\*{0,2}wrappers are why this works at all./create-storiesemits> **Last Updated**: …, so a pattern requiring:immediately after the word matched no story ever written. Combined with the "no match = never stamped" rule directly above — which is correct in itself — the failure was completely silent: every in-progress story reported as never stamped, and stale-story detection never once fired. A bareUpdated:anchor will regress it.
STALE stories are included in the output table and collected into an "Attention Needed" section (see Phase 5 output format).
Stale story escalation: If any IN PROGRESS story is flagged STALE (no progress in 4+ days), the burndown verdict is upgraded to at least At Risk — even if the completion percentage is within the normal On Track window. Record this escalation reason: "At Risk — [S] stale story(ies): [title] ([D] days)[, …]" — [S] is how many stories are STALE, and each is named with its own [D], the days since its own Last Updated date (not the oldest age, not an average).
Calculate:
Assess burndown by comparing completion percentage to time consumed percentage:
If dates are unavailable, skip the burndown assessment and report "On Track / At Risk / Behind: unknown — sprint dates not found."
Keep the output concise. The story status table is mandatory — do not truncate it. Aim for under 50 lines total; omit the Emerging Risks section if nothing notable was found. Use this format:
## Sprint [N] Status — [Today's Date]
**Sprint Goal**: [from sprint plan]
**Days Remaining**: [N] of [total] ([% time consumed])
### Progress: [complete/total] tasks ([%])
| Story / Task | Priority | Status | Owner | Blocker |
|----------------------|------------|-------------|---------|----------------|
| [title] | Must Have | DONE | [owner] | |
| [title] | Must Have | IN PROGRESS | [owner] | |
| [title] | Must Have | BLOCKED | [owner] | [brief reason] |
| [title] | Should Have| NOT STARTED | [owner] | |
### Attention Needed
| Story / Task | Status | Last Updated | Days Stale | Note |
|----------------------|-------------|----------------|------------|----------------|
| [title] | IN PROGRESS | [date or N/A] | [N days] | [STALE / no timestamp — cannot check staleness / inline task — cannot check staleness] |
*(Omit this section entirely if no IN PROGRESS stories are stale or have timestamp concerns.)*
### Burndown: [On Track / At Risk / Behind]
[1-2 sentences. If behind: which Must Haves are at risk. If on track: confirm
and note any Should Haves the team could pull.]
### Must-Haves at Risk
[List any Must Have stories that are BLOCKED or NOT STARTED with less than
40% of sprint time remaining. If none, write "None."]
### Emerging Risks
[Any risks visible from the story scan: missing files, cascading blockers,
stories with no owner. If none, write "None identified."]
### Recommendation
[One concrete action, or "Sprint is on track — no action needed."]Apply these rules before outputting, and place the flag at the TOP of the output if triggered (above the status table):
Critical flag — if Must Have stories are BLOCKED or NOT STARTED and less than 40% of the sprint time remains:
SPRINT AT RISK: [N] Must Have stories are not complete with [X]% of sprint
time remaining. Recommend replanning with `/sprint-plan update`.Completion flag — if all Must Have stories are DONE:
All Must Haves complete. Team can pull from Should Have backlog.Missing stories flag — if any referenced story files do not exist:
NOTE: [N] story files referenced in the sprint plan are missing.
Run `/story-readiness sprint` to validate story file coverage.This skill is read-only. It reports observed facts from files on disk.
/sprint-plan update)For more detail on a specific story, the user can read the story file directly
or run /story-readiness [path].
For sprint replanning, use /sprint-plan update.
For end-of-sprint retrospective, use /retrospective.
b21fa0f
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.