| name | story-line |
| description | Use when user wants to create a story line for business execution. This skill is DRIVEN by the Superpowers brainstorm skill. It scans the codebase, checks for required dependencies (brainstorm skill, chrome-devtools MCP), and guides users through creating a story with 6 core elements: story goals, key nodes/milestones, roles/participants, flow/paths, data flow, and exceptions/boundary cases. Each element is refined via brainstorm after user confirmation. After the story line is generated, Chrome DevTools MCP is MANDATORY for testing - issues must be fixed and retested until all nodes pass. Outputs a Markdown story file, optional code skeleton, and a final test report. |
故事线编写技能
角色定义
你是一位资深产品经理,精通业务流程设计擅长将模糊的业务需求转化为结构清晰、可执行的故事线。你能够引导用户逐步完善故事的各个要素,最终输出一份完整的业务故事文档。
依赖声明
重要:故事线技能由 Superpowers 头脑风暴 技能驱动。
- 故事线的核心要素细化(用户输入的扩展、完善)由 brainstorm 技能完成
- 每个故事要素编写完成后,自动调用 brainstorm 进行头脑风暴细化
- 如果 brainstorm 技能不存在,故事线技能将无法完整执行
工作流程
Step 1:前置检查
1.1 检查 Brainstorm Skill 是否存在
检查 skills/ 目录下是否存在 brainstorm 技能:
const fs = require('fs');
const skillExists = fs.existsSync('./skills/brainstorm/SKILL.md');
如果不存在,输出以下提示并停止:
⚠️ 缺少「Superpowers 头脑风暴」技能
请先安装 Superpowers 扩展:
1. 访问 Claude Code 扩展市场搜索 "Superpowers"
2. 安装后重新执行此技能
或者手动创建 skills/brainstorm/SKILL.md
1.2 检查 Chrome DevTools MCP(可选)
如果需要使用浏览器自动化测试,可以检查 Chrome DevTools MCP 是否可用:
const result = await mcp__chrome-devtools__list_pages();
如果 MCP 不可用,可以跳过此步骤,故事线仍可正常执行。后续测试可使用其他方式(如手动测试)进行验证。
Step 2:扫描代码库
使用 Explore agent 扫描项目:
扫描内容:
- 项目类型(语言、框架)
- 目录结构
- 关键配置文件
- 主要业务模块
- 现有数据模型
输出格式:
## 项目概况
- **项目类型**:[项目类型]
- **技术栈**:[技术栈]
- **主要模块**:[模块列表]
- **数据模型**:[关键数据模型]
Step 3:故事线编写(交互式问答 + brainstorm 细化)
使用渐进式问答引导用户完成故事线六大核心要素。每个要素完成后,自动调用 brainstorm 技能进行头脑风暴细化。
3.1 故事目标
提问:
📋 【故事目标】
请回答以下问题:
1. 这个故事要解决什么核心问题?
> [用户输入]
2. 目标用户是谁?
> [用户输入]
3. 预期产出是什么?
> [用户输入]
用户确认后,自动调用 brainstorm 细化:
🔍 调用 brainstorm 进行头脑风暴细化...
[brainstorm 技能输出:基于用户输入的扩展分析、细节补充、边界情况考虑等]
确认细化结果后进入下一步。
3.2 关键节点/里程碑
提问:
📍 【关键节点/里程碑】
请回答以下问题:
1. 故事的起点是什么?(初始状态)
> [用户输入]
2. 中间需要经过哪些关键步骤?(列出序号)
- 步骤1:[用户输入]
- 步骤2:[用户输入]
- 步骤3:[用户输入]
3. 终点/目标状态是什么?
> [用户输入]
用户确认后,自动调用 brainstorm 细化:
🔍 调用 brainstorm 进行头脑风暴细化...
[brainstorm 技能输出:步骤的扩展、潜在风险、时序分析等]
确认细化结果后进入下一步。
3.3 角色/参与者
提问:
👥 【角色/参与者】
请回答以下问题:
1. 有哪些角色参与这个故事线?
- 角色1:[角色名]
- 职责:[用户输入]
- 输入:[用户输入]
- 输出:[用户输入]
- 角色2:[角色名]
- 职责:[用户输入]
- 输入:[用户输入]
- 输出:[用户输入]
[根据实际角色数量继续提问]
用户确认后,自动调用 brainstorm 细化:
🔍 调用 brainstorm 进行头脑风暴细化...
[brainstorm 技能输出:角色职责扩展、角色间交互分析、权限考虑等]
确认细化结果后进入下一步。
3.4 流程/路径
提问:
🔀 【流程/路径】
请回答以下问题:
1. 各节点之间的流转条件是什么?
> [用户输入]
2. 存在哪些分支路径?
- 条件A → [路径1]
- 条件B → [路径2]
3. 是否有循环/回退机制?
> [用户输入]
用户确认后,自动调用 brainstorm 细化:
🔍 调用 brainstorm 进行头脑风暴细化...
[brainstorm 技能输出:流程优化建议、边界条件、异常流转路径等]
确认细化结果后进入下一步。
3.5 数据流转
提问:
📊 【数据流转】
请为每个节点填写数据流转:
| 节点 | 输入数据 | 输出数据 | 数据传递方式 |
|------|----------|----------|--------------|
| [节点1] | [输入] | [输出] | [方式] |
| [节点2] | [输入] | [输出] | [方式] |
[根据节点数量扩展表格]
用户确认后,自动调用 brainstorm 细化:
🔍 调用 brainstorm 进行头脑风暴细化...
[brainstorm 技能输出:数据完整性、一致性、序列化方式、数据脱敏等]
确认细化结果后进入下一步。
3.6 异常/边界情况
提问:
⚠️ 【异常/边界情况】
请详细描述正常分支和异常分支下的各种测试场景:
---
### 正常分支测试场景
1. **表单验证**
- 非空验证:[字段列表] — 空输入时的错误提示
- 长度验证:[字段列表] — 最小/最大长度边界值测试
- 格式验证:[字段列表] — 正则表达式、邮箱、手机号等格式
- 数值范围:[字段列表] — 最小值、最大值、精度
2. **业务流程分支**
- 条件A → [正常路径1]
- 条件B → [正常路径2]
- 条件C → [正常路径3]
- 默认分支 → [默认处理]
3. **时序测试**
- 防抖测试:[输入框/按钮] — 连续快速输入/点击的延迟处理
- 节流测试:[操作] — 一定时间内的限制次数
- 延迟加载:[组件] — loading 状态、超时处理
---
### 异常分支测试场景
1. **输入异常**
- SQL 注入测试:[输入字段]
- XSS 跨站脚本测试:[输入字段]
- 特殊字符测试:[输入字段]
- 超长输入测试:[字段] — 超过最大长度
2. **并发测试**
- 重复提交:[操作按钮]
- 并发修改:[数据记录]
- 并发删除:[数据记录]
- 竞态条件:[操作场景]
3. **网络异常**
- 请求超时:[接口名称] — 超时时间设置
- 网络断开:[操作]
- 请求失败重试:[接口] — 重试次数、间隔
- 弱网环境:[操作]
4. **边界情况**
- 边界值测试:[数值字段] — 0、最大值、负数
- 空数据展示:[列表/详情]
- 分页边界:[最后一页、超过总页数]
- 文件大小边界:[上传组件] — 最小/最大文件大小
---
### 用户体验测试场景(非常重要)
1. **加载状态**
- 页面初始加载:[页面/组件] — skeleton / spinner / 进度条
- 按钮加载中:[按钮] — 点击后禁用 + loading 状态
- 数据加载中:[列表/详情] — 分页/懒加载的 loading
- 文件上传进度:[上传组件] — 进度条百分比展示
- 白屏时间:[页面] — 首屏渲染时间要求
2. **空状态**
- 无数据空态:[列表/表格] — 友好的空状态插画 + 引导文案
- 搜索无结果:[搜索框] — 空状态 + 搜索建议
- 筛选无结果:[筛选条件] — 空状态 + 调整建议
- 错误后空态:[网络错误后] — 重试按钮 + 友好提示
3. **分页/翻页体验**
- 首页/末页边界:[分页组件] — 禁用首页/末页按钮
- 快速翻页:[分页] — 输入页码跳转
- 每页条数切换:[分页] — 下拉选择条数
- 跳转至指定页:[分页] — 输入框校验
4. **提示与反馈**
- 操作成功提示:[操作] — Toast / 消息推送
- 操作失败提示:[操作] — 错误原因 + 解决建议
- 表单校验提示:[表单] — 实时校验 / 提交后校验
- 危险操作确认:[删除/批量操作] — 二次确认弹窗
5. **页面状态恢复**
- 表单数据暂存:[表单] — 刷新/退出时提示保存
- 筛选条件记忆:[列表页] — 保持筛选状态
- 滚动位置恢复:[列表] — 返回后保持滚动位置
- 登录状态保持:[页面] — Token 过期处理
6. **响应式/适配**
- 不同屏幕尺寸:[页面/组件] — 移动端 / 平板 / 桌面
- 键盘操作支持:[输入框] — Enter 提交 / Tab 切换
- 长文本处理:[文本] — 超出省略 / 展开全文
- 图片加载失败:[图片] — 默认占位图
---
5. **错误恢复**
- 操作失败回滚:[操作]
- 数据一致性恢复:[场景]
- 页面刷新状态恢复:[表单/状态]
---
请为每个节点填写异常情况表:
| 节点 | 异常类型 | 触发条件 | 处理方式 |
|------|----------|----------|----------|
| [节点1] | [类型] | [条件] | [处理] |
| [节点2] | [类型] | [条件] | [处理] |
超时处理策略:
> [用户输入]
错误恢复机制:
> [用户输入]
用户确认后,自动调用 brainstorm 细化:
🔍 调用 brainstorm 进行头脑风暴细化...
[brainstorm 技能输出:
- 补充更多正常分支场景(边界条件、组合场景)
- 补充更多异常分支场景(边界值、错误码、第三方服务异常)
- 防抖节流的具体参数建议
- 并发场景的死锁风险分析
- 异常恢复的补偿机制设计
]
确认细化结果后进入下一步。
Step 4:生成输出
4.1 生成 Markdown 文件
将完整故事线写入 Markdown 文件:
文件路径:stories/[story-name].md
文件格式:
# [故事名称]
## 故事目标
- **核心问题**:[问题描述]
- **目标用户**:[用户描述]
- **预期产出**:[产出描述]
## 关键节点/里程碑
- **起点**:[初始状态]
- **中间步骤**:
1. [步骤1]
2. [步骤2]
3. [步骤3]
- **终点**:[目标状态]
## 角色/参与者
| 角色 | 职责 | 输入 | 输出 |
|------|------|------|------|
| [角色1] | [职责] | [输入] | [输出] |
| [角色2] | [职责] | [输入] | [输出] |
## 流程/路径
### 流转条件
[条件描述]
### 分支路径
- **条件A** → [路径1]
- **条件B** → [路径2]
### 循环/回退机制
[机制描述]
## 数据流转
| 节点 | 输入数据 | 输出数据 | 数据传递方式 |
|------|----------|----------|--------------|
| [节点1] | [输入] | [输出] | [方式] |
| [节点2] | [输入] | [输出] | [方式] |
## 异常/边界情况
### 正常分支测试场景
#### 表单验证
| 字段 | 非空验证 | 长度验证 | 格式验证 |
|------|----------|----------|----------|
| [字段1] | ✅/❌ | 最小:[min] 最大:[max] | [正则/格式] |
| [字段2] | ✅/❌ | 最小:[min] 最大:[max] | [正则/格式] |
#### 业务流程分支
| 条件 | 路径 | 预期结果 |
|------|------|----------|
| 条件A | [路径1] | [结果] |
| 条件B | [路径2] | [结果] |
| 条件C | [路径3] | [结果] |
| 默认 | [默认路径] | [结果] |
#### 时序测试
| 操作 | 防抖/节流 | 参数 | 测试场景 |
|------|-----------|------|----------|
| [输入框] | 防抖 | 延迟:[ms] | 快速连续输入 |
| [按钮] | 节流 | 间隔:[ms] | 快速连续点击 |
### 异常分支测试场景
#### 输入异常
| 测试类型 | 字段 | 预期处理 |
|----------|------|----------|
| SQL 注入 | [字段] | [拒绝/转义] |
| XSS 跨站脚本 | [字段] | [拒绝/转义] |
| 特殊字符 | [字段] | [处理方式] |
| 超长输入 | [字段] | [截断/拒绝] |
#### 并发测试
| 测试场景 | 操作 | 预期行为 |
|----------|------|----------|
| 重复提交 | [按钮] | [防重/提示] |
| 并发修改 | [数据] | [加锁/合并/冲突提示] |
| 并发删除 | [数据] | [幂等/提示] |
| 竞态条件 | [场景] | [处理方式] |
#### 网络异常
| 场景 | 接口 | 处理方式 |
|------|------|----------|
| 请求超时 | [接口] | 超时:[ms] → [重试/提示] |
| 网络断开 | [操作] | [离线提示/队列] |
| 请求失败 | [接口] | 重试:[次数] 间隔:[ms] |
#### 边界情况
| 类型 | 测试值 | 预期结果 |
|------|--------|----------|
| 边界值 | 0 / 最大值 / 负数 | [结果] |
| 空数据 | 空列表 / 空详情 | [展示] |
| 分页边界 | 第1页 / 最后1页 / 超范围 | [结果] |
| 文件大小 | 最小:[min] / 最大:[max] | [结果] |
### 用户体验测试场景
#### 加载状态
| 场景 | 组件 | 预期体验 |
|------|------|----------|
| 页面初始加载 | [页面] | [骨架屏/ spinner / 进度条] |
| 按钮加载中 | [按钮] | [禁用 + loading 状态] |
| 数据加载中 | [列表] | [加载中文案/骨架屏] |
| 文件上传进度 | [上传] | [百分比进度条] |
| 首屏渲染 | [页面] | [白屏时间 < Xs] |
#### 空状态
| 场景 | 预期体验 |
|------|----------|
| 无数据空态 | [空态插画 + 引导文案] |
| 搜索无结果 | [空态 + 搜索建议] |
| 筛选无结果 | [空态 + 调整建议] |
| 错误后空态 | [重试按钮 + 友好提示] |
#### 分页/翻页体验
| 场景 | 预期体验 |
|------|----------|
| 首页/末页边界 | [禁用对应按钮] |
| 快速翻页 | [输入页码跳转] |
| 每页条数切换 | [下拉选择] |
| 跳转至指定页 | [输入校验] |
#### 提示与反馈
| 场景 | 预期体验 |
|------|----------|
| 操作成功 | [Toast 提示 + 持续时间] |
| 操作失败 | [错误原因 + 解决建议] |
| 表单校验 | [实时/提交后校验 + 错误位置] |
| 危险操作 | [二次确认弹窗] |
#### 页面状态恢复
| 场景 | 预期体验 |
|------|----------|
| 表单暂存 | [退出提示/自动保存] |
| 筛选条件记忆 | [保持状态] |
| 滚动位置恢复 | [返回保持位置] |
| 登录状态 | [Token 过期处理] |
#### 响应式/适配
| 场景 | 预期体验 |
|------|----------|
| 屏幕适配 | [移动端/平板/桌面正常] |
| 键盘操作 | [Enter 提交/Tab 切换] |
| 长文本 | [超出省略/展开] |
| 图片加载失败 | [默认占位图] |
### 可能失败的节点
| 节点 | 失败原因 | 处理方式 |
|------|----------|----------|
| [节点] | [原因] | [处理] |
### 超时处理
[超时处理描述]
### 错误恢复机制
[错误恢复描述]
---
## 测试声明(可选)
> **可选**:本故事线支持使用 **Chrome DevTools MCP** 或 **Playwright MCP** 进行测试验证。
>
> 建议:
> - 测试过程中发现的问题建议**自行修复**
> - 修复后建议**重新测试**
> - 可以使用其他测试方式替代
> - 可选生成测试报告
---
*Generated by 故事线技能 | Date: [日期]*
4.2 生成代码骨架(可选)
根据故事线生成伪代码或代码骨架:
## 代码骨架
### 伪代码
```[language]
// [伪代码实现]
文件结构
src/
├── [模块1]/
│ ├── index.ts
│ └── [相关文件]
└── [模块2]/
├── index.ts
└── [相关文件]
---
### Step 5:浏览器测试(可选)
> **可选**:如果需要使用浏览器进行自动化测试,可以使用 **Chrome DevTools MCP** 进行验证。
>
> - 测试过程中发现的问题建议**自行修复**
> - 修复后建议**重新测试**
> - 可以使用其他测试方式替代(如手动测试)
> - 可以选择是否生成测试报告
#### 5.1 测试执行(可选)
如果使用 Chrome DevTools MCP,可以对故事线中的关键节点进行验证:
```javascript
// 示例:验证页面流程
await mcp__chrome-devtools__navigate_page({ type: "url", url: "[目标URL]" });
await mcp__chrome-devtools__take_snapshot();
5.2 问题记录与修复(可选)
如果发现问题:
⚠️ 测试发现问题:[问题描述]
建议自行修复...
- 问题节点:[节点名称]
- 问题原因:[原因分析]
- 修复方案:[修复方案]
修复后可以重新测试...
5.3 迭代测试(可选)
可以循环执行「测试 → 发现问题 → 自行修复 → 再测试」:
🔄 迭代测试中...
- 第 1 轮测试:❌ 发现 2 个问题,建议自行修复...
- 第 2 轮测试:❌ 发现 1 个问题,建议自行修复...
- 第 3 轮测试:✅ 所有节点通过(如果执行了自动化测试)
异常处理:如果某个节点反复失败(超过 3 轮仍未通过),可以向用户确认:
⚠️ 节点 [节点名称] 连续 3 轮测试失败
问题描述:[问题描述]
已尝试方案:[已尝试的修复方案]
建议选择:
1. 继续自行修复(再试一轮)
2. 暂时跳过此节点(记录到待处理项,稍后解决)
3. 终止测试
您的选择:
注意:
- 选择「暂时跳过」后,该节点标记为「待处理」,继续测试其他节点
- 故事线文档中记录所有跳过的节点和原因
- 最终报告中需列出所有待处理节点
Step 6:生成测试报告(可选)
如果使用了自动化测试,测试完成后可以生成最终报告并追加到故事线文档:
## 测试报告
### 测试时间
- 开始时间:[开始时间]
- 结束时间:[结束时间]
- 总耗时:[总耗时]
### 测试结果
| 测试轮次 | 发现问题 | 修复状态 | 测试状态 |
|----------|----------|----------|----------|
| 第 1 轮 | [问题数] | [修复数] | ✅/❌ |
| 第 2 轮 | [问题数] | [修复数] | ✅/❌ |
| 第 3 轮 | [问题数] | [修复数] | ✅/❌ |
### 问题清单
| # | 节点 | 问题类型 | 问题描述 | 问题原因 | 修复方案 | 状态 |
|---|------|----------|----------|----------|----------|------|
| 1 | [节点] | [表单验证/并发/网络/边界...] | [描述] | [原因] | [方案] | ✅ 已修复 |
| 2 | [节点] | [表单验证/并发/网络/边界...] | [描述] | [原因] | [方案] | ⏸️ 待处理 |
### 测试场景覆盖
| 场景类别 | 测试项 | 通过 | 失败 |
|----------|--------|------|------|
| 表单验证 | 非空、长度、格式、数值范围 | ✅ | ❌ |
| 业务流程 | 正常分支、异常分支 | ✅ | ❌ |
| 时序测试 | 防抖、节流、延迟加载 | ✅ | ❌ |
| 输入异常 | 注入、特殊字符、超长输入 | ✅ | ❌ |
| 并发测试 | 重复提交、并发修改、竞态 | ✅ | ❌ |
| 网络异常 | 超时、断网、重试、弱网 | ✅ | ❌ |
| 边界情况 | 边界值、空数据、分页边界 | ✅ | ❌ |
| **用户体验** | **加载状态、空状态、分页、提示反馈、状态恢复、响应式** | ✅ | ❌ |
### 待处理节点(如有)
> 以下节点在测试过程中因反复失败已暂时跳过:
| # | 节点 | 跳过原因 | 建议 |
|---|------|----------|------|
| 1 | [节点] | [原因] | [后续建议] |
### 最终结论
> **注意**:最终结论应根据实际测试结果输出,如有节点跳过需如实说明。
- **测试通过**:✅ 故事线所有节点验证通过 / ⚠️ 部分节点待处理
- **待处理节点**:无 / [列出跳过的节点]
- **待优化项**:无 / [列出待优化项]
- **建议**:[建议内容]
---
*测试报告生成时间:[日期] | 测试工具:[手动测试/自动化测试]*
Step 7:完成总结
输出以下总结:
✅ 故事线编写完成!
📁 输出文件:stories/[story-name].md
📊 代码骨架:stories/[story-name]-skeleton.md(可选)
🧪 测试报告:已追加至故事线文档
🔄 本故事线已由 brainstorm 技能进行全程细化
⚠️ 可选测试声明(如已进行自动化测试):
- 测试过程中发现的问题建议自行修复
- 测试报告可追加至故事线文档
- [如有跳过节点] 部分节点因反复失败已暂时跳过,记录在待处理项中
下一步建议:
1. 使用 Spec-Kit 定义接口规范
2. 使用 TDD 模式开始开发
注意事项
- Brainstorm 驱动:故事线技能由 brainstorm 技能全程驱动,每个要素完成后必须调用 brainstorm 细化
- 浏览器测试(可选):
- 故事线生成后可以使用 Chrome DevTools MCP 或 Playwright MCP 进行测试验证
- 测试过程中发现的问题建议自行修复
- 修复后建议重新测试
- 也可以使用其他测试方式(手动测试等)
- 测试报告可选生成
- 交互式问答:每个要素都要等用户确认后再进入下一步
- 支持回退:用户可以返回修改之前的答案
- 灵活扩展:角色、节点等数量可根据实际业务调整
- Markdown 输出:所有故事线必须保存为 Markdown 文件
- 代码骨架可选:根据用户选择决定是否生成
- 测试报告:测试完成后可以选择是否生成测试报告
适用场景
- 新功能开发前的业务梳理
- 复杂业务流程的设计与评审
- 跨团队协作的需求对齐
- 遗留系统改造前的现状分析