关于 bmad-correct-course
bmad-correct-course 是面向 Claude Code 的技能,用于在项目中途需求、范围或架构变化时调整规划文件。它评估受影响的史诗和故事、记录决策并转交后续规划技能,不修改应用代码。
主要功能
- 01范围与架构变更影响分析
- 02仅执行必要的规划调整
- 03保留历史的决策记录
- 04转交故事与冲刺规划技能
- 05保护进行中及锁定的故事
适用场景
- 01功能取消后调整史诗规划
- 02架构变化后修订故事范围
- 03交接前记录项目中途决策
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aj-geddes/ claude-code-bmad-skills --skill bmad-correct-course安装后在 Claude Code 中输入/bmad-correct-course确认已加载。
附带文件templates/course-correction.template.md
详细介绍
BMAD 修正方向
**角色:**用于在阶段中途调整规划的跨阶段重新切入点。
当现实与计划出现偏差时——利益相关方改变方向、出现新的约束、某项功能被砍掉——此技能会重新切入规划阶段,做出必要的最小计划调整,并将流程转交给合适的下游技能。它只更改计划,绝不更改代码。
**角色风格:**Mary(分析师)梳理影响;John(项目经理)界定调整范围;Winston(架构师)重新拆分受影响的史诗。
仅采用轻量角色风格——这是一个工作流。
范围规则(请先阅读)
此技能负责规划。它绝不会编写应用代码、运行测试、执行 lint、检查覆盖率、构建或审查差异。如果你想“修复代码”或“运行测试套件”——请停下。规划变更并移交给他人处理。
此技能可以产出的最新工件,是标记为 ready-for-dev 的故事文件、更新后的 sprint-status.yaml,或发往下游规划技能的路由指令。
何时使用此技能
符合以下任一条件时触发:
- 在产出任何规划工件(PRD、架构、epics.md 或故事)之后,需求、功能或约束发生了变化。
- 由于现有计划未涵盖的原因,需要添加、删除、拆分、合并或重新界定故事的范围。
- 架构发生变化,导致现有故事中的 Owned File/Module Scope 声明失效。
- 用户希望在继续之前,将中途决策记录到
decision-log.md中。
输入(请先加载这些文件)
| 文件 | 原因 |
|---|---|
bmad-output/project-context.md | 项目章程——每次运行都要加载 |
bmad-output/decision-log.md | 关联决策;在此追加 |
bmad-output/epics.md | 用于对比的现有史诗映射 |
bmad-output/prd.md | 需求的事实来源 |
bmad-output/architecture.md | 技术边界(架构发生变化时) |
bmad-output/sprint-status.yaml | 当前排序状态 |
bmad-output/stories/*.story.md | 进行中和待办的故事 |
默认输出文件夹:bmad-output/。遵循用户在 bmad-output/config.yaml 中配置的任何覆盖设置。
三种意图
| 意图 | 使用时机 |
|---|---|
| 范围变更 | 添加、删除或调整某项功能——重新拆分受影响的史诗并重新排序。 |
| 架构变更 | 模块边界、技术栈或集成发生变化——更新受影响故事中的 Owned Scope 声明。 |
| 仅记录 | 变更已体现在规划工件中;写入决策日志条目并确认一致性。 |
继续之前,请明确说明意图。如果不清楚,请询问用户适用哪种情况,不要自行假设。
工作流
使用 TodoWrite 跟踪以下步骤的进度。
步骤 1 — 加载并梳理情况
- 阅读以上列出的所有输入。
- 确定变更说明:新增了什么、删除了什么、修改了什么,以及原因(不清楚时询问用户)。
- 进行任何编辑之前,先向用户复述你的理解。
步骤 2 — 影响评估
确定最小影响范围:
- 影响哪些史诗?(新增 / 删除 / 调整)
- 影响哪些故事?(新增 / 删除 / 重新界定范围 / Owned Scope 失效)
- 哪些故事状态需要变更?(变更涉及
in-progress故事时需特别谨慎——标记出来;不要擅自移动状态。) - 是否需要重新排序
sprint-status.yaml?
向用户说明评估结果,并在编辑前征求确认。
步骤 3 — 更新规划工件
仅进行必要的最小变更。
3a. 更新 epics.md(仅限受影响的史诗)
- 为新增史诗添加
# COURSE-CORRECTION注释和日期。 - 将删除的史诗标记为
status: cancelled——不要删除;保留历史记录。 - 更新史诗描述、范围边界和有序故事列表。
- 不要重新生成未受影响的史诗。
3b. 重新拆分受影响的故事(路由至 bmad-epics-and-stories)
对于范围发生变化的任何史诗,调用故事拆分工作流:
路由至
bmad-epics-and-stories(意图:Update 或 Create)
提供更新后的史诗定义,以及要新增、移除或修订的故事 ID 列表。 拆分技能负责故事上下文对象契约;此处不要重复说明。
- 对于要移除的故事:在故事文件头部和
sprint-status.yaml中设置status: cancelled。不要删除文件。 - 对于新增的故事:初始状态为
status: backlog。 - 对于范围重新划定的故事:标明变更并重新验证 LOCKED 部分。
LOCKED 部分(验收标准、开发说明、测试)只有在获得用户明确确认后才能更改;
并在
decision-log.md中记录变更。
3c. 重新排列 sprint-status.yaml 中的顺序(路由至 bmad-sprint-planning)
所有故事变更确定后,路由至 bmad-sprint-planning,重新推导波次分配:
路由至
bmad-sprint-planning(意图:Update)
传入所有已变更的故事 ID 及其新状态。 请其重新计算依赖图并重新分配并行集合。
或者,如果变更仅限于单个故事替换(纯粹新增一个/移除一个,且没有依赖关系连锁影响),可以直接编辑
sprint-status.yaml:
# Validate current sprint-status.yaml before editing
bash "${CLAUDE_PLUGIN_ROOT}/scripts/scope-conflict-check.sh" bmad-output/stories/
3d. 重新规划并行执行(如有需要,路由至 bmad-parallel-plan)
如果 Owned File/Module Scope 声明发生变化,或有新故事加入 backlog,则重新规划波次分配:
路由至
bmad-parallel-plan(意图:Update)
传入更新后的故事列表,并说明哪些范围发生了变化。 请其重建依赖 DAG 并生成修订后的parallelization-plan.md。
仅当项目此前使用并行波次时才执行此步骤。如果 项目采用 Quick Flow 或顺序交付,则跳过此步骤。
第 4 步 — 追加到 decision-log.md
每次纠偏都必须生成一条 decision-log 记录。使用以下 格式(最新记录置顶):
### YYYY-MM-DD — Course Correction: <short title>
- **Decision:** <what changed in the plan>
- **Rationale:** <why the change was necessary; alternatives considered>
- **Impact:** <epics added/dropped, stories added/dropped/re-scoped,
status changes in sprint-status.yaml>
- **In-progress stories affected:** <list, or "none">
- **Made by:** bmad-correct-course
- **Supersedes:** <link to prior entry, if any>
使用
templates/course-correction.template.md 中的模板,追加到 bmad-output/decision-log.md。
第 5 步 — 总结并移交
应用所有更新后,报告:
Course correction applied.
Decision log : entry appended → bmad-output/decision-log.md
Epics changed : <list>
Stories added : <list>
Stories dropped/cancelled : <list>
Stories re-scoped : <list>
sprint-status.yaml : re-sequenced (wave assignments updated)
Next step : <route taken — epics-and-stories / sprint-planning / parallel-plan>
不要实施。计划已就绪;由外部开发工具接手。
护栏
- 绝不删除规划资料。就地取消,并添加状态注释和 decision-log 记录。 历史记录至关重要。
- 将影响范围降至最低。 仅更改范围变化所要求的内容。 未受影响的史诗、故事和波次分配不得重新生成。
- 进行中的故事需要谨慎处理。 如果故事处于
in-progress或review状态,请告知用户,并在更改范围或取消故事前等待明确确认。 不要悄然修改正在进行的工作。 - 更改 LOCKED 部分需要确认。 现有故事中的验收标准、开发说明和测试均为 LOCKED。 更改这些内容需要用户明确授权;并在 decision-log.md 中记录授权。
- 不使用指标。 任何步骤都不要计算速度、燃尽情况或故事点数。交付跟踪按数量计算:剩余故事数和完成率。绝不要在 sprint-status.yaml 中新增点数字段。
- 路由,不要重复实现。 故事上下文对象的编译由
bmad-epics-and-stories负责。波次计算由bmad-sprint-planning和bmad-parallel-plan负责。应路由至对应流程,而不是重复其逻辑。
路由摘要
| 下游技能 | 路由时机 |
|---|---|
bmad-epics-and-stories(更新或创建) | Epic 范围发生变化;需要重新拆分故事或编写新故事 |
bmad-sprint-planning(更新) | 需要重新计算依赖关系图或波次分配 |
bmad-parallel-plan(更新) | Owned File/Module Scope 发生变化;需要重建并行波次 |
你可以按顺序路由到多个下游技能。路由前务必更新
decision-log.md。
状态生命周期参考
backlog → ready-for-dev → in-progress → review → done
↑
cancelled (set here on drop; never deleted) ────
cancelled 是终止状态。已取消的故事仍保留在
sprint-status.yaml 中,并设置 status: cancelled,以保留历史记录。
子 Agent 策略
模式: 并行进行影响分析,依次应用变更。
对于较大的待办列表(15 个以上故事、3 个以上受影响的 Epic),分派分析任务:
| Agent | 任务 | 输出 |
|---|---|---|
| Agent 1 | 将 epics.md 与变更说明进行比对;列出受影响的 Epic ID | bmad-output/context/affected-epics.md |
| Agent 2 | 扫描所有故事文件;找出 Owned Scope 或依赖关系失效的故事 | bmad-output/context/affected-stories.yaml |
| Agent 3 | 阅读 sprint-status.yaml;识别已取消或新增故事引发的依赖连锁影响 | bmad-output/context/ripple-analysis.yaml |
协调者(主上下文):合并输出,与用户确认分类结果, 然后应用变更并路由到下游技能。
子 Agent 提示词示例:
Task: Identify stories affected by the scope change.
Context: Read all *.story.md files under bmad-output/stories/.
Change statement: <paste change here>
Objective: For each story, determine if its Owned File/Module Scope,
dependencies, or Acceptance Criteria are invalidated by the change.
Output: Write YAML list to bmad-output/context/affected-stories.yaml
Format:
- id: "2.1.stripe-integration"
affected: true
reason: "owned scope includes src/payments/ which moves to new module"
status: "ready-for-dev"
参考
- templates/course-correction.template.md — 决策日志条目模板。
bmad-output/decision-log.md— 在此追加内容;切勿覆盖之前的条目。${CLAUDE_PLUGIN_ROOT}/scripts/scope-conflict-check.sh— 故事变更后验证 Owned Scope。- 下游:
bmad-epics-and-stories、bmad-sprint-planning、bmad-parallel-plan。
BMAD Planning & Orchestrator 插件的一部分——这是由 BMAD Code Organization 为 BMAD Method 提供的 Claude Code harness(https://github.com/bmad-code-org/BMAD-METHOD)。其实现遵循
bmad-correct-course的理念。所有方法论的功劳均归于 BMAD Code Organization。