名称: 故事地图 描述: “从启发出的需求中创建用户故事地图。通过骨干活动、行走骨架和发布切片可视化用户旅程。输出Mermaid图表。” 参数提示: “[–domain <域名>] [–releases <数量>] [–format mermaid|yaml|markdown]” 允许工具: Task, Read, Write, Glob, Grep, Skill
故事地图命令
使用Jeff Patton的方法从启发出的需求中创建用户故事地图。
用法
/requirements-elicitation:story-map
/requirements-elicitation:story-map --domain "e-commerce"
/requirements-elicitation:story-map --domain "checkout" --releases 3
/requirements-elicitation:story-map --domain "user-auth" --format mermaid
参数
| 参数 | 必需 | 描述 |
|---|---|---|
| –domain | 否 | 要映射的领域(默认:当前/最近的) |
| –releases | 否 | 要创建的发布切片数量(默认:3) |
| –format | 否 | 输出格式:mermaid、yaml、markdown(默认:mermaid) |
工作流程
步骤1: 加载综合需求
从.requirements/{domain}/synthesis/文件夹读取以获取整合的需求。
步骤2: 识别骨干活动
分析需求以提取高级用户活动:
backbone_extraction:
approach:
- 按用户目标分组相关需求
- 识别主要的"用户做什么"
- 按典型序列从左到右排序
- 目标5-10个骨干活动
questions:
- "用户首先做什么?"
- "哪些活动对完成旅程至关重要?"
- "什么是自然序列?"
步骤3: 定义行走骨架
对于每个骨干活动,识别最小可行实现:
walking_skeleton_criteria:
- "完成此活动的最简单方式是什么?"
- "用户是否仅凭此就能完成目标?"
- "这是否通过系统的端到端?"
- "我们可以部署和测试这个吗?"
步骤4: 将需求映射到活动
将每个需求放置在适当的骨干活动下:
mapping_rules:
- 将需求匹配到它支持的活动
- 按优先级垂直排序(最高在顶部)
- 标记跨多个活动的需求
- 注意需求之间的依赖关系
步骤5: 创建发布切片
绘制水平线将故事分组到发布中:
release_slicing:
mvp:
- 行走骨架故事
- 关键必须有的(来自MoSCoW)
- "什么验证了核心价值主张?"
release_1:
- 高优先级增强
- "应该有"的需求
- "基于MVP反馈改进什么?"
future:
- 可有可无的功能
- "可能有的"需求
- 边缘情况和优化
步骤6: 生成输出
以请求的格式创建故事地图。
输出格式
Mermaid图表(默认)
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#e1f5fe'}}}%%
flowchart TB
subgraph BB["用户旅程(骨干)"]
direction LR
A1["🔍 搜索"] --> A2["📋 浏览"] --> A3["🛒 购买"] --> A4["📦 跟踪"]
end
subgraph WS["行走骨架(MVP基础)"]
A1 --- S1["基本关键词搜索"]
A2 --- S2["产品列表视图"]
A3 --- S3["购物车 + 结账"]
A4 --- S4["订单状态页面"]
end
subgraph R1["发布1"]
S1 --- R1A["按类别筛选"]
S1 --- R1B["排序选项"]
S2 --- R1C["产品详情页面"]
S3 --- R1D["多种支付方式"]
S4 --- R1E["电子邮件通知"]
end
subgraph R2["发布2"]
R1A --- R2A["保存的搜索"]
R1C --- R2B["产品比较"]
R1D --- R2C["愿望清单"]
R1E --- R2D["短信通知"]
end
subgraph R3["未来"]
R2A --- R3A["AI推荐"]
R2B --- R3B["AR预览"]
R2C --- R3C["一键购买"]
end
YAML导出
story_map:
title: "电子商务平台"
domain: "e-commerce"
created: "2025-12-26"
source_synthesis: "SYN-20251226-120000.yaml"
backbone:
- id: search
name: "搜索产品"
walking_skeleton: "基本关键词搜索"
emoji: "🔍"
- id: browse
name: "浏览目录"
walking_skeleton: "产品列表视图"
emoji: "📋"
- id: purchase
name: "购买"
walking_skeleton: "购物车 + 结账"
emoji: "🛒"
- id: track
name: "跟踪订单"
walking_skeleton: "订单状态页面"
emoji: "📦"
releases:
- name: "MVP"
value_statement: "用户可以在线查找和购买产品"
stories:
- activity: search
items: ["基本关键词搜索"]
- activity: browse
items: ["产品列表视图"]
- activity: purchase
items: ["购物车 + 结账"]
- activity: track
items: ["订单状态页面"]
- name: "发布1"
value_statement: "用户可以通过更好的选项更快地找到产品"
stories:
- activity: search
items: ["按类别筛选", "排序选项"]
- activity: browse
items: ["产品详情页面"]
- activity: purchase
items: ["多种支付方式"]
- activity: track
items: ["电子邮件通知"]
- name: "发布2"
value_statement: "用户可以更高效地购物"
stories:
- activity: search
items: ["保存的搜索"]
- activity: browse
items: ["产品比较"]
- activity: purchase
items: ["愿望清单"]
- activity: track
items: ["短信通知"]
Markdown导出
# 故事地图: 电子商务平台
## 骨干(用户旅程)
| 搜索 | 浏览 | 购买 | 跟踪 |
|------|------|------|------|
| 🔍 查找产品 | 📋 探索目录 | 🛒 购买物品 | 📦 跟踪订单 |
## MVP(行走骨架)
| 搜索 | 浏览 | 购买 | 跟踪 |
|------|------|------|------|
| 基本关键词搜索 | 产品列表视图 | 购物车 + 结账 | 订单状态页面 |
## 发布1
| 搜索 | 浏览 | 购买 | 跟踪 |
|------|------|------|------|
| 按类别筛选 | 产品详情页面 | 多种支付方式 | 电子邮件通知 |
| 排序选项 | | | |
## 发布2
| 搜索 | 浏览 | 购买 | 跟踪 |
|------|------|------|------|
| 保存的搜索 | 产品比较 | 愿望清单 | 短信通知 |
示例会话
/requirements-elicitation:story-map --domain "inventory-management" --format mermaid
加载综合: .requirements/inventory-management/synthesis/SYN-20251226-143000.yaml
找到需求: 28
分析用户旅程...
识别的骨干活动: 5
1. 监控库存
2. 重新订购物品
3. 接收货物
4. 管理位置
5. 生成报告
创建行走骨架...
- 监控库存 → "查看当前库存水平"
- 重新订购物品 → "创建采购订单"
- 接收货物 → "标记物品已接收"
- 管理位置 → "查看仓库列表"
- 生成报告 → "基本库存报告"
将28个需求映射到活动...
- 监控库存: 8个故事
- 重新订购物品: 7个故事
- 接收货物: 5个故事
- 管理位置: 4个故事
- 生成报告: 4个故事
创建发布切片...
- MVP: 5个故事(行走骨架)
- 发布1: 12个故事
- 发布2: 8个故事
- 未来: 3个故事
生成Mermaid图表...
[Mermaid图表输出]
保存到: .requirements/inventory-management/story-map/
- story-map.mmd (Mermaid源)
- story-map.yaml (结构化数据)
输出位置
output_locations:
mermaid: ".requirements/{domain}/story-map/story-map.mmd"
yaml: ".requirements/{domain}/story-map/story-map.yaml"
markdown: ".requirements/{domain}/story-map/story-map.md"
与其他命令的集成
启发后
# 首先启发需求
/requirements-elicitation:discover "inventory management"
# 然后创建故事地图
/requirements-elicitation:story-map --domain "inventory-management"
导出前
# 为优先级创建故事地图
/requirements-elicitation:story-map --domain "checkout"
# 使用故事地图指导过滤导出
/requirements-elicitation:export --domain "checkout" --filter "release:mvp"
使用的技能
此命令使用user-story-mapping技能用于:
- 骨干识别技术
- 行走骨架定义
- 发布切片策略
- 输出格式指导
错误处理
error_handling:
no_synthesis:
message: "未找到该领域的综合需求"
action: "首先运行/discover以启发需求"
insufficient_requirements:
message: "需求太少,无法创建有意义的故事地图(最少5个)"
action: "继续启发或合并领域"
ambiguous_activities:
message: "无法确定清晰的骨干活动"
action: "提示用户澄清主要用户目标"