SuperPM pm-user-story
git clone https://github.com/konglong87/superPM
T=$(mktemp -d) && git clone --depth=1 https://github.com/konglong87/superPM "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/02-solution-design/pm-user-story" ~/.claude/skills/konglong87-superpm-pm-user-story && rm -rf "$T"
skills/02-solution-design/pm-user-story/SKILL.mdPreamble (run first)
# 检查方案设计目录 mkdir -p docs/02-方案设计 # 检查前置文档 echo "📊 正在检查前置文档..." if [ -f "docs/02-方案设计/PRD产品需求文档.md" ]; then echo "✅ PRD文档 - 已找到" else echo "⏳ PRD文档 - 未找到" fi if [ -f "docs/02-方案设计/功能细节拆解.md" ]; then echo "✅ 功能细节拆解 - 已找到" else echo "⏳ 功能细节拆解 - 未找到" fi
执行流程
步骤 1: 选择用户故事范围
使用 AskUserQuestion 询问:
用户故事是敏捷开发中描述需求的标准方式。
您需要编写哪方面的用户故事?
A) 全部功能用户故事(基于PRD功能列表) B) 单个模块的用户故事(请指定模块) C) 单个功能的用户故事(请指定功能) D) Epic级用户故事(高层次需求) E) 其他(请手动输入)
💡 提示:
- Sprint规划 → 推荐单个模块的用户故事
- 产品规划 → 推荐Epic级用户故事
- 开发准备 → 推荐全部功能用户故事
记录到变量
STORY_SCOPE
步骤 2: 读取前置数据
根据范围读取相应文档:
必需文档:
- PRD产品需求文档(如果存在)
- 功能细节拆解(如果存在)
可选文档:
- MVP方案
- 用户画像
读取失败处理:
如果 PRD 文档不存在:
⚠️ 未找到 PRD 文档 用户故事需要明确的功能需求作为输入。 您可以选择: A) 执行 /pm-docs 生成 PRD B) 使用功能细节拆解作为输入 C) 手动输入功能需求(快速模式) 是否继续?
步骤 3: 用户故事编写原则
📝 用户故事标准格式:
格式:
` 作为 <角色> 我想要 <功能> 以便于 <价值>
> > **示例**: > ``` 作为 买家用户 我想要 搜索商品 以便于 快速找到我需要的商品
验收标准(Acceptance Criteria):
- GIVEN(前置条件)
- WHEN(触发操作)
- THEN(预期结果)
示例:
GIVEN 用户已登录 WHEN 用户输入"苹果"并点击搜索 THEN 显示包含"苹果"关键词的商品列表
> > 是否继续编写用户故事? > > A) 理解了,开始编写 > B) 我需要更多示例 > C) 我有特定的编写规范 --- ### 步骤 4: Epic级用户故事 #### 4.1 识别Epic > 🎯 Epic级用户故事(高层次需求): > > 基于PRD,识别出以下Epic: > > | Epic ID | Epic名称 | 描述 | 包含Story数 | > |---------|---------|------|------------| > | E001 | 用户管理 | 用户注册、登录、信息管理 | 5 | > | E002 | 商品浏览 | 商品列表、搜索、详情 | 4 | > | E003 | 购物车管理 | 加入购物车、编辑、结算 | 3 | > | E004 | 订单管理 | 订单创建、支付、查看 | 6 | > | ... | ... | ... | ... | > > 是否需要调整Epic划分? > > A) Epic划分合理,继续编写Story > B) 需要调整Epic > C) 我有其他Epic划分方式 #### 4.2 Epic详细描述 > 📝 Epic详细描述: > > **Epic: E001 用户管理** > > **作为** 产品系统 > **我想要** 提供用户管理功能 > **以便于** 用户可以注册登录,管理个人信息 > > **业务价值**: > - 用户可以拥有个人账号 > - 支持个性化服务 > - 提供用户数据用于数据分析 > > **包含Story**: > - US001: 用户注册 > - US002: 用户登录 > - US003: 找回密码 > - US004: 个人信息管理 > - US005: 账号注销 > > **优先级**:P0 > **预估工时**:5人天 > > 是否继续编写其他Epic? --- ### 步骤 5: Story级用户故事 #### 5.1 Story编写模板 对每个功能编写用户故事: > 📝 用户故事:US001 用户注册 > > **基本信息**: > > **Story ID**:US001 > **Epic**:E001 用户管理 > **优先级**:P0 > **预估Story Point**:3 > > **用户故事**: > ``` 作为 新用户 我想要 通过手机号注册账号 以便于 拥有个人账号,享受个性化服务
验收标准:
场景1:正常注册
GIVEN 用户未注册过 AND 用户打开注册页面 WHEN 用户输入手机号 "13800138000" AND 用户获取验证码 "123456" AND 用户设置密码 "Password123" AND 用户点击"注册" THEN 系统创建账号成功 AND 用户自动登录 AND 跳转到首页
> > **场景2:手机号已注册** > ``` GIVEN 手机号 "13800138000" 已注册 WHEN 用户输入该手机号 THEN 提示"该手机号已注册,请直接登录" AND 提供"去登录"按钮
场景3:验证码错误
GIVEN 用户输入手机号并获取验证码 WHEN 用户输入错误的验证码 THEN 提示"验证码错误" AND 允许重新输入
> > **技术备注**: > - 使用短信服务发送验证码(阿里云短信) > - 密码使用bcrypt加密 > - 验证码有效期5分钟 > > **依赖**: > - 无前置依赖 > > **风险**: > - 验证码发送可能失败 → 提供多种注册方式(邮箱注册) > > 这个用户故事是否完整? > > A) 完整,继续下一个Story > B) 需要调整 > C) 需要补充更多场景 #### 5.2 逐个编写Story 基于PRD功能列表,逐个编写用户故事: > 📝 用户故事:US002 用户登录 > > **基本信息**: > > **Story ID**:US002 > **Epic**:E001 用户管理 > **优先级**:P0 > **Story Point**:2 > > **用户故事**: > ``` 作为 已注册用户 我想要 使用手机号和密码登录 以便于 访问我的个人账号
验收标准:
场景1:正常登录
GIVEN 用户已注册 WHEN 用户输入正确的手机号和密码 THEN 登录成功 AND 跳转到首页
> > **场景2:密码错误** > ``` GIVEN 用户已注册 WHEN 用户输入错误的密码 THEN 提示"手机号或密码错误"
场景3:账号不存在
GIVEN 手机号未注册 WHEN 用户输入该手机号 THEN 提示"账号不存在,请先注册"
> > 是否继续下一个Story? --- ### 步骤 6: Story拆分 对于复杂的Story,需要进行拆分: > 🔍 Story拆分判断: > > **当前Story**:US004 购物车管理 > > **Story描述**: > ``` 作为 买家用户 我想要 管理购物车 以便于 准备购买的商品
判断标准:
- Story Point > 8 → 需要拆分
- 包含多个独立功能 → 需要拆分
- 验收标准过多 → 需要拆分
拆分建议:
- US004-1: 加入购物车
- US004-2: 查看购物车
- US004-3: 编辑购物车商品数量
- US004-4: 删除购物车商品
是否接受拆分?
A) 接受拆分 B) 我有其他拆分方式 C) 不需要拆分
步骤 7: Story优先级排序
🎯 Story优先级排序:
基于业务价值和依赖关系,对Story进行排序:
P0(必须有):
- US001: 用户注册
- US002: 用户登录
- US005: 商品列表
- US006: 商品详情
- US010: 加入购物车
- US012: 订单创建
- US013: 订单支付
P1(应该有):
- US003: 找回密码
- US004: 个人信息管理
- US007: 商品搜索
- US011: 购物车编辑
P2(可以有):
- US008: 商品收藏
- US009: 商品评价
- US014: 订单取消
P3(暂不实现):
- US015: 商品分享
- US016: 商品推荐
是否需要调整优先级?
步骤 8: 输出用户故事清单
使用 Write 工具创建
docs/02-方案设计/用户故事清单.md:
# {产品名称} 用户故事清单 ## 文档信息 - **产品名称**: {从PRD提取} - **文档版本**: v1.0 - **创建时间**: {当前时间} - **生成工具**: super-pm v1.0.0 --- ## 一、用户故事总览 ### 1.1 Epic清单 | Epic ID | Epic名称 | 描述 | Story数量 | 优先级 | 预估工时 | |---------|---------|------|----------|--------|---------| | E001 | 用户管理 | 用户注册、登录、信息管理 | 5 | P0 | 5人天 | | E002 | 商品浏览 | 商品列表、搜索、详情 | 4 | P0 | 4人天 | | E003 | 购物车管理 | 加入购物车、编辑、结算 | 4 | P0 | 3人天 | | E004 | 订单管理 | 订单创建、支付、查看 | 6 | P0 | 6人天 | | E005 | 支付管理 | 支付集成、支付回调 | 3 | P1 | 3人天 | | **总计** | | | **22** | | **21人天** | --- ## 二、Epic 1: 用户管理 ### Epic描述 **作为** 产品系统 **我想要** 提供用户管理功能 **以便于** 用户可以注册登录,管理个人信息 **业务价值**: - 用户可以拥有个人账号 - 支持个性化服务 - 提供用户数据用于数据分析 --- ### US001: 用户注册 **基本信息**: - **Story ID**: US001 - **Epic**: E001 用户管理 - **优先级**: P0 - **Story Point**: 3 - **预估工时**: 1天 **用户故事**:
作为 新用户 我想要 通过手机号注册账号 以便于 拥有个人账号,享受个性化服务
**验收标准**: **场景1:正常注册**
GIVEN 用户未注册过 AND 用户打开注册页面 WHEN 用户输入手机号 "13800138000" AND 用户获取验证码 "123456" AND 用户设置密码 "Password123" AND 用户点击"注册" THEN 系统创建账号成功 AND 用户自动登录 AND 跳转到首页
**场景2:手机号已注册**
GIVEN 手机号 "13800138000" 已注册 WHEN 用户输入该手机号 THEN 提示"该手机号已注册,请直接登录" AND 提供"去登录"按钮
**场景3:验证码错误**
GIVEN 用户输入手机号并获取验证码 WHEN 用户输入错误的验证码 THEN 提示"验证码错误" AND 允许重新输入
**场景4:密码强度不足**
GIVEN 用户在注册页面 WHEN 用户输入密码 "123" THEN 实时提示"密码至少8位,需包含数字和字母" AND 密码强度指示器显示"弱"
**技术备注**: - 使用阿里云短信服务发送验证码 - 验证码有效期5分钟 - 密码使用bcrypt加密,强度等级10 - 同一手机号每天最多发送5次验证码 **依赖**: - 无前置依赖 **风险**: - 验证码发送可能失败 → 提供邮箱注册备选方案 --- ### US002: 用户登录 **基本信息**: - **Story ID**: US002 - **Epic**: E001 用户管理 - **优先级**: P0 - **Story Point**: 2 - **预估工时**: 0.5天 **用户故事**:
作为 已注册用户 我想要 使用手机号和密码登录 以便于 访问我的个人账号
**验收标准**: **场景1:正常登录**
GIVEN 用户已注册 WHEN 用户输入正确的手机号和密码 THEN 登录成功 AND 跳转到首页
**场景2:密码错误**
GIVEN 用户已注册 WHEN 用户输入错误的密码 THEN 提示"手机号或密码错误"
**场景3:账号不存在**
GIVEN 手机号未注册 WHEN 用户输入该手机号 THEN 提示"账号不存在,请先注册"
**技术备注**: - 密码错误次数限制:5次,超过后锁定30分钟 - 登录成功后生成JWT Token,有效期7天 --- ### US003: 找回密码 **基本信息**: - **Story ID**: US003 - **Epic**: E001 用户管理 - **优先级**: P1 - **Story Point**: 2 - **预估工时**: 0.5天 **用户故事**:
作为 忘记密码的用户 我想要 通过手机验证码重置密码 以便于 重新获得账号访问权限
**验收标准**: **场景1:正常重置密码**
GIVEN 用户已注册 WHEN 用户输入手机号并验证成功 AND 用户设置新密码 THEN 密码重置成功 AND 跳转到登录页
--- ### US004: 个人信息管理 **基本信息**: - **Story ID**: US004 - **Epic**: E001 用户管理 - **优先级**: P1 - **Story Point**: 3 - **预估工时**: 1天 **用户故事**:
作为 登录用户 我想要 查看和编辑个人信息 以便于 保持信息准确和完整
**验收标准**: **场景1:查看个人信息**
GIVEN 用户已登录 WHEN 用户进入"个人中心" THEN 显示用户头像、昵称、手机号、邮箱等信息
**场景2:编辑个人信息**
GIVEN 用户已登录 WHEN 用户修改昵称为"小明" AND 点击"保存" THEN 昵称更新成功 AND 显示成功提示
--- ### US005: 账号注销 **基本信息**: - **Story ID**: US005 - **Epic**: E001 用户管理 - **优先级**: P2 - **Story Point**: 2 - **预估工时**: 0.5天 **用户故事**:
作为 用户 我想要 注销我的账号 以便于 不再使用产品并删除个人数据
--- ## 三、Epic 2: 商品浏览 ### Epic描述 **作为** 产品系统 **我想要** 提供商品浏览功能 **以便于** 用户可以浏览和搜索商品 --- ### US006: 商品列表 **基本信息**: - **Story ID**: US006 - **Epic**: E002 商品浏览 - **优先级**: P0 - **Story Point**: 3 - **预估工时**: 1天 **用户故事**:
作为 买家用户 我想要 浏览商品列表 以便于 查看所有可购买的商品
**验收标准**: **场景1:正常浏览**
GIVEN 用户进入商品列表页 WHEN 页面加载完成 THEN 显示商品列表(图片、名称、价格) AND 支持分页加载(每页20个)
**场景2:筛选商品**
GIVEN 用户在商品列表页 WHEN 用户选择分类"水果" THEN 只显示水果类商品
**场景3:排序商品**
GIVEN 用户在商品列表页 WHEN 用户选择"价格从低到高" THEN 商品按价格升序排列
--- ### US007: 商品搜索 **基本信息**: - **Story ID**: US007 - **Epic**: E002 商品浏览 - **优先级**: P1 - **Story Point**: 3 - **预估工时**: 1天 **用户故事**:
作为 买家用户 我想要 搜索商品 以便于 快速找到我需要的商品
**验收标准**: **场景1:搜索成功**
GIVEN 用户在搜索框 WHEN 用户输入"苹果"并搜索 THEN 显示包含"苹果"关键词的商品列表
**场景2:搜索历史**
GIVEN 用户搜索过"苹果"、"香蕉" WHEN 用户点击搜索框 THEN 显示搜索历史:"苹果"、"香蕉"
--- ### US008: 商品详情 **基本信息**: - **Story ID**: US008 - **Epic**: E002 商品浏览 - **优先级**: P0 - **Story Point**: 3 - **预估工时**: 1天 **用户故事**:
作为 买家用户 我想要 查看商品详情 以便于 了解商品详细信息并决定购买
--- ### US009: 商品收藏 **基本信息**: - **Story ID**: US009 - **Epic**: E002 商品浏览 - **优先级**: P2 - **Story Point**: 2 - **预估工时**: 0.5天 **用户故事**:
作为 买家用户 我想要 收藏商品 以便于 后续快速找到感兴趣的商品
--- ## 四、Epic 3: 购物车管理 ### Epic描述 **作为** 产品系统 **我想要** 提供购物车功能 **以便于** 用户可以管理准备购买的商品 --- ### US010: 加入购物车 **基本信息**: - **Story ID**: US010 - **Epic**: E003 购物车管理 - **优先级**: P0 - **Story Point**: 2 - **预估工时**: 0.5天 **用户故事**:
作为 买家用户 我想要 将商品加入购物车 以便于 后续统一结算
**验收标准**: **场景1:成功加入**
GIVEN 用户在商品详情页 WHEN 用户选择规格和数量,点击"加入购物车" THEN 商品加入购物车成功 AND 显示成功提示 AND 购物车角标数量+1
--- ### US011: 查看购物车 **基本信息**: - **Story ID**: US011 - **Epic**: E003 购物车管理 - **优先级**: P0 - **Story Point**: 2 - **预估工时**: 0.5天 **用户故事**:
作为 买家用户 我想要 查看购物车 以便于 确认要购买的商品
--- ### US012: 编辑购物车 **基本信息**: - **Story ID**: US012 - **Epic**: E003 购物车管理 - **优先级**: P1 - **Story Point**: 2 - **预估工时**: 0.5天 **用户故事**:
作为 买家用户 我想要 编辑购物车中的商品数量 以便于 调整购买数量
--- ### US013: 删除购物车商品 **基本信息**: - **Story ID**: US013 - **Epic**: E003 购物车管理 - **优先级**: P1 - **Story Point**: 1 - **预估工时**: 0.25天 **用户故事**:
作为 买家用户 我想要 删除购物车中的商品 以便于 不再购买该商品
--- ## 五、Epic 4: 订单管理 ### Epic描述 **作为** 产品系统 **我想要** 提供订单管理功能 **以便于** 用户可以创建订单、支付、查看订单状态 --- ### US014: 订单创建 **基本信息**: - **Story ID**: US014 - **Epic**: E004 订单管理 - **优先级**: P0 - **Story Point**: 5 - **预估工时**: 2天 **用户故事**:
作为 买家用户 我想要 创建订单 以便于 完成购买
**验收标准**: **场景1:正常创建订单**
GIVEN 用户已登录 AND 购物车有商品 WHEN 用户选择收货地址和支付方式 AND 点击"提交订单" THEN 订单创建成功 AND 生成订单号 AND 扣减库存 AND 跳转到支付页
**场景2:库存不足**
GIVEN 商品库存为5件 WHEN 用户购买10件 THEN 提示"库存不足,当前库存5件"
--- ### US015: 订单支付 **基本信息**: - **Story ID**: US015 - **Epic**: E004 订单管理 - **优先级**: P0 - **Story Point**: 5 - **预估工时**: 2天 **用户故事**:
作为 买家用户 我想要 支付订单 以便于 完成购买
--- ### US016: 查看订单列表 **基本信息**: - **Story ID**: US016 - **Epic**: E004 订单管理 - **优先级**: P0 - **Story Point**: 2 - **预估工时**: 0.5天 **用户故事**:
作为 买家用户 我想要 查看我的订单列表 以便于 了解所有订单状态
--- ### US017: 查看订单详情 **基本信息**: - **Story ID**: US017 - **Epic**: E004 订单管理 - **优先级**: P0 - **Story Point**: 2 - **预估工时**: 0.5天 **用户故事**:
作为 买家用户 我想要 查看订单详情 以便于 了解订单详细信息
--- ### US018: 取消订单 **基本信息**: - **Story ID**: US018 - **Epic**: E004 订单管理 - **优先级**: P1 - **Story Point**: 3 - **预估工时**: 1天 **用户故事**:
作为 买家用户 我想要 取消订单 以便于 不再购买该订单商品
--- ### US019: 申请退款 **基本信息**: - **Story ID**: US019 - **Epic**: E004 订单管理 - **优先级**: P1 - **Story Point**: 5 - **预估工时**: 2天 **用户故事**:
作为 买家用户 我想要 申请退款 以便于 退回不满意的商品
--- ## 六、Story依赖关系图
US001(注册) → US002(登录) → US004(个人信息) ↓ ↓ └────────────────┴→ US006(商品列表) → US008(商品详情) → US010(加入购物车) ↓ US011(查看购物车) ↓ US014(创建订单) → US015(支付)
--- ## 七、Sprint规划建议 ### Sprint 1(2周) **目标**:用户基础功能 **Story清单**: - US001: 用户注册 - US002: 用户登录 - US006: 商品列表 - US008: 商品详情 **预估工时**:3.5天 --- ### Sprint 2(2周) **目标**:购物车和订单 **Story清单**: - US010: 加入购物车 - US011: 查看购物车 - US014: 订单创建 - US015: 订单支付 **预估工时**:5天 --- ### Sprint 3(2周) **目标**:订单管理和优化 **Story清单**: - US016: 订单列表 - US017: 订单详情 - US007: 商品搜索 - US003: 找回密码 **预估工时**:4天 --- ## 八、下一步建议 ### 8.1 用户故事编写完成后 建议执行: 1. **Sprint规划** - 选择Story进入Sprint 2. **任务拆分** - 将Story拆分为开发任务 3. **工时评估** - 详细评估开发工时 4. **开始开发** - 按Sprint执行开发 ### 8.2 用户故事维护 - 定期回顾用户故事 - 根据反馈调整优先级 - 新增用户故事及时补充 - 完成的用户故事归档 --- ## 附录 ### A. 用户故事模板 ```markdown ### US{编号}: {功能名称} **基本信息**: - **Story ID**: US{编号} - **Epic**: E{编号} {Epic名称} - **优先级**: P{0-3} - **Story Point**: {1-10} - **预估工时**: {天数} **用户故事**:
作为 {角色} 我想要 {功能} 以便于 {价值}
**验收标准**: **场景1:{场景名称}**
GIVEN {前置条件} WHEN {操作} THEN {预期结果}
**技术备注**: - {技术细节} **依赖**: - {前置Story} **风险**: - {风险项} → {应对方案}
B. Story Point估算指南
| Story Point | 复杂度 | 工时估算 |
|---|---|---|
| 1 | 非常简单 | 0.25天 |
| 2 | 简单 | 0.5天 |
| 3 | 中等 | 1天 |
| 5 | 复杂 | 2天 |
| 8 | 非常复杂 | 3天 |
| 13 | 极其复杂 | 需拆分 |
文档状态: 用户故事清单完成 生成时间: {时间戳} 生成工具: super-pm v1.0.0