5.8 KiB
Skill Test Spec: /sprint-status
Skill Summary
/sprint-status is a Haiku-tier read-only skill that reads the current active
sprint file and the session state to produce a concise sprint health summary.
It reports story counts by status (Complete / In Progress / Blocked / Not Started)
and emits one of three sprint-health verdicts: ON TRACK, AT RISK, or BLOCKED.
It never writes files and does not invoke any director gates. It is designed for
fast, low-cost status checks during a session.
Static Assertions (Structural)
Verified automatically by /skill-test static — no fixture needed.
- Has required frontmatter fields:
name,description,argument-hint,user-invocable,allowed-tools - Has ≥2 phase headings or numbered check sections
- Contains verdict keywords: ON TRACK, AT RISK, BLOCKED
- Does NOT require "May I write" language (read-only skill)
- Has a next-step handoff (what to do based on the verdict)
Director Gate Checks
None. /sprint-status is a read-only reporting skill; no gates are invoked.
Test Cases
Case 1: Happy Path — Mixed sprint, AT RISK with named blocker
Fixture:
production/sprints/sprint-004.mdexists (active sprint, linked inactive.md)- Sprint contains 6 stories:
- 3 with
Status: Complete - 2 with
Status: In Progress - 1 with
Status: Blocked(blocker: "Waiting on physics ADR acceptance")
- 3 with
- Sprint end date is 2 days away
Input: /sprint-status
Expected behavior:
- Skill reads
production/session-state/active.mdto find active sprint reference - Skill reads
production/sprints/sprint-004.md - Skill counts stories by status: 3 Complete, 2 In Progress, 1 Blocked
- Skill detects a Blocked story and the approaching deadline
- Skill outputs AT RISK verdict with the blocker named explicitly
Assertions:
- Output includes story count breakdown by status
- Output names the specific blocked story and its blocker reason
- Verdict is AT RISK (not BLOCKED, not ON TRACK) when any story is Blocked
- Skill does not write any files
Case 2: All Stories Complete — Sprint COMPLETE verdict
Fixture:
production/sprints/sprint-004.mdexists- All 5 stories have
Status: Complete
Input: /sprint-status
Expected behavior:
- Skill reads sprint file — all stories are Complete
- Skill outputs ON TRACK verdict or SPRINT COMPLETE label
- Skill suggests running
/milestone-reviewor/sprint-planas next steps
Assertions:
- Verdict is ON TRACK or SPRINT COMPLETE when all stories are Complete
- Output notes that the sprint is fully done
- Next-step suggestion references
/milestone-reviewor/sprint-plan - No files are written
Case 3: No Active Sprint File — Guidance to run /sprint-plan
Fixture:
production/session-state/active.mddoes not reference an active sprintproduction/sprints/directory is empty or absent
Input: /sprint-status
Expected behavior:
- Skill reads
active.md— finds no active sprint reference - Skill checks
production/sprints/— finds no files - Skill outputs an informational message: no active sprint detected
- Skill suggests running
/sprint-planto create one
Assertions:
- Skill does not error or crash when no sprint file exists
- Output clearly states no active sprint was found
- Output recommends
/sprint-planas the next action - No verdict keyword is emitted (no sprint to assess)
Case 4: Edge Case — Stale In Progress Story (flagged)
Fixture:
production/sprints/sprint-004.mdexists- One story has
Status: In Progresswith a note inactive.md:Last updated: 2026-03-30(more than 2 days before today's session date) - No stories are Blocked
Input: /sprint-status
Expected behavior:
- Skill reads sprint file and session state
- Skill detects the story has been In Progress for >2 days without update
- Skill flags the story as "stale" in the output
- Verdict is AT RISK (stale in-progress stories indicate a hidden blocker)
Assertions:
- Skill compares story "last updated" metadata against session date
- Stale In Progress story is flagged by name in the output
- Verdict is AT RISK, not ON TRACK, when a stale story is detected
- Output does not conflate "stale" with "Blocked" — the label is distinct
Case 5: Gate Compliance — Read-only; no gate invocation
Fixture:
production/sprints/sprint-004.mdexists with 4 stories (2 Complete, 2 In Progress)production/session-state/review-mode.txtcontainsfull
Input: /sprint-status
Expected behavior:
- Skill reads sprint and produces status summary
- Skill does NOT invoke any director gate regardless of review mode
- Output is a plain status report with ON TRACK, AT RISK, or BLOCKED verdict
- Skill does not prompt for user approval or ask to write any file
Assertions:
- No director gate is invoked in any review mode
- Output does not contain any "May I write" prompt
- Skill completes and returns a verdict without user interaction
- Review mode file is ignored (or confirmed irrelevant) by this skill
Protocol Compliance
- Does NOT use Write or Edit tools (read-only skill)
- Presents story count breakdown before emitting verdict
- Does not ask for approval
- Ends with a recommended next step based on verdict
- Runs on Haiku model tier (fast, low-cost)
Coverage Notes
- The case where multiple sprints are active simultaneously is not tested;
the skill reads whichever sprint
active.mdreferences. - Partial sprint completion percentages are not explicitly verified; the count-by-status output implies them.
- The
solomode review-mode variant is not separately tested; gate behavior in Case 5 applies to all modes equally.