Sprint Review
The sprint review happens at the end of each sprint. The Scrum Master triggers it from GitHub Actions, and Scraut generates a comprehensive review document from the sprint's closed issues, velocity data, and standup summaries.
Triggering the sprint review
- Go to Actions → Scraut — Sprint Review
- Click Run workflow
- Fill in:
- Sprint number:
1 - org/repo:
myorg/my-repo
- Sprint number:
- Click Run workflow
What happens
SM triggers sprint-review
│
├ ─ generate_review.py
│ Fetches all issues closed this sprint (labeled in-sprint)
│ Calculates: completed sp, planned sp, completion rate
│ Reads all standup summaries from .scraut/sprint/001/standup/summary/
│ Reads milestone health from .scraut/milestones/
│ Calls LLM: "Generate a sprint review document from this data"
│
├─ Writes .scraut/sprint/001/review/review.md [BOT-GENERATED]
│
├─ Updates workspace/scraut.yml current_sprint: 2 (increments sprint counter)
│
├─ Posts summary to #scraut-bot in Slack
│
└─ Triggers: suggestion-detect.yml (pattern detection across sprint history)
The review document
The generated review in .scraut/sprint/001/review/review.md:
<!-- BOT-GENERATED — Sprint 01 Review — 2026-06-08 -->
# Sprint 01 Review
## Summary
- **Period:** 2026-05-26 → 2026-06-07 (10 working days)
- **Goal:** Deliver user authentication and basic dashboard
- **Goal met:** Yes ✓
- **Completed:** 30 of 34 story points (88%)
- **Issues closed:** 7 of 8
## Completed work
| Issue | Title | SP | Assignee | PR |
|-------|-------|----|---------|-----|
| #21 | OAuth integration | 5 | alice | #45 |
| #25 | API rate limiting | 3 | bob | #46 |
| #28 | Dashboard skeleton | 8 | charlie | #47 |
| #31 | Profile page | 5 | alice | #49 |
| #33 | Fix login redirect bug | 2 | bob | #50 |
| #35 | Write auth test suite | 3 | charlie | #51 |
| #42 | Fix typo in onboarding | 1 | alice | #52 |
## Deferred (not completed)
| Issue | Title | SP | Reason |
|-------|-------|----|--------|
| #38 | Performance optimisation | 3 | Blocked by infra team — carry to Sprint 2 |
## Velocity
- Sprint 01: 30 sp ← new
- Sprint 00: — (no history)
- Rolling average: 30 sp
## Highlights
- OAuth integration completed ahead of schedule — Alice paired with Bob to unblock #21
- Dashboard is functional but needs UX polish (noted for Sprint 2 grooming)
## Issues for next sprint
Deferred issues are automatically carried over to Sprint 2 backlog.
Closing the sprint and deferred issues
Issues that were not completed are automatically deferred:
in-sprintlabel is removeddeferredlabel is added- Issue is moved to the backlog for the next sprint planning
Scenario: Sprint 1 review with one deferred story
Characters: Charlie (SM), Alice, Bob
End of sprint day:
- Charlie triggers sprint-review for Sprint 1
- Scraut fetches 7 closed issues (30 sp) and 1 open issue (#38, 3 sp, blocked by infra)
- LLM generates the review document highlighting the infra blocker
- Review is committed to
.scraut/sprint/001/review/review.md - Slack post arrives in
#scraut-bot:Sprint 01 complete! 30/34 sp (88%) — Goal MET ✓. 1 issue deferred (#38 — infra blocker). Sprint 02 planning ready.
- suggestion-detect workflow fires automatically — reads 1 sprint of history
- Not enough data for suggestions yet (needs 3 sprints minimum by default)
- Sprint counter in
workspace/scraut.ymlis incremented tocurrent_sprint: 2 - Next morning, team gets morning DMs for Sprint 2
Total ceremony time: 0 minutes synchronous. The review document is ready in ~3 minutes.