Compare commits

...

14 Commits

Author SHA1 Message Date
Alex Verkhovsky 42b1d0f657
Merge pull request #2004 from bmad-code-org/normalize-skill-invocation-syntax
chore: normalize skill invocation syntax
2026-03-15 08:15:28 -06:00
Alex Verkhovsky 1ec0d8ba43 chore: normalize skill invocation syntax to `Invoke the skill` pattern
Replace three inconsistent skill reference patterns (frontmatter variables
with raw paths, frontmatter variables with skill: prefix, inline Execute
skill: syntax) with a single natural-language convention across all workflow
and task step files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 07:59:30 -06:00
Alex Verkhovsky e794a81ee2 feat(tools): add REF-03 skill invocation language rule to validator
Skills must be invoked with "invoke" language, not file-oriented verbs
like "read fully and follow", "execute", "run", or "load". These imply
document-level operations and are incorrect for skill references.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 06:40:10 -06:00
Alex Verkhovsky 67232c11cc
Merge pull request #2002 from lrliang/docs/zh-cn-core-tools
docs(zh-cn): add Chinese translation for core-tools reference
2026-03-15 06:22:52 -06:00
Alex Verkhovsky 2622b5d094
Merge branch 'main' into docs/zh-cn-core-tools 2026-03-15 06:15:48 -06:00
Alex Verkhovsky 71c6d5c924
Merge pull request #2000 from bmad-code-org/fix/broken-party-mode-refs
fix: replace broken party-mode workflow refs with skill syntax
2026-03-15 02:48:30 -06:00
Alex Verkhovsky 4bfb076724
Merge branch 'main' into fix/broken-party-mode-refs 2026-03-15 02:47:16 -06:00
leon f5813f26f2 docs(zh-cn): add Chinese translation for core-tools reference
翻译 docs/reference/core-tools.md,覆盖全部 11 个核心工具的说明。
保留技能命令名和参数名不译,描述性内容使用自然中文表达。

Made-with: Cursor
2026-03-15 16:43:08 +08:00
Alex Verkhovsky 02cfaf64a4 feat(tools): add PATH-05 skill encapsulation rule to validator
Add PATH-05: no file path references into another skill directory.
Skills are encapsulated — external consumers must use skill:name syntax,
not reach into internal files. Also tighten WF-03 to cross-reference
PATH-05 so vague "legitimate external path" no longer permits
cross-skill file paths.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 02:26:01 -06:00
Alex Verkhovsky a98bf008fc fix: replace broken party-mode workflow refs with skill syntax
Party-mode moved from core/workflows/ to core/skills/ in PR #1959,
breaking 11 file references. Convert all to skill:bmad-party-mode
matching the convention used by skill:bmad-advanced-elicitation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 02:03:46 -06:00
Alex Verkhovsky fa9c10ec05
Merge pull request #1920 from MenglongFan/docs/translate-quick-dev-preview
docs(zh-cn): add translation for quick-dev-new-preview
2026-03-15 01:34:53 -06:00
Alex Verkhovsky d8ab6efa1f
Merge branch 'main' into docs/translate-quick-dev-preview 2026-03-15 01:33:30 -06:00
Brian cbb8b98876
manifest generate will no longer fail when module has no agents and its first (#1998) 2026-03-15 01:46:16 -05:00
lone fcbcaa6831 docs(zh-cn): add translation for quick-dev-new-preview
Translate docs/explanation/quick-dev-new-preview.md to Chinese.
This document explains the experimental Quick Flow improvement
that reduces human-in-the-loop friction while maintaining quality.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 17:13:53 +08:00
24 changed files with 431 additions and 73 deletions

View File

@ -0,0 +1,73 @@
---
title: "快速开发新预览"
description: 在不牺牲输出质量检查点的情况下减少人机交互的摩擦
sidebar:
order: 2
---
`bmad-quick-dev-new-preview` 是对快速流程Quick Flow的一次实验性改进输入意图输出代码变更减少流程仪式和人机交互轮次同时不牺牲质量。
它让模型在检查点之间运行更长时间,只有在任务无法在没有人类判断的情况下安全继续时,或者需要审查最终结果时,才会让人类介入。
![快速开发新预览工作流图](/diagrams/quick-dev-diagram.png)
## 为什么需要这个功能
人机交互轮次既必要又昂贵。
当前的 LLM 仍然会以可预测的方式失败:它们误读意图、用自信的猜测填补空白、偏离到不相关的工作中,并生成嘈杂的审查输出。与此同时,持续的人工干预限制了开发速度。人类注意力是瓶颈。
这个快速流程的实验版本是对这种权衡的重新平衡尝试。它信任模型在更长的时间段内无监督运行,但前提是工作流已经创建了足够强的边界来确保安全。
## 核心设计
### 1. 首先压缩意图
工作流首先让人类和模型将请求压缩成一个连贯的目标。输入可以从粗略的意图表达开始,但在工作流自主运行之前,它必须变得足够小、足够清晰、没有矛盾。
意图可以以多种形式出现:几句话、一个错误追踪器链接、计划模式的输出、从聊天会话复制的文本,甚至来自 BMAD 自己的 `epics.md` 的故事编号。在最后一种情况下,工作流不会理解 BMAD 故事跟踪语义,但它仍然可以获取故事本身并继续执行。
这个工作流并不会消除人类的控制。它将其重新定位到少数几个高价值时刻:
- **意图澄清** - 将混乱的请求转化为一个没有隐藏矛盾的连贯目标
- **规范审批** - 确认冻结的理解是正确要构建的东西
- **最终产品审查** - 主要检查点,人类在最后决定结果是否可接受
### 2. 路由到最小安全路径
一旦目标清晰,工作流就会决定这是一个真正的单次变更还是需要更完整的路径。小的、零爆炸半径的变更可以直接进入实现。其他所有内容都需要经过规划,这样模型在独自运行更长时间之前就有更强的边界。
### 3. 以更少的监督运行更长时间
在那个路由决策之后,模型可以自己承担更多工作。在更完整的路径上,批准的规范成为模型在较少监督下执行的边界,这正是实验的全部意义。
### 4. 在正确的层诊断失败
如果实现是错误的,因为意图是错误的,修补代码是错误的修复。如果代码是错误的,因为规范太弱,修补差异也是错误的修复。工作流旨在诊断失败从系统的哪个层面进入,回到那个层面,并从那里重新生成。
审查发现用于确定问题来自意图、规范生成还是本地实现。只有真正的本地问题才会在本地修补。
### 5. 只在需要时让人类回来
意图访谈是人机交互,但它不是与重复检查点相同类型的中断。工作流试图将那些重复检查点保持在最低限度。在初始意图塑造之后,人类主要在工作流无法在没有判断的情况下安全继续时,以及在最后需要审查结果时才回来。
- **意图差距解决** - 当审查证明工作流无法安全推断出原本意图时重新介入
其他一切都是更长自主执行的候选。这种权衡是经过深思熟虑的。旧模式在持续监督上花费更多的人类注意力。快速开发新预览在模型上投入更多信任,但将人类注意力保留在人类推理具有最高杠杆作用的时刻。
## 为什么审查系统很重要
审查阶段不仅仅是为了发现错误。它是为了在不破坏动力的情况下路由修正。
这个工作流在能够生成子智能体的平台上效果最好,或者至少可以通过命令行调用另一个 LLM 并等待结果。如果你的平台本身不支持这一点,你可以添加一个技能来做。无上下文子智能体是审查设计的基石。
智能体审查经常以两种方式出错:
- 它们生成太多发现,迫使人类在噪音中筛选
- 它们通过提出不相关的问题并使每次运行变成临时清理项目来使当前变更脱轨
快速开发新预览通过将审查视为分诊来解决这两个问题。
一些发现属于当前变更。一些不属于。如果一个发现是附带的而不是与当前工作有因果关系,工作流可以推迟它,而不是强迫人类立即处理它。这使运行保持专注,并防止随机的分支话题消耗注意力的预算。
那个分诊有时会不完美。这是可以接受的。通常,误判一些发现比用成千上万个低价值的审查评论淹没人类要好。系统正在优化信号质量,而不是详尽的召回率。

View File

@ -0,0 +1,293 @@
---
title: "核心工具"
description: 每个 BMad 安装都自带的内置任务和工作流参考。
sidebar:
order: 2
---
每个 BMad 安装都包含一组核心技能,可以配合你正在做的任何事情使用——跨项目、跨模块、跨阶段的独立任务和工作流。无论安装了哪些可选模块,这些工具始终可用。
:::tip[快速上手]
在 IDE 中输入技能名称(如 `bmad-help`)即可运行任意核心工具,无需启动智能体会话。
:::
## 概览
| 工具 | 类型 | 用途 |
| --- | --- | --- |
| [`bmad-help`](#bmad-help) | 任务 | 根据上下文给出下一步建议 |
| [`bmad-brainstorming`](#bmad-brainstorming) | 工作流 | 引导交互式头脑风暴 |
| [`bmad-party-mode`](#bmad-party-mode) | 工作流 | 编排多智能体群组讨论 |
| [`bmad-distillator`](#bmad-distillator) | 任务 | 无损的 LLM 优化文档压缩 |
| [`bmad-advanced-elicitation`](#bmad-advanced-elicitation) | 任务 | 通过迭代精炼方法提升 LLM 输出质量 |
| [`bmad-review-adversarial-general`](#bmad-review-adversarial-general) | 任务 | 挑刺式审查——找出遗漏和问题 |
| [`bmad-review-edge-case-hunter`](#bmad-review-edge-case-hunter) | 任务 | 穷举分支路径分析,找出未处理的边界情况 |
| [`bmad-editorial-review-prose`](#bmad-editorial-review-prose) | 任务 | 临床式文案编辑,聚焦表达清晰度 |
| [`bmad-editorial-review-structure`](#bmad-editorial-review-structure) | 任务 | 结构编辑——裁剪、合并与重组 |
| [`bmad-shard-doc`](#bmad-shard-doc) | 任务 | 将大型 Markdown 文件拆分为有序章节 |
| [`bmad-index-docs`](#bmad-index-docs) | 任务 | 生成或更新文件夹的文档索引 |
## bmad-help
**你的智能向导,告诉你下一步该做什么。** — 检查项目状态,识别已完成的内容,推荐下一个必需或可选步骤。
**适用场景:**
- 完成了一个工作流,想知道接下来做什么
- 刚接触 BMad需要快速了解全貌
- 卡住了,想要根据当前上下文获取建议
- 安装了新模块,想看看有哪些可用功能
**工作原理:**
1. 扫描项目中已有的产出物PRD、架构文档、用户故事等
2. 检测已安装的模块及其可用工作流
3. 按优先级推荐下一步——必需步骤优先,可选步骤其次
4. 每条推荐都附带技能命令和简要说明
**输入:** 可选的自然语言查询(如 `bmad-help I have a SaaS idea, where do I start?`
**输出:** 按优先级排列的下一步推荐列表,附带技能命令
## bmad-brainstorming
**通过交互式创意技法激发多样想法。** — 引导式头脑风暴会话,从技法库中加载经过验证的创意方法,引导你在整理之前先产出 100+ 个想法。
**适用场景:**
- 启动新项目,需要探索问题空间
- 想法枯竭,需要结构化的创意引导
- 想使用成熟的创意框架SCAMPER、反向头脑风暴等
**工作原理:**
1. 围绕你的主题建立头脑风暴会话
2. 从方法库中加载创意技法
3. 逐个技法引导你产出想法
4. 应用反偏差协议——每产出 10 个想法切换一次创意领域,防止想法扎堆
5. 生成一份只追加的会话文档,所有想法按技法分类整理
**输入:** 头脑风暴主题或问题陈述,可选上下文文件
**输出:** `brainstorming-session-{date}.md`,包含所有产出的想法
:::note[数量目标]
真正的好点子往往出现在第 50-100 个想法之间。工作流鼓励在整理之前先产出 100+ 个想法。
:::
## bmad-party-mode
**编排多智能体群组讨论。** — 加载所有已安装的 BMad 智能体,引导一场自然对话,每个智能体从各自的专业领域和角色特征出发发言。
**适用场景:**
- 需要多个专家视角来评估一个决策
- 希望智能体互相质疑彼此的假设
- 正在探索一个横跨多个领域的复杂话题
**工作原理:**
1. 加载智能体清单及所有已安装的智能体角色
2. 分析你的话题,选出 2-3 个最相关的智能体
3. 智能体轮流发言,自然地交叉讨论甚至争论
4. 轮换参与的智能体,确保随时间推移覆盖多样视角
5. 输入 `goodbye`、`end party` 或 `quit` 退出
**输入:** 讨论话题或问题,以及你希望参与的角色(可选)
**输出:** 实时多智能体对话,各智能体保持各自角色特征
## bmad-distillator
**无损的 LLM 优化文档压缩。** — 生成信息密度高、token 高效的精馏文档,保留全部信息供下游 LLM 消费。可通过往返重构验证无损性。
**适用场景:**
- 文档太大,超出 LLM 的上下文窗口
- 需要研究资料、规格或规划产出物的 token 高效版本
- 想验证压缩过程中没有丢失信息
- 智能体需要频繁引用和检索其中的信息
**工作原理:**
1. **分析** — 读取源文档,识别信息密度和结构
2. **压缩** — 将散文转为密集的要点格式,剥离装饰性排版
3. **校验** — 检查完整性,确保原始信息全部保留
4. **验证**(可选)— 往返重构测试,证明压缩无损
**输入:**
- `source_documents`(必填)— 文件路径、文件夹路径或 glob 模式
- `downstream_consumer`(可选)— 消费方是什么(如 "PRD creation"
- `token_budget`(可选)— 大致目标大小
- `--validate`(标志)— 运行往返重构测试
**输出:** 精馏 Markdown 文件,附带压缩比报告(如 "3.2:1"
## bmad-advanced-elicitation
**通过迭代精炼方法提升 LLM 输出质量。** — 从启发技法库中选取合适的方法,通过多轮迭代系统性地改进内容。
**适用场景:**
- LLM 输出感觉浅薄或千篇一律
- 想从多个分析角度深挖一个话题
- 正在打磨关键文档,需要更深层的思考
**工作原理:**
1. 加载包含 5+ 种启发技法的方法注册表
2. 根据内容类型和复杂度选出 5 个最匹配的方法
3. 呈现交互菜单——选一个方法、重新洗牌或列出全部
4. 将选中的方法应用到内容上进行增强
5. 重新呈现选项,反复迭代改进,直到你选择"继续"
**输入:** 待增强的内容段落
**输出:** 应用改进后的增强版内容
## bmad-review-adversarial-general
**预设问题存在,然后去找出来的挑刺式审查。** — 以怀疑、挑剔的审查者视角,对粗糙工作零容忍。重点找遗漏,而不只是找错误。
**适用场景:**
- 在交付物定稿前需要质量保证
- 想对规格、用户故事或文档进行压力测试
- 想找到乐观审查容易忽略的覆盖盲区
**工作原理:**
1. 以挑剔、批判的视角阅读内容
2. 从完整性、正确性和质量三个维度识别问题
3. 专门寻找遗漏的内容——不只是已有内容中的错误
4. 至少找出 10 个问题,否则进行更深层分析
**输入:**
- `content`(必填)— diff、规格、用户故事、文档或任意产出物
- `also_consider`(可选)— 需要额外关注的领域
**输出:** 包含 10+ 条发现及描述的 Markdown 列表
## bmad-review-edge-case-hunter
**遍历每条分支路径和边界条件,只报告未处理的情况。** — 纯路径追踪方法论,机械地推导边界类别。与对抗式审查正交——靠方法驱动,而非靠态度驱动。
**适用场景:**
- 想对代码或逻辑做穷举式边界覆盖
- 需要与对抗式审查互补(不同方法论,不同发现)
- 正在审查 diff 或函数的边界条件
**工作原理:**
1. 枚举内容中所有分支路径
2. 机械推导边界类别:缺失的 else/default、未防护的输入、差一错误、算术溢出、隐式类型转换、竞态条件、超时间隙
3. 逐条路径检查现有防护
4. 只报告未处理的路径——已处理的静默丢弃
**输入:**
- `content`(必填)— diff、完整文件或函数
- `also_consider`(可选)— 需要额外关注的领域
**输出:** JSON 数组,每条发现包含 `location`、`trigger_condition`、`guard_snippet` 和 `potential_consequence`
:::note[互补审查]
同时运行 `bmad-review-adversarial-general``bmad-review-edge-case-hunter` 可获得正交覆盖。对抗式审查捕捉质量和完整性问题;边界猎手捕捉未处理的路径。
:::
## bmad-editorial-review-prose
**聚焦表达清晰度的临床式文案编辑。** — 审查文本中阻碍理解的问题,以 Microsoft 写作风格指南为基准,保留作者个人风格。
**适用场景:**
- 写完初稿想打磨文字
- 需要确保内容对特定受众足够清晰
- 只想修表达问题,不想改写风格偏好
**工作原理:**
1. 阅读内容,跳过代码块和 frontmatter
2. 识别表达问题(不是风格偏好)
3. 对多处出现的相同问题去重
4. 生成三列修改表
**输入:**
- `content`(必填)— Markdown、纯文本或 XML
- `style_guide`(可选)— 项目特定的写作风格指南
- `reader_type`(可选)— `humans`(默认)注重清晰流畅,`llm` 注重精确一致
**输出:** 三列 Markdown 表格:原文 | 修改后 | 变更说明
## bmad-editorial-review-structure
**结构编辑——提出裁剪、合并、移动和精简建议。** — 审查文档组织结构,在文案编辑之前提出实质性调整建议,以改善清晰度和阅读流畅性。
**适用场景:**
- 文档由多个子流程产出,需要结构上的连贯性
- 想在保持可读性的前提下缩减文档篇幅
- 需要识别范围越界或关键信息被埋没的情况
**工作原理:**
1. 将文档与 5 种结构模型对照分析(教程、参考、解释、提示词、战略)
2. 识别冗余、范围越界和被埋没的信息
3. 生成优先级排序的建议:裁剪、合并、移动、精简、质疑、保留
4. 估算总缩减字数和百分比
**输入:**
- `content`(必填)— 待审查的文档
- `purpose`(可选)— 预期用途(如 "quickstart tutorial"
- `target_audience`(可选)— 目标读者
- `reader_type`(可选)— `humans``llm`
- `length_target`(可选)— 目标缩减量(如 "30% shorter"
**输出:** 文档摘要、优先级排序的建议列表,以及预估缩减量
## bmad-shard-doc
**将大型 Markdown 文件拆分为有序的章节文件。** — 以二级标题为分割点,创建一个包含独立章节文件和索引的文件夹。
**适用场景:**
- Markdown 文档过大难以有效管理500+ 行)
- 想把单体文档拆分成可导航的章节
- 需要独立文件以支持并行编辑或 LLM 上下文管理
**工作原理:**
1. 验证源文件存在且是 Markdown 格式
2. 按二级(`##`)标题分割为编号章节文件
3. 创建 `index.md`,包含章节清单和链接
4. 提示你选择删除、归档还是保留原文件
**输入:** 源 Markdown 文件路径,可选目标文件夹
**输出:** 包含 `index.md``01-{section}.md`、`02-{section}.md` 等文件的文件夹
## bmad-index-docs
**生成或更新文件夹中所有文档的索引。** — 扫描目录,读取每个文件以理解其用途,生成一份带链接和描述的有序 `index.md`
**适用场景:**
- 需要一个轻量索引供 LLM 快速扫描可用文档
- 文档文件夹不断增长,需要一个有序的目录
- 想要一份自动生成、能持续保持最新的概览
**工作原理:**
1. 扫描目标目录中所有非隐藏文件
2. 读取每个文件以理解其实际用途
3. 按类型、用途或子目录分组
4. 生成简洁描述(每条 3-10 个词)
**输入:** 目标文件夹路径
**输出:** `index.md`,包含有序的文件列表、相对链接和简要描述

View File

@ -2,9 +2,6 @@
# File References
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
# Task References
advancedElicitationTask: 'skill:bmad-advanced-elicitation'
partyModeWorkflow: '{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md'
---
# Step 2: Product Vision Discovery
@ -153,8 +150,8 @@ Prepare the following structure for document append:
#### Menu Handling Logic:
- IF A: Read fully and follow: {advancedElicitationTask} with current vision content to dive deeper and refine
- IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to positioning and differentiation
- IF A: Invoke the `bmad-advanced-elicitation` skill with current vision content to dive deeper and refine
- IF P: Invoke the `bmad-party-mode` skill to bring different perspectives to positioning and differentiation
- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2], then read fully and follow: ./step-03-users.md
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-menu-options)

View File

@ -2,9 +2,6 @@
# File References
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
# Task References
advancedElicitationTask: 'skill:bmad-advanced-elicitation'
partyModeWorkflow: '{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md'
---
# Step 3: Target Users Discovery
@ -156,8 +153,8 @@ Prepare the following structure for document append:
#### Menu Handling Logic:
- IF A: Read fully and follow: {advancedElicitationTask} with current user content to dive deeper into personas and journeys
- IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to validate user understanding
- IF A: Invoke the `bmad-advanced-elicitation` skill with current user content to dive deeper into personas and journeys
- IF P: Invoke the `bmad-party-mode` skill to bring different perspectives to validate user understanding
- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3], then read fully and follow: ./step-04-metrics.md
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#6-present-menu-options)

View File

@ -2,9 +2,6 @@
# File References
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
# Task References
advancedElicitationTask: 'skill:bmad-advanced-elicitation'
partyModeWorkflow: '{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md'
---
# Step 4: Success Metrics Definition
@ -159,8 +156,8 @@ Prepare the following structure for document append:
#### Menu Handling Logic:
- IF A: Read fully and follow: {advancedElicitationTask} with current metrics content to dive deeper into success metric insights
- IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to validate comprehensive metrics
- IF A: Invoke the `bmad-advanced-elicitation` skill with current metrics content to dive deeper into success metric insights
- IF P: Invoke the `bmad-party-mode` skill to bring different perspectives to validate comprehensive metrics
- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3, 4], then read fully and follow: ./step-05-scope.md
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-menu-options)

View File

@ -2,9 +2,6 @@
# File References
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
# Task References
advancedElicitationTask: 'skill:bmad-advanced-elicitation'
partyModeWorkflow: '{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md'
---
# Step 5: MVP Scope Definition
@ -173,8 +170,8 @@ Prepare the following structure for document append:
#### Menu Handling Logic:
- IF A: Read fully and follow: {advancedElicitationTask} with current scope content to optimize scope definition
- IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to validate MVP scope
- IF A: Invoke the `bmad-advanced-elicitation` skill with current scope content to optimize scope definition
- IF P: Invoke the `bmad-party-mode` skill to bring different perspectives to validate MVP scope
- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3, 4, 5], then read fully and follow: ./step-06-complete.md
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-menu-options)

View File

@ -5,8 +5,6 @@ description: 'Discovery & Understanding - Understand what user wants to edit and
# File references (ONLY variables used in this step)
altStepFile: './step-e-01b-legacy-conversion.md'
prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md'
advancedElicitationTask: 'skill:bmad-advanced-elicitation'
partyModeWorkflow: '{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md'
---
# Step E-1: Discovery & Understanding

View File

@ -7,7 +7,6 @@ nextStepFile: './step-e-03-edit.md'
prdFile: '{prd_file_path}'
validationReport: '{validation_report_path}' # If provided
prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md'
advancedElicitationTask: 'skill:bmad-advanced-elicitation'
---
# Step E-2: Deep Review & Analysis
@ -220,8 +219,8 @@ Read fully and follow: {nextStepFile} (step-e-03-edit.md)
#### Menu Handling Logic:
- IF A: Read fully and follow: {advancedElicitationTask}, then return to discussion
- IF P: Read fully and follow: {partyModeWorkflow}, then return to discussion
- IF A: Invoke the `bmad-advanced-elicitation` skill, then return to discussion
- IF P: Invoke the `bmad-party-mode` skill, then return to discussion
- IF C: Document approval, then load {nextStepFile}
- IF Any other: discuss, then redisplay menu

View File

@ -4,8 +4,6 @@ description: 'Document Discovery & Confirmation - Handle fresh context validatio
# File references (ONLY variables used in this step)
nextStepFile: './step-v-02-format-detection.md'
advancedElicitationTask: 'skill:bmad-advanced-elicitation'
partyModeWorkflow: '{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md'
prdPurpose: '../data/prd-purpose.md'
---
@ -195,8 +193,8 @@ Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Conti
#### Menu Handling Logic:
- IF A: Read fully and follow: {advancedElicitationTask}, and when finished redisplay the menu
- IF P: Read fully and follow: {partyModeWorkflow}, and when finished redisplay the menu
- IF A: Invoke the `bmad-advanced-elicitation` skill, and when finished redisplay the menu
- IF P: Invoke the `bmad-party-mode` skill, and when finished redisplay the menu
- IF C: Read fully and follow: {nextStepFile} to begin format detection
- IF user provides additional document: Load it, update report, redisplay summary
- IF Any other: help user, then redisplay menu

View File

@ -6,7 +6,6 @@ description: 'Holistic Quality Assessment - Assess PRD as cohesive, compelling d
nextStepFile: './step-v-12-completeness-validation.md'
prdFile: '{prd_file_path}'
validationReportPath: '{validation_report_path}'
advancedElicitationTask: 'skill:bmad-advanced-elicitation'
---
# Step 11: Holistic Quality Assessment
@ -67,8 +66,8 @@ Assess the PRD as a cohesive, compelling document - evaluating document flow, du
"Perform holistic quality assessment on this PRD using multi-perspective evaluation:
**Read fully and follow the Advanced Elicitation workflow:**
{advancedElicitationTask}
**Advanced Elicitation workflow:**
Invoke the `bmad-advanced-elicitation` skill
**Evaluate the PRD from these perspectives:**

View File

@ -4,8 +4,6 @@ description: 'Document Discovery & Confirmation - Handle fresh context validatio
# File references (ONLY variables used in this step)
nextStepFile: './step-v-02-format-detection.md'
advancedElicitationTask: 'skill:bmad-advanced-elicitation'
partyModeWorkflow: '{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md'
prdPurpose: '../data/prd-purpose.md'
---
@ -195,8 +193,8 @@ Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Conti
#### Menu Handling Logic:
- IF A: Read fully and follow: {advancedElicitationTask}, and when finished redisplay the menu
- IF P: Read fully and follow: {partyModeWorkflow}, and when finished redisplay the menu
- IF A: Invoke the `bmad-advanced-elicitation` skill, and when finished redisplay the menu
- IF P: Invoke the `bmad-party-mode` skill, and when finished redisplay the menu
- IF C: Read fully and follow: {nextStepFile} to begin format detection
- IF user provides additional document: Load it, update report, redisplay summary
- IF Any other: help user, then redisplay menu

View File

@ -6,7 +6,6 @@ description: 'Holistic Quality Assessment - Assess PRD as cohesive, compelling d
nextStepFile: './step-v-12-completeness-validation.md'
prdFile: '{prd_file_path}'
validationReportPath: '{validation_report_path}'
advancedElicitationTask: 'skill:bmad-advanced-elicitation'
---
# Step 11: Holistic Quality Assessment
@ -67,8 +66,8 @@ Assess the PRD as a cohesive, compelling document - evaluating document flow, du
"Perform holistic quality assessment on this PRD using multi-perspective evaluation:
**Read fully and follow the Advanced Elicitation workflow:**
{advancedElicitationTask}
**Advanced Elicitation workflow:**
Invoke the `bmad-advanced-elicitation` skill
**Evaluate the PRD from these perspectives:**

View File

@ -30,8 +30,8 @@ This step will generate content and present choices for each rule category:
## PROTOCOL INTEGRATION:
- When 'A' selected: Execute skill:bmad-advanced-elicitation
- When 'P' selected: Execute {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md
- When 'A' selected: Invoke the `bmad-advanced-elicitation` skill
- When 'P' selected: Invoke the `bmad-party-mode` skill
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
- User accepts/rejects protocol changes before proceeding
@ -268,7 +268,7 @@ After each category, show the generated rules and present choices:
#### If 'A' (Advanced Elicitation):
- Execute skill:bmad-advanced-elicitation with current category rules
- Invoke the `bmad-advanced-elicitation` skill with current category rules
- Process enhanced rules that come back
- Ask user: "Accept these enhanced rules for {{category}}? (y/n)"
- If yes: Update content, then return to A/P/C menu
@ -276,7 +276,7 @@ After each category, show the generated rules and present choices:
#### If 'P' (Party Mode):
- Execute party-mode workflow with category rules context
- Invoke the `bmad-party-mode` skill with category rules context
- Process collaborative insights on implementation patterns
- Ask user: "Accept these changes to {{category}} rules? (y/n)"
- If yes: Update content, then return to A/P/C menu

View File

@ -85,7 +85,7 @@ Display: "**Select:** [P] Plan first (tech-spec) [E] Execute directly"
#### Menu Handling Logic:
- IF P: Direct user to `{quick_spec_workflow}`. **EXIT Quick Dev.**
- IF P: Direct user to invoke the `bmad-quick-spec` skill. **EXIT Quick Dev.**
- IF E: Ask for any additional guidance, then **NEXT:** Read fully and follow: `./step-02-context-gathering.md`
#### EXECUTION RULES:
@ -107,7 +107,7 @@ Display:
#### Menu Handling Logic:
- IF P: Direct to `{quick_spec_workflow}`. **EXIT Quick Dev.**
- IF P: Direct user to invoke the `bmad-quick-spec` skill. **EXIT Quick Dev.**
- IF W: Direct user to run the PRD workflow instead. **EXIT Quick Dev.**
- IF E: Ask for guidance, then **NEXT:** Read fully and follow: `./step-02-context-gathering.md`
@ -130,7 +130,7 @@ Display:
#### Menu Handling Logic:
- IF P: Direct to `{quick_spec_workflow}`. **EXIT Quick Dev.**
- IF P: Direct user to invoke the `bmad-quick-spec` skill. **EXIT Quick Dev.**
- IF W: Direct user to run the PRD workflow instead. **EXIT Quick Dev.**
- IF E: Ask for guidance, then **NEXT:** Read fully and follow: `./step-02-context-gathering.md`

View File

@ -31,12 +31,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
- `project_context` = `**/project-context.md` (load if exists)
### Related Workflows
- `quick_spec_workflow` = `skill:bmad-quick-spec`
- `party_mode_exec` = `{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md`
- `advanced_elicitation` = `skill:bmad-advanced-elicitation`
---
## EXECUTION

View File

@ -161,8 +161,8 @@ b) **HALT and wait for user selection.**
#### Menu Handling Logic:
- IF A: Read fully and follow: `{advanced_elicitation}` with current tech-spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu
- IF P: Read fully and follow: `{party_mode_exec}` with current tech-spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu
- IF A: Invoke the `bmad-advanced-elicitation` skill with current tech-spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu
- IF P: Invoke the `bmad-party-mode` skill with current tech-spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu
- IF C: Verify `{wipFile}` has `stepsCompleted: [1]`, then read fully and follow: `./step-02-investigate.md`
- IF Any other comments or queries: respond helpfully then redisplay menu

View File

@ -116,8 +116,8 @@ Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Ge
#### Menu Handling Logic:
- IF A: Read fully and follow: `{advanced_elicitation}` with current tech-spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu
- IF P: Read fully and follow: `{party_mode_exec}` with current tech-spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu
- IF A: Invoke the `bmad-advanced-elicitation` skill with current tech-spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu
- IF P: Invoke the `bmad-party-mode` skill with current tech-spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu
- IF C: Verify frontmatter updated with `stepsCompleted: [1, 2]`, then read fully and follow: `./step-03-generate.md`
- IF Any other comments or queries: respond helpfully then redisplay menu

View File

@ -48,8 +48,8 @@ Display: "**Select:** [C] Continue [E] Edit [Q] Questions [A] Advanced Elicitati
- IF C: Proceed to Section 3 (Finalize the Spec)
- IF E: Proceed to Section 2 (Handle Review Feedback), then return here and redisplay menu
- IF Q: Answer questions, then redisplay this menu
- IF A: Read fully and follow: `{advanced_elicitation}` with current spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu
- IF P: Read fully and follow: `{party_mode_exec}` with current spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu
- IF A: Invoke the `bmad-advanced-elicitation` skill with current spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu
- IF P: Invoke the `bmad-party-mode` skill with current spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu
- IF Any other comments or queries: respond helpfully then redisplay menu
#### EXECUTION RULES:
@ -134,10 +134,10 @@ b) **HALT and wait for user selection.**
#### Menu Handling Logic:
- IF A: Read fully and follow: `{advanced_elicitation}` with current spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu
- IF A: Invoke the `bmad-advanced-elicitation` skill with current spec content, process enhanced insights, ask user "Accept improvements? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu
- IF B: Invoke the `bmad-quick-dev` skill with `{finalFile}` in a fresh context if possible (warn: fresh context is better)
- IF D: Exit workflow - display final confirmation and path to spec
- IF P: Read fully and follow: `{party_mode_exec}` with current spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu
- IF P: Invoke the `bmad-party-mode` skill with current spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu
- IF R: Execute Adversarial Review (see below)
- IF Any other comments or queries: respond helpfully then redisplay menu

View File

@ -1,9 +1,6 @@
---
main_config: '{project-root}/_bmad/bmm/config.yaml'
# Checkpoint handler references
advanced_elicitation: 'skill:bmad-advanced-elicitation'
party_mode_exec: '{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md'
---
# Quick-Spec Workflow

View File

@ -1,7 +1,7 @@
# Step 3: Interactive Technique Execution and Facilitation
---
advancedElicitationTask: 'skill:bmad-advanced-elicitation'
---
## MANDATORY EXECUTION RULES (READ FIRST):
@ -303,7 +303,7 @@ After final technique element:
#### If 'K', 'T', 'A', or 'B' (Continue Exploring):
- **Stay in Step 3** and restart the facilitation loop for the chosen path (or pause if break requested).
- For option A, invoke Advanced Elicitation: `{advancedElicitationTask}`
- For option A: Invoke the `bmad-advanced-elicitation` skill
### 9. Update Documentation

View File

@ -44,8 +44,6 @@ Load config from `{project-root}/_bmad/core/config.yaml` and resolve:
All steps MUST reference `{brainstorming_session_output_file}` instead of the full path pattern.
- `context_file` = Optional context file path from workflow invocation for project-specific guidance
- `advancedElicitationTask` = `skill:bmad-advanced-elicitation`
---
## EXECUTION

View File

@ -142,7 +142,7 @@ Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue - Sav
#### Menu Handling Logic:
- IF A: Invoke the `bmad-advanced-elicitation` skill, and when finished redisplay the menu
- IF P: Read fully and follow: `{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md` and when finished redisplay the menu
- IF P: Invoke the `bmad-party-mode` skill, and when finished redisplay the menu
- IF C: Save content to {outputFile}, update frontmatter, then read fully and follow: ./step-06-innovation.md
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#n-present-menu-options)

View File

@ -267,9 +267,11 @@ class Manifest {
* @param {Object} options - Optional version info
*/
async addModule(bmadDir, moduleName, options = {}) {
const manifest = await this._readRaw(bmadDir);
let manifest = await this._readRaw(bmadDir);
if (!manifest) {
throw new Error('No manifest found');
// Bootstrap a minimal manifest if it doesn't exist yet
// (e.g., skill-only modules with no agents to compile)
manifest = { modules: [] };
}
if (!manifest.modules) {

View File

@ -100,10 +100,10 @@ If no findings are generated, the skill passes validation.
- **Rule:** Every variable defined in workflow.md frontmatter must be either:
- A config variable (value references `{project-root}` or a config-derived variable like `{planning_artifacts}`)
- A runtime variable (value is empty, a placeholder, or set during execution)
- A legitimate external path expression
- A legitimate external path expression (must not violate PATH-05 — no paths into another skill's directory)
It must NOT be a path to a file within the skill directory.
- **Detection:** For each frontmatter variable, check if its value resolves to a file inside the skill (e.g., starts with `./`, `{installed_path}`, or is a bare relative path to a sibling file). If so, it is an intra-skill path variable.
It must NOT be a path to a file within the skill directory (see PATH-04), nor a path into another skill's directory (see PATH-05).
- **Detection:** For each frontmatter variable, check if its value resolves to a file inside the skill (e.g., starts with `./`, `{installed_path}`, or is a bare relative path to a sibling file). If so, it is an intra-skill path variable. Also check if the value is a path into another skill's directory — if so, it violates PATH-05 and is not a legitimate external path.
- **Fix:** Remove the variable. Use a hardcoded relative path inline where the file is referenced.
---
@ -145,6 +145,20 @@ If no findings are generated, the skill passes validation.
- **Detection:** Identify file references that point outside the skill. Verify they start with `{project-root}` or a known config variable. Flag absolute paths, home-relative paths (`~/`), or bare paths that resolve outside the skill.
- **Fix:** Replace with `{project-root}/...` or the appropriate config variable.
### PATH-05 — No File Path References Into Another Skill
- **Severity:** HIGH
- **Applies to:** all files in the skill
- **Rule:** A skill must never reference any file inside another skill's directory by file path. Skill directories are encapsulated — their internal files (steps, templates, checklists, data files, workflow.md) are private implementation details. The only valid way to reference another skill is via `skill:skill-name` syntax, which invokes the skill as a unit. Reaching into another skill to cherry-pick an internal file (e.g., a template, a step, or even its workflow.md) breaks encapsulation and creates fragile coupling that breaks when the target skill is moved or reorganized.
- **Detection:** For each external file reference (frontmatter values, markdown links, inline paths), check whether the resolved path points into a directory that is or contains a skill (has a `SKILL.md`). Patterns to flag:
- `{project-root}/_bmad/.../other-skill/anything.md`
- `{project-root}/_bmad/.../other-skill/steps/...`
- `{project-root}/_bmad/.../other-skill/templates/...`
- References to old pre-conversion locations that were skill directories (e.g., `core/workflows/skill-name/` when the skill has since moved to `core/skills/skill-name/`)
- **Fix:**
- If the intent is to invoke the other skill: replace with `skill:skill-name`.
- If the intent is to use a shared resource (template, data file): the resource should be extracted to a shared location outside both skills (e.g., `core/data/`, `bmm/data/`, or a config-referenced path) — not reached into from across skill boundaries.
### PATH-04 — No Intra-Skill Path Variables
- **Severity:** MEDIUM
@ -256,6 +270,14 @@ If no findings are generated, the skill passes validation.
- **Detection:** For internal references, verify the target file exists in the skill directory. For external references using config variables, verify the path structure is plausible (you cannot resolve config variables, but you can check that the path after the variable looks reasonable — e.g., `{planning_artifacts}/*.md` is plausible, `{planning_artifacts}/../../etc/passwd` is not).
- **Fix:** Correct the path or remove the dead reference.
### REF-03 — Skill Invocation Must Use "Invoke" Language
- **Severity:** HIGH
- **Applies to:** all files
- **Rule:** When a skill references another skill via `skill:skill-name`, the surrounding instruction must use the word "invoke" (e.g., `Invoke skill:bmad-party-mode`). Phrases like "Read fully and follow", "Execute", "Run", "Load", "Open", or "Follow" are invalid — they imply file-level operations on a document, not skill invocation. A skill is a unit that is invoked, not a file that is read.
- **Detection:** Find all `skill:` references in body text and frontmatter. Check the surrounding instruction text (same sentence or directive) for file-oriented verbs: "read", "follow", "load", "execute", "run", "open". Flag any that do not use "invoke" (or a close synonym like "activate" or "launch").
- **Fix:** Replace the instruction with `Invoke skill:skill-name` or `Invoke the \`skill-name\` skill`. Remove any "read fully and follow" or similar file-oriented phrasing.
---
## Report Template