mcpField
G
gds-sprint-status

gds-sprint-status

github.com/bmad-code-org开发26244 次安装5 周前更新
代码仓库

关于 gds-sprint-status

gds-sprint-status 是面向开发者的工作流技能,可根据 sprint-status.yaml 汇总冲刺情况。它会检查状态与风险、推荐下一步工作流,并可按状态展示 Story 或显示文件内容。

主要功能

  1. 01汇总冲刺状态
  2. 02验证状态值
  3. 03检测风险
  4. 04推荐下一步工作流
  5. 05按状态分组 Story

适用场景

  1. 01查看冲刺进度
  2. 02发现过期或不一致的跟踪信息
  3. 03选择下一步开发工作流

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/bmad-code-org/bmad-module-game-dev-studio --skill gds-sprint-status

安装后在 Claude Code 中输入/gds-sprint-status确认已加载。

附带文件customize.toml

详细介绍

冲刺状态工作流

目标: 总结冲刺状态,指出风险,并推荐下一步工作流操作。

你的角色: 你是一名开发者,需要清晰、可执行地呈现冲刺情况。不提供时间估算——专注于状态、风险和后续步骤。

路径

  • sprint_status_file = {implementation_artifacts}/sprint-status.yaml

输入文件

输入路径加载策略
冲刺状态{sprint_status_file}FULL_LOAD

上下文

  • project_context = **/project-context.md(如存在则加载)

约定

  • 裸路径(例如 template.md)相对于技能根目录解析。
  • {skill-root} 指此技能的安装目录(customize.toml 所在位置)。
  • {project-root} 指最近的、包含 _bmad/ 的文件夹,从项目工作目录开始向上遍历其父目录。
  • {skill-name} 指技能目录的基本名称。

激活时

步骤 1:解析工作流配置块

运行:uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow

如果脚本失败,则按 base → team → user 的顺序读取以下三个文件,并应用与解析器相同的结构合并规则,自行解析 workflow 配置块:

  1. {skill-root}/customize.toml — 默认值
  2. {project-root}/_bmad/custom/{skill-name}.toml — 团队覆盖项
  3. {project-root}/_bmad/custom/{skill-name}.user.toml — 个人覆盖项

缺失的文件跳过。标量覆盖,表格进行深度合并,以 code 或 id 为键的表格数组会替换匹配项并追加新项,其他所有数组均追加。

步骤 2:执行前置步骤

按顺序执行 {workflow.activation_steps_prepend} 中的每一项,然后再继续。

步骤 3:加载持久事实

将 {workflow.persistent_facts} 中的每一项视为基础上下文,并在本次工作流运行的剩余时间内保留。以 file: 为前缀的条目是 {project-root} 下的路径或 glob 模式——加载所引用的内容作为事实。其他所有条目均按原文视为事实。

步骤 4:加载配置

从 {project-root}/_bmad/gds/config.yaml 加载配置并解析:

  • user_name
  • communication_language
  • implementation_artifacts
步骤 5:向用户问候

用 {communication_language} 向 {user_name} 问候。

步骤 6:执行后置步骤

按顺序执行 {workflow.activation_steps_append} 中的每一项。

激活已完成。如果 activation_steps_prepend 或 activation_steps_append 非空,请在继续之前确认已按顺序执行每一项。所有激活步骤完成之前,不要开始主工作流。

执行

如果调用方提供了 {{mode}},则设置 mode = {{mode}};否则设置 mode = "interactive" 跳转到步骤 20 跳转到步骤 30 继续步骤 1 加载 {project_context},了解项目范围内的模式和约定(如存在) 尝试加载 {sprint_status_file} ❌ 未找到 sprint-status.yaml。 运行 `/bmad:gds:workflows:sprint-planning` 生成该文件,然后重新运行 sprint-status。 退出工作流 继续步骤 2 读取完整文件:{sprint_status_file} 解析字段:generated、last_updated、project、project_key、tracking_system、story_location 解析 development_status 映射。分类键: - Epic:以 "epic-" 开头(且不以 "-retrospective" 结尾)的键 - 复盘:以 "-retrospective" 结尾的键 - 故事:其他所有键(例如 1-2-login-form) 将旧版故事状态 "drafted" 映射为 "ready-for-dev" 统计故事状态:backlog、ready-for-dev、in-progress、review、done 将旧版 Epic 状态 "contexted" 映射为 "in-progress" 统计 Epic 状态:backlog、in-progress、done 统计复盘状态:optional、done

验证所有状态是否属于已知值:

  • 有效的故事状态:backlog、ready-for-dev、in-progress、review、done、drafted(旧版)

  • 有效的 Epic 状态:backlog、in-progress、done、contexted(旧版)

  • 有效的复盘状态:optional、done

⚠️ 检测到未知状态: {{#each invalid_entries}}

  • {{key}}:"{{status}}"(无法识别) {{/each}}

有效状态:

  • 故事:backlog、ready-for-dev、in-progress、review、done
  • Epic:backlog、in-progress、done
  • 复盘:optional、done 应如何更正这些状态? {{#each invalid_entries}} {{@index}}. {{key}}:"{{status}}" → [选择有效状态] {{/each}}

输入更正内容(例如 "1=in-progress, 2=backlog"),或输入 "skip" 在不修正的情况下继续: 使用更正后的值更新 sprint-status.yaml 使用更正后的状态重新解析文件

检测风险:

  • 如果任何故事的状态为 "review":建议使用 /bmad:gds:workflows:code-review
  • 如果任何故事的状态为 "in-progress",且没有故事的状态为 "ready-for-dev":建议专注于正在进行的故事
  • 如果所有 Epic 的状态均为 "backlog",且没有故事的状态为 "ready-for-dev":提示使用 /bmad:gds:workflows:create-story
  • 如果 last_updated 时间戳距今超过 7 天(或缺少 last_updated 时回退使用 generated):警告 "sprint-status.yaml 可能已过时"
  • 如果任何故事键不符合 Epic 编号模式(例如,故事 "5-1-..." 存在,但没有 "epic-5"):警告 "检测到孤立故事"
  • 如果任何 Epic 的状态为 in-progress,但没有关联故事:警告 "进行中的 Epic 没有故事"
按优先级选择建议的下一项工作流: 选择“第一个”故事时:按 Epic 编号排序,然后按故事编号排序(例如,1-1 排在 1-2 之前,1-2 排在 2-1 之前) 1. 如果任何故事的状态 == in-progress → 对第一个进行中的故事建议使用 `dev-story`(next_agent = DEVELOPER) 2. 否则,如果任何故事的状态 == review → 对第一个待审查的故事建议使用 `code-review`(next_agent = REVIEWER) 3. 否则,如果任何故事的状态 == ready-for-dev → 建议使用 `dev-story`(next_agent = DEVELOPER) 4. 否则,如果任何故事的状态 == backlog → 建议使用 `create-story`(next_agent = STORY_AUTHOR) 5. 否则,如果任何复盘的状态 == optional → 建议使用 `retrospective`(next_agent = FACILITATOR) 6. 否则 → 所有实现事项均已完成;祝贺用户——你们共同完成了出色的工作! 将选定的建议存储为:next_story_id、next_workflow_id、next_agent。注意:在整合后的 GDS Phase 4 模型中,所有角色标签(DEVELOPER、REVIEWER、STORY_AUTHOR、FACILITATOR)都映射到同一个 Agent(gds-agent-game-dev / Link Freeman)。保留这些标签,供需要按语义区分角色的下游使用方使用。 ## 📊 冲刺状态
  • 项目:{{project}}({{project_key}})
  • 跟踪系统:{{tracking_system}}
  • 状态文件:{sprint_status_file}

故事: 待办 {{count_backlog}},准备开发 {{count_ready}},进行中 {{count_in_progress}},审查中 {{count_review}},已完成 {{count_done}}

史诗: 待办 {{epic_backlog}},进行中 {{epic_in_progress}},已完成 {{epic_done}}

下一步建议: /bmad:gds:workflows:{{next_workflow_id}}({{next_story_id}})

{{#if risks}} 风险: {{#each risks}}

  • {{this}} {{/each}} {{/if}}

请选择一个选项: 1) 现在运行建议的工作流 2) 按状态显示所有故事 3) 显示原始 sprint-status.yaml 4) 退出 选择: 运行 `/bmad:gds:workflows:{{next_workflow_id}}`。 如果该命令针对某个故事,请在提示时设置 `story_key={{next_story_id}}`。 ### 按状态查看故事 - 进行中:{{stories_in_progress}} - 审查中:{{stories_in_review}} - 准备开发:{{stories_ready_for_dev}} - 待办:{{stories_backlog}} - 已完成:{{stories_done}} 显示 {sprint_status_file} 的完整内容 退出工作流

运行:uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow.on_complete — 如果解析出的值非空,则在退出前将其作为最后一条终端指令执行。

与步骤 2 相同,加载并解析 {sprint_status_file} 与步骤 3 相同,计算建议 next_workflow_id = {{next_workflow_id}} next_story_id = {{next_story_id}} next_agent = {{next_agent}} count_backlog = {{count_backlog}} count_ready = {{count_ready}} count_in_progress = {{count_in_progress}} count_review = {{count_review}} count_done = {{count_done}} epic_backlog = {{epic_backlog}} epic_in_progress = {{epic_in_progress}} epic_done = {{epic_done}} risks = {{risks}} 返回调用方

运行:uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow.on_complete — 如果解析出的值非空,则在退出前将其作为最后一条终端指令执行。

检查 {sprint_status_file} 是否存在 is_valid = false error = "缺少 sprint-status.yaml" suggestion = "运行 sprint-planning 来创建该文件" 返回

读取并解析 {sprint_status_file}

验证必需的元数据字段是否存在:generated、project、project_key、tracking_system、story_location(为保持向后兼容,last_updated 为可选项) is_valid = false error = "缺少必需字段:{{missing_fields}}" suggestion = "重新运行 sprint-planning,或手动添加缺失字段" 返回 验证 development_status 部分存在且至少包含一条记录 is_valid = false error = "development_status missing or empty" suggestion = "Re-run sprint-planning or repair the file manually" 返回

根据已知有效状态验证所有状态值:

  • 故事:backlog、ready-for-dev、in-progress、review、done(旧版:drafted)
  • 史诗:backlog、in-progress、done(旧版:contexted)
  • 回顾:可选、done is_valid = false error = "Invalid status values: {{invalid_entries}}" suggestion = "Fix invalid statuses in sprint-status.yaml" 返回

is_valid = true message = "sprint-status.yaml valid: metadata complete, all statuses recognized" 运行:uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow.on_complete — 如果解析后的值非空,则在退出前将其作为最终终端指令执行。

评论

支持 Markdown