SuperPM pm-user-story

install
source · Clone the upstream repo
git clone https://github.com/konglong87/superPM
Claude Code · Install into ~/.claude/skills/
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"
manifest: skills/02-solution-design/pm-user-story/SKILL.md
source content

Preamble (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