Files
pixelheros/CCGS Skill Testing Framework/skills/sprint/sprint-status.md
2026-05-15 14:52:29 +08:00

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.md exists (active sprint, linked in active.md)
  • Sprint contains 6 stories:
    • 3 with Status: Complete
    • 2 with Status: In Progress
    • 1 with Status: Blocked (blocker: "Waiting on physics ADR acceptance")
  • Sprint end date is 2 days away

Input: /sprint-status

Expected behavior:

  1. Skill reads production/session-state/active.md to find active sprint reference
  2. Skill reads production/sprints/sprint-004.md
  3. Skill counts stories by status: 3 Complete, 2 In Progress, 1 Blocked
  4. Skill detects a Blocked story and the approaching deadline
  5. 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.md exists
  • All 5 stories have Status: Complete

Input: /sprint-status

Expected behavior:

  1. Skill reads sprint file — all stories are Complete
  2. Skill outputs ON TRACK verdict or SPRINT COMPLETE label
  3. Skill suggests running /milestone-review or /sprint-plan as 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-review or /sprint-plan
  • No files are written

Case 3: No Active Sprint File — Guidance to run /sprint-plan

Fixture:

  • production/session-state/active.md does not reference an active sprint
  • production/sprints/ directory is empty or absent

Input: /sprint-status

Expected behavior:

  1. Skill reads active.md — finds no active sprint reference
  2. Skill checks production/sprints/ — finds no files
  3. Skill outputs an informational message: no active sprint detected
  4. Skill suggests running /sprint-plan to 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-plan as 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.md exists
  • One story has Status: In Progress with a note in active.md: Last updated: 2026-03-30 (more than 2 days before today's session date)
  • No stories are Blocked

Input: /sprint-status

Expected behavior:

  1. Skill reads sprint file and session state
  2. Skill detects the story has been In Progress for >2 days without update
  3. Skill flags the story as "stale" in the output
  4. 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.md exists with 4 stories (2 Complete, 2 In Progress)
  • production/session-state/review-mode.txt contains full

Input: /sprint-status

Expected behavior:

  1. Skill reads sprint and produces status summary
  2. Skill does NOT invoke any director gate regardless of review mode
  3. Output is a plain status report with ON TRACK, AT RISK, or BLOCKED verdict
  4. 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.md references.
  • Partial sprint completion percentages are not explicitly verified; the count-by-status output implies them.
  • The solo mode review-mode variant is not separately tested; gate behavior in Case 5 applies to all modes equally.