mcpField
B
bmad-handoff

bmad-handoff

github.com/aj-geddes开发49388 次安装19 周前更新
代码仓库

关于 bmad-handoff

bmad-handoff 是 BMAD Planning & Orchestrator 插件中的技能,可将 ready-for-dev 状态的故事文件整理为带版本的 JSON 交接清单,供后续外部开发工具使用,且不绑定特定运行器。

主要功能

  1. 01在输出文件夹中查找故事文件
  2. 02仅纳入 ready-for-dev 故事
  3. 03提取字段并生成 JSON 清单
  4. 04计算依赖波次并排序
  5. 05报告缺少的必需章节

适用场景

  1. 01将已完成的故事交给外部开发工具
  2. 02故事更新后刷新清单

安装

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

$npx skills add https://github.com/aj-geddes/claude-code-bmad-skills --skill bmad-handoff

安装后在 Claude Code 中输入/bmad-handoff确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

REFERENCE.md
templates/
handoff-manifest.schema.json
handoff-manifest.template.json

详细介绍

BMAD 移交

用途: 扫描规划输出文件夹,查找所有状态为 ready-for-dev 的故事,将其汇总到单个 handoff-manifest.json 中,并将文件放在任何下游开发工具都能读取的位置——不与任何特定运行器耦合。

这是规划插件生成的最后一个构件。接下来发生的事情由外部开发工具负责,而非此技能。

运行时机

在故事编写阶段完成,并且你(或用户)已确认至少有一个故事的状态为 ready-for-dev 后,运行此技能。清单是某个时间点的快照;重新运行此技能即可刷新。

工作流

使用 TodoWrite 跟踪这些步骤的进度。

1. 定位输出文件夹

查找 bmad-output/project-context.md(默认输出文件夹),或询问用户输出文件夹的位置。默认值:bmad-output/。

2. 查找故事文件

在输出文件夹下对 **/{epic}.{story}.*.story.md 进行 glob 匹配。 如果没有匹配结果,则接受其他扁平布局(stories/*.story.md)。

3. 筛选 ready-for-dev 状态

读取每个故事文件的 **Status:** 标头字段(位于故事标头块中,而非 ## Status 标题)。仅包含状态值严格等于 ready-for-dev 的故事。

如果没有找到此类故事,则报告发现的状态并停止——不要生成空清单。

4. 提取每个故事的字段

对于每个符合条件的故事文件,提取:

字段故事文件中的来源
id文件名主体或 ## Story 标题中的 ID
storyFilePath相对于项目根目录的路径
status**Status:** 标头字段值
epic文件名的第一段,例如 2.1.stripe.story.md 中的 "2"
storyNumber第二段,例如 "1"
title第一个 H1 标题或 ## Story 标题文本
ownedScope## Owned File/Module Scope — 原样列出每个路径
wave## Dependency Maps → wave/parallel_set 注释(整数或 null)
parallelSet同一章节中的 parallel set 标签(若存在,则为字符串;否则为 null)
dependencies## Dependency Maps → 被阻塞的故事 ID(数组,可以为空)
acceptanceCriteriaSummary## Acceptance Criteria 中前 3 项验收标准,每项 ≤120 个字符
lockedSectionsNote静态字符串 — 参见 schema
devAgentRecord静态 null — 留给开发工具填充的占位符
5. 计算 wave 顺序

如果故事尚未包含明确的 wave 注释:

  • dependencies 数组为空的故事属于 wave 1。
  • 当某个故事的每项依赖都位于 wave N 或更早时,该故事属于 wave N+1。
  • 添加计算得出的 wave 值;未标注时,parallelSet 保持为 null。
6. 写入清单

写入 {outputFolder}/handoff-manifest.json。

使用 ${CLAUDE_PLUGIN_ROOT}/skills/bmad-handoff/templates/handoff-manifest.schema.json 中的 schema 作为结构约定。将 schemaVersion: "1.0" 填入清单。

故事按 wave 升序排序,同一 wave 内按 id 升序排序。

7. 向用户报告

打印简洁摘要:

Handoff manifest written → bmad-output/handoff-manifest.json
  schemaVersion : 1.0
  stories       : <N> ready-for-dev
  waves         : <W>  (wave 1 has <X> stories, can start immediately)
  output path   : bmad-output/handoff-manifest.json

如果有故事缺少必需章节(例如没有 ## Owned File/Module Scope),请将其列为警告——不要悄悄省略或编造数据。

清单字段定义(快速参考)

完整的架构说明和适配器说明请参阅 REFERENCE.md。

字段类型必填说明
schemaVersionstring是Semver 字符串;当前值 = "1.0"
generatedAtstring是ISO-8601 UTC 时间戳
projectNamestring是来自 project-context.md 或用户输入
outputFolderstring是用于查找 story 的相对路径
storiesarray是每个已准备好进行开发的 story 对应一个对象
stories[].idstring是唯一的 story 标识符
stories[].storyFilePathstring是.story.md 文件的相对路径
stories[].statusstring是此清单中始终为 "ready-for-dev"
stories[].epicstring是Epic 标识符
stories[].storyNumberstring是Epic 内的 story 编号
stories[].titlestring是易于阅读的 story 标题
stories[].ownedScopearray是此 story 可修改的文件/模块路径
stories[].waveinteger是执行波次(1 = 无依赖项)
stories[].parallelSetstring|null否明确分组时使用的标签
stories[].dependenciesarray是必须先完成的 story ID
stories[].acceptanceCriteriaSummaryarray是前 3 项 AC 条目,每项 ≤120 个字符
stories[].lockedSectionsNotestring是给开发工具的指示
stories[].devAgentRecordnull是由开发工具填充;生成时始终为 null

lockedSectionsNote 始终为以下字符串:

"Sections Acceptance Criteria, Dev Notes, and Testing are LOCKED. External dev tools must not edit them. Populate only the Dev Agent Record section."

子 Agent 策略

对于较小的待办列表(≤15 个 story),此技能以单线程运行——提取循环速度很快,且上下文可容纳在单次会话中。

对于较大的待办列表(16 个或更多 story),并行分派 story 提取任务:

Agent任务
Agent 1…N读取分配范围内的 story 文件;提取字段;返回 JSON 片段
Coordinator合并片段;计算波次顺序;写入清单

每个 Agent 会收到其负责范围内的文件路径列表,以及上方的字段提取表。它会返回一个 story 对象的 JSON 数组(暂不包含 wave 字段)。 Coordinator 会合并、计算波次、排序并写入清单。

关键指南

  1. 切勿编造字段值——如果 story 文件中缺少某个字段,输出 null 并在摘要中添加警告。
  2. 不要修改 story 文件——此技能对 story 内容仅执行只读操作。
  3. ownedScope 对并行冲突安全至关重要;切勿合并或概述其中的内容。
  4. 此清单是一个稳定的版本化接口。添加或删除字段前,先递增 schemaVersion(作为单独的架构修订,而非在本次运行中修改)。
  5. 不要根据 ready-for-dev 状态以外的任何条件筛除 story——依赖项解析是开发工具的职责。
  6. 如果用户要求“重新运行”或“刷新”清单,请覆盖现有文件。


属于 BMAD Planning & Orchestrator 插件——由 BMAD Code Organization 为 BMAD Method 提供的 Claude Code harness(https://github.com/bmad-code-org/BMAD-METHOD)。体现了 bmad-handoff 的理念。所有方法论相关致谢均归 BMAD Code Organization 所有。

评论

支持 Markdown