requirements-workshop
需求讨论与完善
将用户想法快速转化为完整需求文档,强调 MVP、业务架构先行、功能闭环、前后端一体。
版本号约定(贯穿本套4个skill)
文中 1.X 是工作版本目录占位符,X 为整数。
- 首次启动:
workplace/1/;大版本迭代新建workplace/2/,旧版本归档 - 同一版本内的需求、技术方案、计划、测试代码共享同一 X
- 写文件、跑命令时必须把
1.X替换为实际数字,不要在真实路径里保留1.X字面量
执行前先扫描 workplace/ 已有子目录确认当前版本号。
核心原则:前后端联合考虑 + 推导式架构设计
任何用户感知的功能都必须配套:用户入口(页面/按钮)、界面反馈(成功/失败/加载/空/异常态)、数据展示(结果 UI 形态)。
仅讨论后端逻辑会导致前端模块在后续阶段缺失。本 skill 在功能清单与页面清单两层强制覆盖前端。
中大型需求必须先做业务架构再拆功能——但架构设计不是需求场景的重新分组。架构是从需求中推导出来的设计决策:理解核心运转机制→识别设计问题→做决策→得出模块组织。好的架构读完让人说"原来应该这样组织",而不是"这就是需求换个说法"。
本步骤聚焦业务架构(核心机制、共性层提取、AI节点规划与Agent/LLM选型、风险分级、模块组织),不涉及技术实现细节(技术选型、API设计、数据库表、服务拆分),后者由
tech-designskill 负责。
文档结构(核心输出)
| 章节 | 内容 | 检验 |
|---|---|---|
| 价值与可行性 | 用户痛点、不做的后果、技术/资源/兼容可行性 | 能说出具体用户和具体痛点 |
| 业务架构 | 核心机制、设计问题与决策、模块划分 | 中大型需求必填;小需求可标注"不适用" |
| 功能清单 | 每个功能的描述、用户入口、输入输出、闭环 | 每个功能能自我闭环且有界面入口;按模块组织 |
| 页面/界面清单 | 所有页面、路由、状态、对应功能 | 前端可据此明确实现范围 |
| 时序图 | 业务流程与数据流转(含前端) | 完整用户旅程可视化 |
| 验收标准 | 验证方法与成功指标(含前端可见性) | 有可执行的验证步骤 |
工作流程(6 步)
- 理解需求(一次性问清场景、用户、痛点、期望、价值与可行性)
- 业务架构设计(中大型需求必做;小需求跳过)
- 梳理功能清单(每个功能含用户入口与闭环,按模块组织)
- 梳理页面清单 + 时序图
- 产出文档 + 自检 + 用户确认
- 确认后 → 进入
tech-design
业务架构步骤触发条件:满足以下任一条件时,第2步不可跳过——
- 涉及新模块或新子系统
- 需要修改现有数据模型
- 涉及跨模块交互(3个以上模块)
- 影响范围超过3个功能点
- 用户提到"系统""架构""扩展""重构"等词
小需求(单页面CRUD、纯UI调整、单接口新增)跳过第2步,功能清单中标注"本需求不涉及业务架构调整"即可。
第一步:理解需求(合并背景/价值/可行性)
先快速扫描项目结构与已有相关文档,再按下列要点一组问完(不需逐题等待,可在同一轮中给出 3-5 个问题):
场景与用户
- 什么场景下想到要做这个?目标用户是谁?现状怎么解决,有什么不满?
价值判断
- 不做会怎样?现有方案为什么不够?这是雪中送炭还是锦上添花?
可行性
- 技术:现有技术栈能否支持?是否需要引入新技术或外部服务?
- 资源:预估投入?外部依赖?
- 兼容:是否会改动现有数据模型 / 与已有功能冲突?
价值分级:
- 核心价值(影响主任务)→ 优先级高
- 效率价值(提升效率)→ 视资源决定
- 体验价值(美观/便利)→ 低优先级
MVP 界定:列子功能 → 分核心/辅助/优化 → MVP 只保留核心,能完成完整任务即可。
第二步:业务架构设计(中大型需求必做)
这一步不是给需求场景重新分组,而是做顶层设计——从需求中推导出系统应该怎么构建、怎么组织。
架构设计应该产出设计洞察,而不是需求的另一种排列。好的架构设计读完让人说"原来应该这样组织",而不是"这就是需求换个说法"。
2.1 理解核心机制
先搞清楚这个系统/能力本质上是怎样运转的。不是罗列功能,而是理解运作机制——它靠什么原理工作、关键环节之间怎么咬合。
需要回答:
- 这个需求的核心命题是什么?一句话说清它在做什么事
- 要实现这个命题,系统需要哪些关键能力?这些能力各自解决什么问题?
- 这些能力之间的关系是什么?谁依赖谁的产出?谁触发谁?
- 数据/信息在系统中怎么流转?从哪里来、经过什么处理、到哪里去
怎么才算理解了机制:能说出"这个系统本质上是一个XXX"——比如"一个反馈控制循环"、"一个管道式处理链"、"一个事件驱动的协作网络"。如果能说出这个抽象,说明你看到了本质;如果只能说"它有4个功能",说明你还停留在表面。
2.2 设计问题与决策
基于核心机制,识别需要做出的关键设计决策。这是架构设计的核心——架构就是一系列设计决策的结果。
设计问题不是从模板里挑的,而是从核心机制中涌现的。当你理解了系统怎么运转,自然会遇到"这个地方该怎么设计"的问题。下面的维度是审视的视角,不是填表的清单——每个维度只有在确实产生了设计问题时才展开,没有问题的维度不要硬写。
共性识别:多个环节是否在做"结构相同、数据不同"的事?如果是,差异在哪里——是处理流程不同,还是只是输入数据不同?如果流程同构、仅数据不同,值得抽取为中间层。判断关键——共性是"结构相同"而非"看起来相似",两个环节都用了LLM不叫共性,但"获取上下文→LLM推理→产出结构化建议"这种流程同构就是。
独立性确认:哪些能力只服务于单一环节、逻辑与特定业务强绑定?这些不应该强行抽象——强行抽象会让简单问题变复杂,新增场景时反而要绕弯。
AI节点规划:核心机制中哪些环节需要AI参与?对每个环节想清楚:
-
AI的任务类型——分类器(从有限选项判断)、生成器(产出新内容)、审核者(判断是否合格)、分析师(发现模式/异常)、规划者(分解目标为步骤)。这只是说明它在做什么类型的任务
-
选Agent还是LLM——默认倾向Agent。原因:Agent可以自主检索上下文,新增AI节点时只需给它工具和目标,不需要为每个节点专门开发上下文组装功能。选LLM意味着每次新增节点都要开发和维护"把什么数据喂给LLM"的上下文管道,这个隐性成本会随节点增多而持续增长。只有在输入完全确定且极其简单(如单条消息的分类判断)时,才考虑用LLM省掉工具调用的开销
-
Agent角色定义(Agent节点必填,LLM节点不需要)——每个Agent节点不是通用AI,而是有明确身份的专家。定义角色定位才能决定它的思考视角、工具需求、决策边界和协作方式:
- 角色定位:它在这个环节中扮演什么身份?比如"资深运维工程师"而非"问题发现器"——前者有经验判断的视角,后者只是机械执行。角色定位决定了它看问题的角度和做决策的倾向
- 思考边界:它应该考虑什么、不应该考虑什么?比如诊断Agent应该深入分析根因但不应该越权提出修复方案——那是优化Agent的事。边界不清的Agent会越界,导致职责混乱
- 需要的工具:基于角色定位和思考边界,这个Agent需要访问哪些数据、调用哪些能力?工具定义了Agent的行动范围——给了什么工具,它就在什么范围内自主决策
- 决策自主度:哪些决策它可以自主做出、哪些必须上报或等待确认?风险等级影响自主度——低风险的判断可以自主,高风险的变更必须人工确认
风险分级:不同AI节点的错误后果不同。生成器产出直接生效会搞坏线上(高风险),分类器误判只是漏掉或误报(低风险),审核者过度否决会丢失优化机会(中风险)。风险不同→兜底策略不同→架构上区别对待。高风险节点必须有人工审核+自动化验证双重兜底,低风险节点不需要额外机制。
数据流与控制流:信息怎么流转?哪些环节串行(A的输出是B的输入)、哪些可并行?是否存在需要协调的环节(如多条路径的产出需要合并)?
决策的表达方式:每个决策用"问题→可选方案→选择→理由"的结构。理由要说清楚为什么,不能只说"更好"——要让读的人理解权衡过程。如果多个决策之间有关联(比如决策1选了A导致决策2只能选B),要说明关联关系。
2.3 模块划分
基于2.1的核心机制和2.2的设计决策,形成最终的模块组织。模块不是"功能分组",而是设计决策的落地——每个模块的存在都应该有设计决策支撑。
每个模块说明:
- 职责(一句话)
- 层次(共性中间层 / 业务专属层)——共性层模块的存在一定有2.2的决策支撑
- 包含的AI节点(如有)——引用2.2的规划,Agent节点标注角色定位、工具需求、决策自主度
- 与其他模块的关系
- 本期范围 vs 未来扩展
2.4 架构验证
与用户一起确认:
- 核心机制的理解是否准确?有没有看偏?
- 设计决策是否有据?有没有遗漏的关键决策?
- 共性层是否抽取得当(不遗漏也不过度抽象)?
- AI节点选型是否合理?选LLM的节点是否有充分理由(输入完全确定且极简),而不是为了"可控"而牺牲扩展性?
- Agent节点的角色定位是否清晰?有没有职责重叠或边界模糊的Agent?
- 模块划分是否清晰?每个模块的存在都能追溯到设计决策吗?
第三步:梳理功能清单
每个功能用如下结构描述。功能按第二步的模块分组,同一模块的功能放在一起:
### [模块名]
#### 功能N:[功能名]
**触发条件**:[使用场景]
**用户入口(前端)**:
- 页面/路由:[页面名 + 路由]
- 触发元素:[按钮/菜单/快捷键]
- 可见性:[何种角色/状态可见]
**输入**:[字段 + 界面元素(表单/选择器/上传)]
**处理逻辑**:[系统做什么]
**输出**:
- 业务结果:[数据/状态]
- 界面呈现:[列表/详情/弹窗/Toast]
- 加载/空/错误态:[各状态界面表现]
**闭环**:触发入口 → 操作路径 → 完成终点 → 结果反馈(成功/失败的具体界面)→ 异常处理
闭环必检:每个功能必须能回答"用户从哪里进入 / 怎么操作 / 看到什么完成 / 失败怎么提示",缺一即不完整。
跨模块功能标注:如果一个功能涉及多个模块的协作,在功能描述中标注涉及的模块和交互方式。
第四步:页面清单 + 时序图
页面/界面清单(汇总所有功能的用户入口):
| 页面/视图 | 路由 | 所属模块 | 主要功能 | 关键组件 | 状态(loading/空/错误/成功) | 权限 |
|---|---|---|---|---|---|---|
| 工单列表 | /tickets | 工单模块 | 功能1、功能3 | 列表、筛选、分页 | 加载中 / 无数据 / 加载失败 | 已登录 |
校验:功能清单中每个"用户入口"页面必须出现在本表;本表每个页面必须至少对应一个功能。
时序图(Mermaid sequenceDiagram)展示业务流程与前后端交互:
sequenceDiagram
participant U as 用户
participant F as 前端
participant B as 后端
participant D as 数据库
U->>F: 触发操作
F->>B: 发送请求
B->>D: 查询/写入
D-->>B: 返回
B-->>F: 响应
F-->>U: 展示结果
对于涉及多模块交互的流程,时序图中用不同 participant 区分各模块。
第五步:产出文档 + 自检 + 用户确认
命名:YYYY-MM-DD-需求标题.md
位置:workplace/1.X/requirements/(路径中 X 替换为实际数字)
文档模板
# [需求名称]
## 一、价值与可行性
### 1.1 用户与痛点
- 目标用户:[角色]
- 触发场景:[场景]
- 现状痛点:[描述]
- 价值判断:[核心/效率/体验]
### 1.2 不做的后果
[损失/持续痛点]
### 1.3 与现有方案的差异
[新方案解决了什么]
### 1.4 可行性
- 技术:[方案/风险]
- 资源:[投入/依赖]
- 兼容:[与现有功能/数据关系]
- 结论:完全可行 / 条件可行 / 暂时不可行
## 二、业务架构
> 小需求可写"本需求不涉及业务架构调整",跳过以下各节。
### 2.1 核心机制
[描述系统/能力的核心运作机制——它怎么运转,关键能力是什么,能力之间的关系和数据流转]
### 2.2 设计问题与决策
[从核心机制中涌现的设计问题,逐个决策。维度:共性识别、独立性确认、AI节点规划(任务类型+Agent/LLM+Agent角色定义)、风险分级、数据流与控制流。每个决策:问题→可选方案→选择→理由。只展开确实产生设计问题的维度]
### 2.3 模块划分
[基于设计决策的模块组织,每个模块说明职责、层次、AI节点、依赖、本期vs扩展]
## 三、功能清单
(按模块分组,按第三步结构描述每个功能)
## 四、页面/界面清单
(按第四步表格汇总)
## 五、时序图
(Mermaid sequenceDiagram)
## 六、验收标准
| 维度 | 验证方法 | 成功标准 |
|------|----------|----------|
| 功能正确(后端) | [接口/逻辑测试步骤] | [指标] |
| 功能正确(前端) | [界面操作步骤] | [可见性/交互正确] |
| 性能 | [测试方法] | [响应时间] |
| 架构一致性 | [业务模块边界/协作验证] | [无协作断点、边界清晰] |
## 七、附录
### 7.1 风险清单
[识别的风险与应对]
### 7.2 MVP 范围
- 必做:[核心功能]
- 选做:[辅助功能]
- 暂不做:[优化功能]
自检(一次 subagent 审查)
读取 references/doc-reviewer-prompt.md,将 [SPEC_FILE_PATH] 替换为实际路径后派发 subagent。
| 状态 | 处理 |
|---|---|
| 通过 | 进入用户确认 |
| 发现问题 | 修复后无需重审 |
用户确认
需求文档已完成,保存至
<路径>。请确认:
- 价值判断是否准确?
- 业务架构是否合理?核心机制理解是否准确?设计决策是否有据?
- 功能清单是否完整、闭环?
- 页面清单是否覆盖所有功能入口?
- 验收标准是否可执行?
确认后宣布进入 tech-design,并产出交接清单:
需求文档已完成并确认。进入 tech-design 时请携带以下信息:
交接清单:
- 需求文档路径:
workplace/1.X/requirements/YYYY-MM-DD-xxx.md- 功能数量:N个(列出编号)
- 页面数量:M个(列出路由)
- 关键验收标准:[摘要]
- 特别关注点:[用户强调的内容]
tech-design 第一步应确认对这些内容的理解。
工作原则
- 一组问完:第一步把背景/价值/可行性合并问,避免来回拉锯
- 推导式架构:业务架构从需求中推导——先理解核心机制,再识别设计问题,再做决策,最后得出模块组织。不是填表,不是需求重排
- 用用户语言:避免技术术语
- 具体优于抽象:追问具体场景、具体用户
- YAGNI:不添加用户未提到的功能
- 闭环必检:每个功能都要能完成完整流程
- 前后端均覆盖:功能清单+页面清单两层强制
特殊情况
- 需求过大:建议拆分子项目,先选一个讨论
- 需求模糊:要求用户举具体例子
- 价值不足:明确告知属于体验价值,确认是否仍要做
- 不可行:记录阻碍,讨论替代方案或推迟
- 架构分歧:给出2-3个设计方案,列出各自优劣和设计决策的差异,让用户选择
- AI选型拿不准:默认选Agent。Agent自主检索上下文的能力让新增节点只需给工具和目标,不需要为每个节点开发上下文组装——这是系统级的扩展性优势。只在输入完全确定且极简时才考虑用LLM
More from anian0/pick-skills
tech-design
|
11implementation-planning
|
11plan-execution
|
10workspace-setup
|
8test-suite-maintainer
在项目迭代上线前维护和执行全量测试用例集。当用户提到"上线前测试"、"更新测试用例"、"全量测试"、"跑用例"、"维护测试集"、"测试覆盖"、"检测代码变更需要更新哪些测试"时触发此skill。也适用于用户指定功能模块需要添加或更新测试的场景。
6novel-setup
小说项目冷启动与长篇结构管理助手。用于从0创建小说项目、规划整体走向、维护故事大纲、追踪伏笔、维护主角档案与故事状态快照、维护"当前冲突"短期核心文档、构建并维护"创作风格知识库"(场景化描写规则+量化自检清单)、产出每章"开写简报"、接手待定设定中的世界规则/伏笔/大纲类条目晋升。触发场景:用户要求新建小说项目、开坑、规划大纲、设计世界观、创建主角、调整故事走向、追踪伏笔、检查故事进度、查看当前故事状态、设置/更新当前冲突、分卷分幕规划、时间线整理、晋升待定设定中的世界规则、调整写作注意事项、配置/扩展创作风格知识库、生成开写简报、配合设定体检或阶段回顾整改宏观设定、从参考小说提取创作风格等。与novel-lite(写章节)、novel-review(审章节)、novel-style-extract(风格提取)配套使用,负责"宏观层"。
5