营销增长
需要为 Beat 变更生成规范制品时:按流程创建…
在开始一个 Beat change 并需要产出规范制品(proposal、gherkin、design)时使用,不负责任务拆分、实现或探索。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
需要为 Beat 变更生成规范制品时:按特定
解决思路
- HARD-GATE:在写任何 artifact 文件前,必须调用 `superpowers:using-git-worktrees`。
- HARD-GATE:当 artifact 选择包含 proposal 或 design 时,必须在生成内容前调用 `superpowers:brainstorming`,即使范围看起来明显。
- HARD-GATE:在写 gherkin 场景前,必须运行四挑战 `CONTEXT.md` 检查,并确保场景中每个项目特定术语都定义在 `beat/CONTEXT.md`;词汇表惰性创建,只在添加第一个术语时创建。
- HARD-GATE:写每个 artifact 后,必须运行四检查 spec 自审(placeholder / consistency / scope / ambiguity),并内联修复问题。
- HARD-GATE:写 `design.md` 时,对每个 Key Decision 必须运行三条件 ADR gate(hard-to-reverse + surprising + real trade-off);当三者都成立时,提供将决策提升为新 ADR 到 `docs/adr/`,用户可拒绝。
- HARD-GATE 调用顺序:先 worktrees 隔离,再 brainstorming 设计。
- 如果前置技能不可用(未安装),继续 fallback,但绝不因为判断不需要而跳过。
- 前置技能:在首次文件写入前调用 `superpowers:using-git-worktrees`(MUST)。
- 前置技能:在创建 proposal 或 design 前调用 `superpowers:brainstorming`(MUST)。
- 前置技能:当 `CONTEXT.md` 歧义复杂到需要完整 grilling 会话时,可选调用 `mattpocock-skills:grill-with-docs`(OPTIONAL)。
- 如果前置技能不可用(未安装),跳过并继续。对于可选技能,适用时提供调用;如果用户拒绝或未安装,继续内联四挑战检查。
- 如果未提供清晰输入,使用 AskUserQuestion tool 询问用户想构建什么,并从描述派生 kebab-case 名称。
- 确定 change 名称;在创建任何文件前调用 `using-git-worktrees` 隔离此 change。
- 如果 `beat/changes/<name>/` 不存在,创建它(目录 + `status.yaml` + `features/.gitkeep`)。
- 如果 `beat/changes/<name>/` 已存在,使用它,并读取 `status.yaml`(schema: `references/status-schema.md`)以查找剩余 artifacts。
- 读取 `status.yaml`;对于仍为 `pending` 的 artifacts,一次性用 AskUserQuestion tool 询问用户要包含哪些 spec artifacts。
- 提供选项:1. Full: Proposal + Gherkin + Design(推荐大型功能);2. Standard: Proposal + Gherkin(推荐中型功能);3. Minimal: Gherkin only(推荐小型 bug 修复);4. Technical: Proposal only, no Gherkin(用于无行为变更的工具/基础设施/重构变更);5. Custom: 逐个选择。
- 在 `status.yaml` 中将跳过的 artifacts 标记为 `skipped`。
- 始终将 Tasks 设为 `pending`——任务分解在 `/beat:plan` 中进行。
- 每次创建后,将 `phase` 更新为匹配最新完成的 spec artifact。
- 按 pipeline 顺序创建 artifacts:proposal -> gherkin -> design。
- 如果存在 `beat/config.yaml`,读取它(schema: `references/config-schema.md`);使用 `language` 作为 artifact 输出语言,注入 `context`,并按 artifact 类型应用匹配的 `rules`。
- 对每个要创建的 artifact,先读取所有已完成 artifacts 作为上下文。
- 按前置技能表调用前置技能:在 proposal/design 前调用 `superpowers:brainstorming`——在第一个需要它的 artifact 前调用一次;如果已调用,后续 artifact 跳过。
- 仅对 Gherkin:在写场景前运行 `CONTEXT.md` 四挑战检查。
- 按 artifact 模式创建 artifact。
- 写完后运行 spec 自审;内联修复问题。
- 更新 `status.yaml`。
- 显示简要进度:`Created <artifact>`。
- 如果上下文严重不清楚,暂停并询问。
- `CONTEXT.md` 四挑战检查:读取 `beat/CONTEXT.md`(如果存在,schema: `references/context-format.md`);惰性创建它,只在添加第一个术语时创建,绝不预先创建。
- 遍历 brainstorming 输出和任何草稿场景文本;对每个项目特定术语运行检查,并立即内联更新 `beat/CONTEXT.md`(发现即更新,绝不批量)。
- 四挑战检查 1 对照词汇表:术语与现有条目冲突?指出、解决、更新。
- 四挑战检查 2 锐化模糊:术语模糊或过载(例如 `account` 同时指 Customer 和 User)?选择规范词,将其他列为 `_Avoid_`。
- 四挑战检查 3 压力测试:发明探测术语边界的边缘场景;强制命名边界。
- 四挑战检查 4 交叉引用代码:用户陈述的行为与代码矛盾?浮出、决定真相源、更新错误一方。
- 可选 grilling:如果安装了 `mattpocock-skills:grill-with-docs` 且歧义复杂到需要完整 grilling 会话,提供一次调用:`Want to drop into grill-with-docs for a deeper pass on this?`;如果用户拒绝或技能未安装,继续内联四挑战。
- 场景中每个项目特定术语必须在写场景前存在于 `beat/CONTEXT.md`;场景中加粗术语是规范形式。
- Spec 自审:重新阅读 artifact,用新眼光检查。
- 自审检查 1 Placeholder 扫描:任何 `TBD`、`TODO`、不完整部分、模糊需求?
- 自审检查 2 内部一致性:各部分是否矛盾?设计是否匹配 gherkin 场景?
- 自审检查 3 范围检查:是否足够聚焦于单个实现计划,还是需要分解?
- 自审检查 4 歧义检查:任何需求可能有两种读法?如果是,选择一种并明确。
- 内联修复问题;无需重新审查修复——修复并继续。
- Proposal 节:`## Why`、`## What Changes`、`## Impact`。
- Gherkin:阅读 `references/feature-writing.md` 了解描述块、场景组织和审查清单约定。
- Gherkin 写前扫描 `beat/features/**/*.feature` 和 `beat/changes/*/features/*.feature`(排除当前 change),阅读 `Feature:` 和 `Scenario:` 行以映射现有覆盖;只深读重叠 features;避免重复并对齐风格。
- Gherkin 使用 SpecFlow 风格,标签 `@happy-path`/`@error-handling`/`@edge-case`。
- Feature 描述承载 PRD 本质,必须包含:`As a` / `I want` / `So that`。
- 每个场景必须有测试层标签:`@e2e`(需要运行应用的用户旅程)或 `@behavior`(无需完整应用可测试的业务逻辑;默认 `@behavior`)。
- 在行为层面写——描述系统做什么(如 `Monthly billing adjusts for short months`),而不是函数如何工作(如 `calculateNextTransactionDate clamps to last day`)。
- 使用业务语言——没有具体数值阈值、代码方法名或内部常量(API 合约常量可作为共享词汇)。
- 重复的 Given 步骤使用 `Background:`。
- 标签必须服务于过滤目的——没有装饰性标签。
- BDD 聚焦高层验收;边界值和算法细节属于单元测试。
- 如果选择 option 4 (Technical),完全跳过 gherkin。
- 修改现有 features 时:冲突检查——扫描 `beat/features/**/*.feature.orig`;如果同一文件存在 `.orig`,另一个 change 正在修改它;警告并停止。
- 修改现有 features 时:备份——将 `beat/features/` 中的原始文件重命名为 `.feature.orig`(对 BDD runner 隐藏)。
- 修改现有 features 时:复制——将原始内容复制到 `beat/changes/<name>/features/<file>.feature`。
- 修改现有 features 时:修改——编辑 `changes/` 副本中的场景(添加/更改/移除步骤,添加新场景)。
- 修改现有 features 时:记录——将原始路径添加到 `status.yaml` 的 `gherkin.modified` 数组。
- 不修改现有场景的新 features 直接到 `changes/<name>/features/`。
- Design 节:`## Approach`、`## Key Decisions`、`## Components`。
- ADR gate:对每个 Key Decision,运行 `references/adr-format.md` 中的三条件检查:1 难以逆转?(改变主意的成本有意义);2 无上下文时令人惊讶?(未来读者会想知道为什么这样做);3 真实权衡的结果?(存在真正的替代方案)。
- 如果 ADR gate 三个条件全部成立,使用 AskUserQuestion tool 询问是否将此决策提升到 `docs/adr/`。
- 如果用户选择 Yes,使用 `references/adr-format.md` 中的模板写 1-3 句 ADR,将 `docs/adr/` 中现有最高编号加一,并从 `design.md` 添加交叉引用(`See docs/adr/NNNN-slug.md`)。
- 如果用户选择 No,继续;惰性创建 `docs/adr/`——只在第一个 ADR 时创建。
- Architecture hub suggestion(Layer 3,advisory):如果 `design.md` 描述模块级架构变更(新模块、模块拆分/合并、更改模块边界或职责),建议更新 `beat/ARCHITECTURE.md`——hub 图、模块表或约束(见 `references/architecture-format.md`)。
- 惰性创建 hub,只在项目是多模块且用户接受时;绝不阻塞。
- 提交所有 change artifacts:`git add beat/changes/<name>/ && git commit`。
- 使用描述性提交消息,例如 `design(<name>): add spec artifacts`。
- 在 `status.yaml` 中将 phase 更新为最新完成的 spec artifact。
- 显示最终状态摘要,包括创建了哪些文件、Tasks 仍为 pending,并提示运行 `/beat:plan` 进行任务分解。
- Guardrail:Gherkin 默认强制——只有纯技术变更(option 4: Technical)才跳过。
- Guardrail:一次性提前询问包含哪些 artifacts(不要每个 artifact 问)。
- Guardrail:如果 change 已存在且部分 artifacts 完成,只创建剩余的。
- Guardrail:如果上下文严重不清楚,询问——但偏好合理默认以保持势头。
- Guardrail:写后验证每个 artifact 文件存在再继续。
- Guardrail:Tasks 不在此技能创建——由 `/beat:plan` 处理。
- Red Flags 检查:如果发现自己在以下情况,停止——在调用 `using-git-worktrees` 前写任何文件;未调用 brainstorming 就生成 proposal 章节或创建 `design.md`;写包含内部方法名、数值阈值或实现常量的 gherkin 场景;写使用未定义在 `beat/CONTEXT.md` 的项目特定领域术语的 gherkin 场景;修改 `beat/features/` 中现有 feature 前未创建 `.orig` 备份;写 `tasks.md` 或 `- [ ]` 复选框;因 artifact 看起来没问题而跳过 spec 自审;在 `design.md` 中写满足全部三个 ADR 条件的 Key Decision 却不提供 ADR;认为此特定 change 不需要某前置条件。
适用边界 · 注意事项
- 不用于任务拆分或创建执行计划;应使用 `/beat:plan`。
- 不用于探索想法或在承诺前思考问题;应使用 `/beat:explore`。
- 不用于实现代码或审查/验证实现;应分别使用 `/beat:apply` 和 `/beat:verify`。