---
name: sprint-plan
type: workflow
description: "Generates or updates sprint plans with task breakdowns, capacity estimates, dependencies, and risk flags based on milestone goals and past velocity. Use when starting a new sprint, updating sprint progress, or checking sprint status."
argument-hint: "[new|update|status]"
user-invocable: true
allowed-tools: Read, Glob, Grep, Write, Edit
context: |
!ls production/sprints/ 2>/dev/null
effort: 3
when_to_use: "Use when starting a new sprint, updating sprint progress mid-sprint, or checking current sprint status against milestone goals."
When this skill is invoked:
Read the current milestone from production/milestones/.
Read the previous sprint (if any) from production/sprints/ to
understand velocity and carryover. Use Glob("production/sprints/*.md")
then read the file with the highest sprint number.
Scan design documents in design/ for features tagged as ready
for implementation.
Check the risk register at production/risk-register/ if it exists.
For new:
Determine sprint number — count existing files in production/sprints/
and increment by 1. Sprint N = number of existing sprint files + 1.
Generate a sprint plan following this format, then save to
production/sprints/sprint-{N}.md (confirm path with user before writing):
# Sprint [N] -- [Start Date] to [End Date]
## Sprint Goal
[One sentence describing what this sprint achieves toward the milestone]
## Capacity
- Total days: [X]
- Buffer (20%): [Y days reserved for unplanned work]
- Available: [Z days]
## Tasks
### Must Have (Critical Path)
| ID | Task | Agent/Owner | Est. Days | Dependencies | Acceptance Criteria |
|----|------|-------------|-----------|-------------|-------------------|
### Should Have
| ID | Task | Agent/Owner | Est. Days | Dependencies | Acceptance Criteria |
|----|------|-------------|-----------|-------------|-------------------|
### Nice to Have
| ID | Task | Agent/Owner | Est. Days | Dependencies | Acceptance Criteria |
|----|------|-------------|-----------|-------------|-------------------|
## Carryover from Previous Sprint
| Task | Reason | New Estimate |
|------|--------|-------------|
## Risks
| Risk | Probability | Impact | Mitigation |
|------|------------|--------|------------|
## Dependencies on External Factors
- [List any external dependencies]
## Definition of Done for this Sprint
- [ ] All Must Have tasks completed
- [ ] All tasks pass acceptance criteria
- [ ] No S1 or S2 bugs in delivered features
- [ ] Design documents updated for any deviations
- [ ] Code reviewed and merged
For update:
Identify the current sprint file — find the latest file in
production/sprints/ (highest sprint number). Read it.
Ask the user which task(s) to update: task ID, new status
(done / in-progress / blocked), and any notes or blocker details.
Edit the sprint file in place using the Edit tool:
- Move completed tasks to the "Completed" section if tracking status inline
- Add blocker info to the Blocked table
- Update
% Done estimates for in-progress tasks
Append a brief update log at the bottom of the file:
## Update Log
- [YYYY-MM-DD]: [Summary of changes made]
Confirm the edit to the user: "Sprint {N} updated — {X} task(s) changed."
For status:
- Generate a status report:
# Sprint [N] Status -- [Date]
## Progress: [X/Y tasks complete] ([Z%])
### Completed
| Task | Completed By | Notes |
|------|-------------|-------|
### In Progress
| Task | Owner | % Done | Blockers |
|------|-------|--------|----------|
### Not Started
| Task | Owner | At Risk? | Notes |
|------|-------|----------|-------|
### Blocked
| Task | Blocker | Owner of Blocker | ETA |
|------|---------|-----------------|-----|
## Burndown Assessment
[On track / Behind / Ahead]
[If behind: What is being cut or deferred]
## Emerging Risks
- [Any new risks identified this sprint]
Agent Consultation
For comprehensive sprint planning, consider consulting:
producer agent for capacity planning, risk assessment, and cross-department coordination
product-manager agent for feature prioritization and design readiness assessment
Protocol
- Question: Reads mode from argument (
new / update / status); update mode asks which tasks changed
- Options: Skip — mode drives execution path
- Decision:
update mode — user specifies task IDs, new status, and blocker details
- Draft: Plan or status report shown in conversation before writing
- Approval: "May I write to
production/sprints/sprint-[N].md?"
Output
Deliver exactly:
new: Sprint file saved to production/sprints/sprint-[N].md with Must Have / Should Have / Nice to Have tasks, estimates, and risks
update: In-place edit to current sprint file + update log entry appended
status: Status report with progress %, completed/in-progress/blocked tables, and burndown assessment
- Next action: One sentence on what the team should do immediately
1---2name: sprint-plan3description: ---4---5---6name: sprint-plan7type: workflow8description: "Generates or updates sprint plans with task breakdowns, capacity estimates, dependencies, and risk flags based on milestone goals and past velocity. Use when starting a new sprint, updating sprint progress, or checking sprint status."9argument-hint: "[new|update|status]"10user-invocable: true11allowed-tools: Read, Glob, Grep, Write, Edit12context: |13 !ls production/sprints/ 2>/dev/null14effort: 315when_to_use: "Use when starting a new sprint, updating sprint progress mid-sprint, or checking current sprint status against milestone goals."16---1718When this skill is invoked:19201. **Read the current milestone** from `production/milestones/`.21222. **Read the previous sprint** (if any) from `production/sprints/` to23 understand velocity and carryover. Use `Glob("production/sprints/*.md")`24 then read the file with the highest sprint number.25263. **Scan design documents** in `design/` for features tagged as ready27 for implementation.28294. **Check the risk register** at `production/risk-register/` if it exists.3031For `new`:32331. **Determine sprint number** — count existing files in `production/sprints/`34 and increment by 1. Sprint N = number of existing sprint files + 1.35362. **Generate a sprint plan** following this format, then **save to37 `production/sprints/sprint-{N}.md`** (confirm path with user before writing):3839```markdown40# Sprint [N] -- [Start Date] to [End Date]4142## Sprint Goal43[One sentence describing what this sprint achieves toward the milestone]4445## Capacity46- Total days: [X]47- Buffer (20%): [Y days reserved for unplanned work]48- Available: [Z days]4950## Tasks5152### Must Have (Critical Path)53| ID | Task | Agent/Owner | Est. Days | Dependencies | Acceptance Criteria |54|----|------|-------------|-----------|-------------|-------------------|5556### Should Have57| ID | Task | Agent/Owner | Est. Days | Dependencies | Acceptance Criteria |58|----|------|-------------|-----------|-------------|-------------------|5960### Nice to Have61| ID | Task | Agent/Owner | Est. Days | Dependencies | Acceptance Criteria |62|----|------|-------------|-----------|-------------|-------------------|6364## Carryover from Previous Sprint65| Task | Reason | New Estimate |66|------|--------|-------------|6768## Risks69| Risk | Probability | Impact | Mitigation |70|------|------------|--------|------------|7172## Dependencies on External Factors73- [List any external dependencies]7475## Definition of Done for this Sprint76- [ ] All Must Have tasks completed77- [ ] All tasks pass acceptance criteria78- [ ] No S1 or S2 bugs in delivered features79- [ ] Design documents updated for any deviations80- [ ] Code reviewed and merged81```8283For `update`:84851. **Identify the current sprint file** — find the latest file in86 `production/sprints/` (highest sprint number). Read it.87882. **Ask the user** which task(s) to update: task ID, new status89 (`done` / `in-progress` / `blocked`), and any notes or blocker details.90913. **Edit the sprint file in place** using the Edit tool:92 - Move completed tasks to the "Completed" section if tracking status inline93 - Add blocker info to the Blocked table94 - Update `% Done` estimates for in-progress tasks95964. **Append a brief update log** at the bottom of the file:9798 ```markdown99 ## Update Log100 - [YYYY-MM-DD]: [Summary of changes made]101 ```1021035. **Confirm** the edit to the user: "Sprint {N} updated — {X} task(s) changed."104105For `status`:1061071. **Generate a status report**:108109```markdown110# Sprint [N] Status -- [Date]111112## Progress: [X/Y tasks complete] ([Z%])113114### Completed115| Task | Completed By | Notes |116|------|-------------|-------|117118### In Progress119| Task | Owner | % Done | Blockers |120|------|-------|--------|----------|121122### Not Started123| Task | Owner | At Risk? | Notes |124|------|-------|----------|-------|125126### Blocked127| Task | Blocker | Owner of Blocker | ETA |128|------|---------|-----------------|-----|129130## Burndown Assessment131[On track / Behind / Ahead]132[If behind: What is being cut or deferred]133134## Emerging Risks135- [Any new risks identified this sprint]136```137138### Agent Consultation139140For comprehensive sprint planning, consider consulting:141142- `producer` agent for capacity planning, risk assessment, and cross-department coordination143- `product-manager` agent for feature prioritization and design readiness assessment144145## Protocol146147- **Question**: Reads mode from argument (`new` / `update` / `status`); `update` mode asks which tasks changed148- **Options**: Skip — mode drives execution path149- **Decision**: `update` mode — user specifies task IDs, new status, and blocker details150- **Draft**: Plan or status report shown in conversation before writing151- **Approval**: "May I write to `production/sprints/sprint-[N].md`?"152153## Output154155Deliver exactly:156157- **`new`**: Sprint file saved to `production/sprints/sprint-[N].md` with Must Have / Should Have / Nice to Have tasks, estimates, and risks158- **`update`**: In-place edit to current sprint file + update log entry appended159- **`status`**: Status report with progress %, completed/in-progress/blocked tables, and burndown assessment160- **Next action**: One sentence on what the team should do immediately