# 创建棕地项目故事任务 ## 目的 为棕地项目创建详细的、可随时实施的故事,因为这些项目可能没有传统的、分片的 PRD/架构文档。此任务弥合了各种文档格式(项目文档输出、棕地 PRD、史诗或用户文档)与可供开发代理执行的故事之间的差距。 ## 何时使用此任务 **在以下情况下使用此任务:** - 处理具有非标准文档的棕地项目 - 需要从项目文档输出创建故事 - 根据棕地史诗工作,但没有完整的 PRD/架构 - 现有项目文档不遵循 BMad v4+ 结构 - 需要在故事创建期间从用户那里收集更多上下文 **在以下情况下使用 create-next-story:** - 使用正确分片的 PRD 和 v4 架构文档 - 遵循标准的绿地或文档齐全的棕地工作流程 - 所有技术上下文都以结构化格式提供 ## 任务执行说明 ### 0. 文档上下文 按以下顺序检查可用文档: 1. **分片的 PRD/架构** (docs/prd/, docs/architecture/) - 如果找到,建议改用 create-next-story 任务 2. **棕地架构文档** (docs/brownfield-architecture.md 或类似文件) - 由 document-project 任务创建 - 包含实际系统状态、技术债务、变通方法 3. **棕地 PRD** (docs/prd.md) - 可能包含嵌入的技术细节 4. **史诗文件** (docs/epics/ 或类似文件) - 由 brownfield-create-epic 任务创建 5. **用户提供的文档** - 要求用户指定位置和格式 ### 1. 故事识别和上下文收集 #### 1.1 识别故事来源 根据可用文档: - **从棕地 PRD**:从史诗部分提取故事 - **从史诗文件**:阅读史诗定义和故事列表 - **根据用户指示**:询问用户要实施哪个具体的增强功能 - **没有明确来源**:与用户合作定义故事范围 #### 1.2 收集基本上下文 关键:对于棕地故事,您必须收集足够的上下文以确保安全实施。准备好向用户询问缺失的信息。 **所需信息清单:** - [ ] 哪些现有功能可能会受到影响? - [ ] 与当前代码的集成点是什么? - [ ] 应遵循哪些模式(附带示例)? - [ ] 存在哪些技术限制? - [ ] 是否有任何需要注意的“陷阱”或变通方法? 如果缺少任何所需信息,请列出缺失的信息并要求用户提供。 ### 2. 从可用来源中提取技术上下文 #### 2.1 从项目文档输出 如果使用来自 document-project 的 brownfield-architecture.md: - **技术债务部分**:注意影响此故事的任何变通方法 - **关键文件部分**:识别需要修改的文件 - **集成点**:查找现有的集成模式 - **已知问题**:检查故事是否涉及有问题的地方 - **实际技术栈**:验证版本和限制 #### 2.2 从棕地 PRD 如果使用棕地 PRD: - **技术限制部分**:提取所有相关的限制 - **集成要求**:注意兼容性要求 - **代码组织**:遵循指定的模式 - **风险评估**:了解潜在影响 #### 2.3 从用户文档 要求用户帮助识别: - 相关的技术规范 - 可供遵循的现有代码示例 - 集成要求 - 项目中使用的测试方法 ### 3. 通过逐步收集细节来创建故事 #### 3.1 创建初始故事结构 从故事模板开始,填写已知信息: ```markdown # 故事 {{增强功能标题}} ## 状态:草稿 ## 故事 作为一名 {{user_type}}, 我想要 {{enhancement_capability}}, 以便 {{value_delivered}}。 ## 上下文来源 - 源文档:{{文档名称/类型}} - 增强类型:{{单个功能/错误修复/集成/等}} - 对现有系统的影响:{{简要评估}} ``` #### 3.2 制定验收标准 关键:对于棕地项目,始终包括关于维护现有功能的标准 标准结构: 1. 新功能按规定工作 2. 现有的 {{受影响的功能}} 继续正常工作 3. 与 {{现有系统}} 的集成保持当前行为 4. {{相关领域}} 没有回归 5. 性能保持在可接受的范围内 #### 3.3 收集技术指导 关键:如果信息缺失,这是您需要与用户互动的地方 使用可用信息创建开发技术指导部分: ````markdown ## 开发技术指导 ### 现有系统上下文 [从可用文档中提取] ### 集成方法 [根据找到的模式或询问用户] ### 技术限制 [来自文档或用户输入] ### 缺失信息 关键:列出您找不到的、开发人员需要的任何信息,并要求提供缺失的信息 ### 4. 带安全检查的任务生成 #### 4.1 生成实施任务 根据收集的上下文,创建以下任务: - 如果对系统的理解不完整,则包括探索任务 - 为现有功能添加验证任务 - 包括回滚考虑 - 在已知时引用特定的文件/模式 棕地项目的示例任务结构: ```markdown ## 任务 / 子任务 - [ ] 任务 1:分析现有的 {{组件/功能}} 实现 - [ ] 查看 {{特定文件}} 以了解当前模式 - [ ] 记录集成点 - [ ] 识别潜在影响 - [ ] 任务 2:实施 {{新功能}} - [ ] 遵循 {{示例文件}} 中的模式 - [ ] 与 {{现有组件}} 集成 - [ ] 保持与 {{约束}} 的兼容性 - [ ] 任务 3:验证现有功能 - [ ] 测试 {{现有功能 1}} 仍然有效 - [ ] 验证 {{集成点}} 行为未改变 - [ ] 检查性能影响 - [ ] 任务 4:添加测试 - [ ] 遵循 {{项目测试模式}} 的单元测试 - [ ] {{集成点}} 的集成测试 - [ ] 如果需要,更新现有测试 ``` ```` ### 5. 风险评估和缓解 关键:对于棕地项目 - 始终包括风险评估 为棕地特定风险添加部分: ```markdown ## 风险评估 ### 实施风险 - **主要风险**:{{对现有系统的主要风险}} - **缓解措施**:{{如何解决}} - **验证**:{{如何确认安全}} ### 回滚计划 - {{如果需要,撤消更改的简单步骤}} ### 安全检查 - [ ] 在更改前测试现有的 {{功能}} - [ ] 更改可以通过功能标志或隔离 - [ ] 回滚过程已记录 ``` ### 6. 最终故事验证 在最终确定之前: 1. **完整性检查**: - [ ] 故事有明确的范围和验收标准 - [ ] 技术上下文足以实施 - [ ] 集成方法已定义 - [ ] 风险已识别并有缓解措施 2. **安全检查**: - [ ] 包括对现有功能的保护 - [ ] 回滚计划是可行的 - [ ] 测试涵盖了新功能和现有功能 3. **信息差距**: - [ ] 从用户那里收集了所有关键的缺失信息 - [ ] 为开发代理记录了剩余的未知数 - [ ] 在需要时添加了探索任务 ### 7. 故事输出格式 使用适当的命名保存故事: - 如果来自史诗:`docs/stories/epic-{n}-story-{m}.md` - 如果独立:`docs/stories/brownfield-{feature-name}.md` - 如果顺序:遵循现有的故事编号 包括说明文档上下文的标题: ```markdown # 故事:{{标题}} ## 状态:草稿 [故事内容的其余部分...] ``` ### 8. 交接沟通 向用户提供清晰的交接: ```text 已创建棕地故事:{{故事标题}} 源文档:{{使用了什么}} 故事位置:{{文件路径}} 已识别的关键集成点: - {{集成点 1}} - {{集成点 2}} 注意到的风险: - {{主要风险}} {{如果信息缺失}}: 注意:一些技术细节尚不清楚。故事中包括了探索任务,以在实施过程中收集所需信息。 后续步骤: 1. 审查故事的准确性 2. 验证集成方法是否与您的系统一致 3. 批准故事或请求调整 4. 然后开发代理可以带安全检查地实施 ``` ## 成功标准 当满足以下条件时,棕地故事创建成功: 1. 故事可以实施,而无需开发人员搜索多个文档 2. 集成方法清晰且对现有系统安全 3. 所有可用的技术上下文都已提取和组织 4. 缺失的信息已识别并得到解决 5. 风险已记录并有缓解策略 6. 故事包括对现有功能的验证 7. 回滚方法已定义 ## 重要说明 - 此任务专门用于具有非标准文档的棕地项目 - 始终将现有系统的稳定性置于新功能之上 - 如有疑问,请添加探索和验证任务 - 最好向用户澄清,而不是做出假设 - 每个故事都应该是为开发代理准备的自包含的 - 在可用时包括对现有代码模式的引用 ```