关于 sprint-status
只读技能,从冲刺计划和故事状态中生成简明进度快照,供快速了解项目情况;不会修改文件。
主要功能
- 01汇总冲刺进度
- 02扫描故事状态标记
- 03计算剩余时间和燃尽情况
- 04标记过期或缺失的故事
- 05最多给出一项建议
适用场景
- 01快速查看冲刺进展
- 02发现受阻或停滞的工作
- 03查看构建顺序中的下一个故事
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ donchitos/ claude-code-game-studios --skill sprint-status安装后在 Claude Code 中输入/sprint-status确认已加载。
详细介绍
!bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys story_granularity,workflow
冲刺状态
这是一次快速的情况了解检查,不是冲刺回顾。它会读取当前冲刺计划和故事文件,扫描状态标记,并在 30 行以内生成简明快照。如需详细管理冲刺,请使用
/sprint-plan update 或 /milestone-review。
此技能为只读。 它不会提出更改,不会要求写入文件,最多只给出一条具体建议。
story_granularity — 它决定燃尽进度的粒度:coarse 为功能级块(默认值,通过 rigor: minimal 设置),balanced 为任务级块(rigor: standard),fine 为验收标准级块。
1. 查找冲刺
参数: $ARGUMENTS(空白 = 使用当前冲刺)
- 如果提供了参数(例如
/sprint-status 3),请在production/sprints/中查找与sprint-003.md、sprint-03.md、sprint-3.md或类似名称匹配的文件(/sprint-plan会使用三位数编号)。报告找到的文件。 - 如果未提供参数,请在
production/sprints/中查找最近修改的文件,并将其视为当前冲刺。 - 如果
production/sprints/不存在或为空:- 在
workflow: minimal下,按设计不会有冲刺——简报中的构建顺序就是计划,故事文件会承载该计划。改为报告其中的进度,然后停止:- 在你阅读此技能之前,
.claude/scripts/story-status.sh已打印以下列表:每个未完成故事占一行,顺序已按路线排列(IN_REVIEW、IN_PROGRESS、然后是TODO——即Ready或Not Started状态的故事,按构建顺序排列),随后是BLOCKED、OTHER、NO_STATUS和COMPLETE计数:
- 在你阅读此技能之前,
- 在
!bash "${CLAUDE_SKILL_DIR}/../../scripts/story-status.sh"
2. 在 15 行以内打印:根据 `COMPLETE` 行(只统计 `Complete` 和 `Done` 故事,`In Review` 不算完成)得出的 `Build order: [N] of [M] stories complete`,然后打印 **Next**:首个 `IN_REVIEW`、`IN_PROGRESS` 或 `TODO` 行中的故事。该列表已是最新状态;不要再次运行脚本,也不要重新排列故事文件——`In Review` 故事需要先关闭,然后才能继续处理 `In Progress` 故事:其工作已经写好。对于 `IN_REVIEW`,建议使用 `/story-done [path]`;对于 `IN_PROGRESS` 或 `TODO`,建议使用 `/dev-story [path]`。列出任何 `BLOCKED` 故事及其阻塞原因;它永远不会是 Next。
3. 每个故事都为 `Complete`(或 `Done`)→“构建顺序已完成:[M] 个故事中有 [M] 个已完成。”提供三种后续选择:试玩构建成果;通过 `/create-stories` 从简报中添加后续故事;或在游戏已超出单页简报范围时,通过 `/settings` 提高 `modes.rigor`。
4. `STORIES none`——完全没有故事文件 →“还没有故事。运行 `/create-stories`,将简报中的构建顺序转换为故事。”
5. 没有 `IN_REVIEW`、`IN_PROGRESS` 或 `TODO` 行,但 `COMPLETE` 行的数量少于总数——所有未完成故事都处于 `BLOCKED`、`OTHER`(例如 `Draft`)或 `NO_STATUS` 状态。**没有 Next**,并且构建顺序**尚未**完成:绝不要说它已完成。打印 `Build order` 行,然后列出每个 `BLOCKED` 故事及其阻塞原因(从故事文件中读取,通常为 `BLOCKED:` 注释),以及每个其他故事的原始状态。建议一个步骤:解决第一个阻塞项所需的操作;若没有阻塞项,则完成第一个 `Draft` 或未设置状态的故事,并将其 Status 设为 `Ready`。
- 在
standard或full下,报告:“未找到冲刺文件。使用/sprint-plan new开始冲刺。”然后停止。
完整阅读冲刺文件。提取:
- 冲刺编号和目标
- 开始日期和结束日期
- 所有故事或任务条目及其优先级(Must Have / Should Have / Nice to Have)、负责人和估算
2. 计算剩余天数
使用今天的日期和迭代文件中的迭代结束日期,计算:
- 迭代总天数(结束日期减去开始日期)
- 已过天数
- 剩余天数
- 已消耗时间的百分比
如果迭代文件中没有明确日期,请注明“未找到迭代日期 — 已跳过燃尽评估。”
3. 扫描故事状态
首先:检查是否存在 production/sprint-status.yaml。
如果存在,直接读取——它是权威信息源。
提取每个故事的 status,以及已设置的 priority、owner 和 blocker——它们对应状态表中的列。无需扫描 Markdown。
使用其中的 sprint、goal、start、end 字段,而不是重新解析迭代计划。
如果 sprint-status.yaml 不存在(旧版迭代或首次设置),
则回退到 Markdown 扫描:
- 如果条目引用了故事文件路径,检查文件是否存在。 读取文件并扫描状态标记:DONE、COMPLETE、IN PROGRESS、 BLOCKED、NOT STARTED(不区分大小写)。
- 如果条目没有文件路径(迭代计划中的内联任务),扫描 迭代计划本身,查找该条目旁的状态标记。
- 如果未找到状态标记,则归类为 NOT STARTED。
- 如果引用的文件不存在,则归类为 MISSING 并注明。
使用回退方式时,在输出底部添加以下说明:
“⚠ 未找到 sprint-status.yaml — 状态是根据 Markdown 推断的。运行 /sprint-plan update 以生成该文件。”
可选(仅快速检查——不要进行深度扫描):在代码根目录中 grep 与故事系统标识符匹配的目录或文件名,以检查是否存在实现证据。 这仅供参考,不能作为确定状态的依据。
过期故事检测
收集完所有故事的状态后,检查每个 IN PROGRESS 故事是否过期:
- 使用对整个故事集合执行一次 grep,而不是逐个读取故事的方式解析日期
——日期只占一行,逐个打开所有进行中的故事来查找日期
是这项检查的全部成本:
该模式可以接受所有字段名变体。未匹配到内容的故事即为 没有日期,这不等同于过期——将其报告为“从未记录时间戳”, 不要计算其天数。Grep pattern="\*{0,2}(Last Updated|Updated|last-updated|updated_at)\*{0,2}[[:space:]]*:" glob="production/epics/**/story-*.md" output_mode="content"
\*{0,2}包装符正是这项检查能够生效的关键。/create-stories会输出> **Last Updated**: …,因此要求单词后立即跟随:的模式 不会匹配任何故事。再加上上方“未匹配到 = 从未记录时间戳”的规则, 这种失败不会显示出来:每个进行中的故事都会报告为从未记录时间戳, 过期故事检测也永远不会触发。不要使用裸的Updated:锚点。
- 根据今天的日期计算距该日期已过的天数。
- 如果距该日期超过 4 天,则将故事标记为 STALE。(4 天的阈值考虑了周末——上次更新在周五的故事到周三才会被视为过期。)
- 如果故事文件中未找到日期字段,请注明“无时间戳 — 无法检查是否过期。”
- 如果故事没有引用文件(内联任务),请注明“内联任务 — 无法检查是否过期。”
STALE 故事会列入输出表格,并汇总到“需要关注”部分(见第 5 阶段的输出格式)。
过期故事升级规则:如果任何 IN PROGRESS 故事被标记为 STALE(4 天或更久没有进展),燃尽结论 至少升级为 有风险——即使完成百分比处于正常的按计划进行范围内。记录升级原因:“有风险 — [S] 个过期故事:[标题] ([D] 天)[, …]”——[S] 是 STALE 故事的数量,每个故事都要附上各自的 [D], 即距其自身 Last Updated 日期的天数(不是最久的天数,也不是平均值)。
4. 燃尽评估
计算:
- 已完成的任务(DONE 或 COMPLETE)
- 进行中的任务(IN PROGRESS)
- 受阻的任务(BLOCKED)
- 尚未开始的任务(NOT STARTED 或 MISSING)
- 完成百分比:(已完成 / 总数)* 100
通过比较完成百分比与已消耗时间百分比来评估燃尽情况:
- 进度正常:完成百分比与已消耗时间百分比相差不超过 10 个百分点,或进度领先
- 存在风险:完成百分比落后于已消耗时间百分比 10-25 个百分点
- 进度落后:完成百分比落后于已消耗时间百分比超过 25 个百分点
如果没有可用日期,则跳过燃尽评估,并报告“进度正常 / 存在风险 / 进度落后:未知 — 未找到冲刺日期。”
5. 输出
保持输出简洁。故事状态表为必填内容 — 不要截断。总行数控制在 50 行以内;如果没有值得注意的内容,则省略“新出现的风险”部分。使用以下格式:
## 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."]
6. 快速升级规则
输出前应用这些规则;如果触发,在输出顶部(状态表上方)放置标记:
严重标记 — 如果必须完成的故事处于 BLOCKED 或 NOT STARTED 状态,且冲刺剩余时间少于 40%:
SPRINT AT RISK: [N] Must Have stories are not complete with [X]% of sprint
time remaining. Recommend replanning with `/sprint-plan update`.
完成标记 — 如果所有必须完成的故事均为 DONE:
All Must Haves complete. Team can pull from Should Have backlog.
缺失故事标记 — 如果任何引用的故事文件不存在:
NOTE: [N] story files referenced in the sprint plan are missing.
Run `/story-readiness sprint` to validate story file coverage.
协作协议
此技能为只读。它报告磁盘文件中观察到的事实。
- 它不会更新冲刺计划
- 它不会更改故事状态
- 它不会建议缩减范围(请使用
/sprint-plan update) - 每次运行最多给出一条建议
如需了解特定故事的更多详情,用户可以直接阅读故事文件,或运行 /story-readiness [path]。
如需重新规划冲刺,请使用 /sprint-plan update。
如需进行冲刺结束回顾,请使用 /retrospective。