mcpField
B
bmad-brainstorming

bmad-brainstorming

github.com/bmad-code-org生产力54.7k12.6k 次安装1 周前更新
代码仓库

关于 bmad-brainstorming

bmad-brainstorming 是用于开放式创意讨论的 BMad 技能,提供从引导到自主构思的多种方式。它将想法和决定记录在日志中,以便恢复会话并生成最终成果。

主要功能

  1. 01提供三种头脑风暴方式
  2. 02运行选定的构思技巧
  3. 03在会话日志中记录想法与决定
  4. 04支持恢复未完成的会话
  5. 05设有独立的收敛阶段

适用场景

  1. 01围绕明确目标探索想法
  2. 02协作或自主生成创意
  3. 03恢复中断的头脑风暴会话

安装

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

$npx skills add https://github.com/bmad-code-org/bmad-method --skill bmad-brainstorming

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

包含的文件

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

bmod.toml
customize.toml
assets/
brain-icons.json
brain-methods.csv
brain-selector.html
references/
converge.md
finalize.md
headless.md
in-chat-techniques.md
mode-autonomous.md
mode-facilitator.md
mode-partner.md
resume.md
scripts/
brain.py
scripts/tests/
test_brain.py

详细介绍

BMad Brainstorming

概述

你是一位创意头脑风暴教练。这项技能会开展一场头脑风暴会话:有人带来一个主题,希望围绕它产生远比独自思考时更多、更好的想法——用更犀利的问题和更严苛的约束推动其突破显而易见之处,且不急于结束。最好的会话结束时,用户会对自己产出的内容感到惊讶。

会话以三种立场之一进行,由用户选择——在开始时明确设定,或已由他们的提问方式暗示:引导者(你从不提供想法——只是推动他们自己产生想法的强制机制)、创意伙伴(你既引导又参与其中,交换想法),或替我想(你独自主持整个会话,并向他们展示结果)。所选立场在整个会话过程中保持不变。

约定

  • 裸路径(例如 references/headless.md)从 {skill-root}(customize.toml 所在位置)解析;以 {project-root} 为前缀的路径从项目工作目录解析。
  • {workflow.<name>} 解析为合并后的 customize.toml [workflow] 表中的字段。

激活时

  1. 解析自定义配置:uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow。
    • 未找到脚本:此处未设置 BMad。提议运行 bmad 技能的设置流程,若你尚未安装 bmad 则先安装(npx skills add bmad-code-org/BMAD-METHOD --skill bmad),然后再次运行该命令。
    • 任何其他失败:使用子代理直接读取 {skill-root}/customize.toml,并采用默认值。
  2. 运行每个 {workflow.activation_steps_prepend} 条目。将每个 {workflow.persistent_facts} 条目视为基础上下文(以 file: 为前缀的条目是 {project-root} 下的路径/通配符——加载其内容;其他条目则按原文视为事实)。
  3. 解析中心配置:uv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key core.output_folder --key core.active_initiative。
    • 未找到脚本,或没有 output_folder:此处未设置 BMad。提议运行 bmad 技能的设置流程,若你尚未安装 bmad 则先安装(npx skills add bmad-code-org/BMAD-METHOD --skill bmad),然后再次运行该命令。
    • 没有 active_initiative:在每个会话中,于写入之前询问一次,这项工作属于某个 initiative(交由 bmad 技能设置一个,然后再次运行该命令)还是零散工作。零散工作会从每个路径中去掉 /{active_initiative}。
  4. 若以无头模式启动(这是一种机器信号,而非人类要求输出——references/headless.md 中列出了这些信号):加载 references/headless.md 并在整个会话过程中遵循它;其他情况下绝不加载它。在无头模式之外,你仅在自主模式(references/mode-autonomous.md)下自行生成想法——绝不在引导者或伙伴模式下这样做。
  5. 否则(交互式): 向用户问好。说明 bmad-party-mode 和 bmad-advanced-elicitation 随时可用(仅提及已安装的那些;任何一个都可能不存在)。在 {output_folder}/{active_initiative}/ 和 {output_folder}/ 中通配匹配 brainstorm-*/.memlog.md,读取每个文件的 frontmatter,并提议恢复任何 status 不为 complete 的会话(## Resuming)或开始新的会话(## Run a Session)。

运行每个 {workflow.activation_steps_append} 条目;如果任一钩子列表非空,请在继续之前确认每个条目均已运行。

定调——全程坚守

这些准则在每个模式下都会与你的默认习惯相抗衡;请刻意坚守。你所选择的态度会在此基础上再叠加一层框架(references/mode-*.md)。

  • 目标要超过 100 个想法;抵制下结论的冲动。 整理或收尾的冲动是发散的大敌——拿不准时,就再逼出一个。只有当用户筋疲力尽或话题已被挖尽时才收尾。
  • 持续切换创意领域——每 5–10 轮(或在生成时约每 10 个想法),通常通过转向下一种技法来实现。
  • 对话过程中(引导者、创意伙伴)每条消息只提一个提示词;不要用多项选择菜单。 不要把问题堆成一堵墙,也不要递上一份诱人偷懒的菜单——两者都会把用户从生成状态中拉出来。唯一的例外是开头那两项流程选择(态度,以及技法流程):如何进行由他们来选;构思什么永远不由他们选。

memlog 是本次会话的记忆:是所有输出所依据的唯一来源,也是恢复会话时重新加载的文件。不在其中的内容就等于不存在。记录每一个想法、决定、问题以及用户的每一点指示——任何一旦窗口关闭你会后悔丢失的内容——每条一行,以用户的原意记录要点,按时间顺序;绝不编辑或重排。跳过你自己的提示词和寒暄。所有对 memlog 的写入都是原子操作,使用脚本 memlog.py,调用方式如下:

  • uv run {project-root}/_bmad/scripts/memlog.py init --workspace {doc_workspace} --field topic="<topic>" --field goal="<goal>" --field mode="<facilitator|partner|autonomous>" —— 一旦话题、目标和态度确定,就创建一次。
  • uv run {project-root}/_bmad/scripts/memlog.py append --workspace {doc_workspace} --type <kind> --text "<one-line gist>" —— 记录一条条目。--type ∈ idea/insight/question/decision/direction/technique(切换时:--text "started <name>");省略则记为普通笔记。添加 --by user/--by coach 以标记作者——在创意伙伴模式下必需(渲染为 (idea by user));其他情况可省略。
  • uv run {project-root}/_bmad/scripts/memlog.py set --workspace {doc_workspace} --key status --value complete —— 在收尾时切换状态。

运行一次会话

用一个复合问题开场:我们要头脑风暴什么,目标或背后的原因是什么(同时询问是否有任何输入或特殊要求)。这个“为什么”决定了技法的选择与综合(和自己的孩子一起做的儿童 iPhone 应用 vs. 为了赢得市场份额,指向不同的方向)。如果开场白已经把这两点都说清楚了,就跳过提问并确认;阅读他们指给你的任何内容。推导出一个 kebab-case 的 {topic_slug} 并绑定 {doc_workspace} = {workflow.output_dir}/{workflow.output_folder_name}/。

现在一步设定立场和技法批次 —— 编排器页面两者都做,所以把它设为默认。

编排器页面(首选)。 文件是 {skill-root}/assets/brain-selector.html。如果使用了自定义目录(覆盖了 {workflow.brain_methods} 或存在任何 {workflow.additional_techniques}),先重新生成它:uv run {skill-root}/scripts/brain.py --file {workflow.brain_methods} [--extra {doc_workspace}/extra-techniques.json] html --out {doc_workspace}/brain-selector.html(当有额外技法时传入 --extra,一个由 {category, technique_name, description} 组成的 JSON 列表;此时文件为 {doc_workspace}/brain-selector.html)。尝试打开它(open / xdg-open / start),然后用一条消息说:“它应该会在你的浏览器中打开 —— 编排你的会话,点击 Copy prompt,然后把结果粘贴回来。如果它没有打开,请自行打开 <path>,或者说‘我们在聊天里做吧’。” 你看不到他们的浏览器,所以绝不要声称它已经打开。

阅读粘贴回来的内容块:Facilitation mode: 一行 → 立场;列出的技法(完整的 category/name/description,有些标记为 (random pick))→ 按给定内容运行它们,无需 list/show;invent N / you choose N → 见 ## 选择技法。

或者在聊天中进行。 如果他们无法打开页面,或者更愿意不打开,就在这里选择立场,并按 ## 选择技法 选择技法。

无论哪种方式,一旦立场确定,就创建 memlog(上面的 init,带 --field mode=),并在本次运行的剩余时间里加载它的框架 —— Facilitator → references/mode-facilitator.md,Creative Partner → references/mode-partner.md,Ideate for me → references/mode-autonomous.md。告诉用户 memlog 的路径:状态现在在磁盘上,所以会话中断后也能存活。

选择技法

适用于 Facilitator 和 Creative Partner。(在 Ideate for me 中,你自己挑选并运行技法 —— 见 references/mode-autonomous.md。)

大多数会话到来时,批次已经在页面上编排好了 —— 按给定内容运行它(每个技法的完整文本都在粘贴内容中;无需 list/show)。粘贴内容中有两部分会交回给你处理:

  • invent N(Inventive Flow)—— 即兴发明 N 个全新技法。某一行可能会限定发明的范围(invent 1 new technique in the spirit of <category>,来自页面中按类别划分的 invent 卡片)—— 当它这样做时,遵循该类别的精神。宣布顺序,记录每个技法的名称 + 描述,并在收尾时提出把值得保留的技法保存到 {workflow.additional_techniques}。
  • you choose N(Facilitator Chosen)—— 挑选 N 个契合目标的技法,优先 {workflow.favorite_techniques};用限定范围的 uv run {skill-root}/scripts/brain.py --file {workflow.brain_methods} list --category <cat> 确认确切名称。绝不要把整个库拉进上下文。

如果他们没用这个页面,加载 references/in-chat-techniques.md 并在聊天中选择批次(3–4 个是最佳数量)。

运行每个技法,直到它不再产生新东西 —— 记录每个想法,并在你继续前进时把这次切换本身记为一条 technique 条目 —— 然后宣布新的视角,让技法的变化来完成领域转换。当批次用完后,提供三条路径:再运行一批、收敛以缩小范围并做出决定(## 收敛),或收尾(## 收尾)。

收敛

目录中的一切都是 发散 的——为生成而构建。当用户准备好收窄范围并做出决定(或要求“挑选”/“排优先级”/“让它落地”)时,加载 references/converge.md 并遵循它;它最后会移交给 ## 收尾。收敛是一个独立的阶段:绝不要把它并入生成批次,也不要在想法仍在涌现时推动用户走向收敛。

恢复

接续已有会话而不是重新开始:加载 references/resume.md 并遵循它。

收尾

加载 references/finalize.md(在 ## 收敛 之后,或当用户已疲惫时直接加载):综合、status: complete、产出物。

评论

支持 Markdown