skills/requirements-workshop/SKILL.md
当用户想要开发新功能、讨论需求、梳理业务逻辑时触发。通过多轮对话将模糊的想法转化为结构化的需求文档,为后续技术方案设计提供输入。 适用场景:用户说"我想实现XX功能"、"讨论一下这个需求"、"帮我分析一下怎么做"、"这个需求该怎么设计"、"写个需求文档"等。 本skill只负责产出需求文档,不进入技术设计或代码实现阶段。
npx skillsauth add anian0/pick-skills requirements-workshopInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
将用户想法快速转化为完整需求文档,强调 MVP、业务架构先行、功能闭环、前后端一体。
<HARD-GATE> 未产出并经用户确认需求文档之前,不要进入实现阶段:不要写代码、不要建项目结构、不要调用下游skill。 </HARD-GATE>文中 1.X 是工作版本目录占位符,X 为整数。
workplace/1/;大版本迭代新建 workplace/2/,旧版本归档1.X 替换为实际数字,不要在真实路径里保留 1.X 字面量执行前先扫描 workplace/ 已有子目录确认当前版本号。
任何用户感知的功能都必须配套:用户入口(页面/按钮)、界面反馈(成功/失败/加载/空/异常态)、数据展示(结果 UI 形态)。
仅讨论后端逻辑会导致前端模块在后续阶段缺失。本 skill 在功能清单与页面清单两层强制覆盖前端。
中大型需求必须先做业务架构再拆功能——但架构设计不是需求场景的重新分组。架构是从需求中推导出来的设计决策:理解核心运转机制→识别设计问题→做决策→得出模块组织。
本步骤聚焦业务架构(核心机制、共性层提取、AI节点规划与Agent/LLM选型、风险分级、模块组织),不涉及技术实现细节(技术选型、API设计、数据库表、服务拆分),后者由
tech-designskill 负责。
| 章节 | 内容 | 检验 | |------|------|------| | 价值与可行性 | 用户痛点、不做的后果、技术/资源/兼容可行性 | 能说出具体用户和具体痛点 | | 业务架构 | 核心机制、设计问题与决策、模块划分 | 中大型需求必填;小需求可标注"不适用" | | 功能清单 | 每个功能的描述、用户入口、输入输出、闭环 | 每个功能能自我闭环且有界面入口;按模块组织 | | 页面/界面清单 | 所有页面、路由、状态、对应功能 | 前端可据此明确实现范围 | | 时序图 | 业务流程与数据流转(含前端) | 完整用户旅程可视化 | | 验收标准 | 验证方法与成功指标(含前端可见性) | 有可执行的验证步骤 | | 附录 | 特别关注点、风险清单、范围确认 | 特别关注点非空且具体 |
tech-design业务架构步骤触发条件:满足以下任一条件时,第2步不可跳过——
小需求(单页面CRUD、纯UI调整、单接口新增)跳过第2步,功能清单中标注"本需求不涉及业务架构调整"即可。
先快速扫描项目结构与已有相关文档,再按下列要点一组问完(不需逐题等待,可在同一轮中给出 3-5 个问题):
场景与用户
价值判断
可行性
价值分级:
MVP 界定:列子功能 → 分核心/辅助/优化 → MVP 只保留核心,能完成完整任务即可。
<PRINCIPLE> 用用户语言提问,避免技术术语。需求模糊时追问具体场景与具体用户,不要让用户用"可能/大概"。 </PRINCIPLE>这一步不是给需求场景重新分组,而是做顶层设计——从需求中推导出系统应该怎么构建、怎么组织。
架构设计应该产出设计洞察,而不是需求的另一种排列。好的架构设计读完让人说"原来应该这样组织",而不是"这就是需求换个说法"。
先搞清楚这个系统/能力本质上是怎样运转的。不是罗列功能,而是理解运作机制——它靠什么原理工作、关键环节之间怎么咬合。
需要回答:
怎么才算理解了机制:能说出"这个系统本质上是一个XXX"——比如"一个反馈控制循环"、"一个管道式处理链"、"一个事件驱动的协作网络"。如果能说出这个抽象,说明你看到了本质;如果只能说"它有4个功能",说明你还停留在表面。
<PRINCIPLE> 核心机制描述应该让不懂技术的人也能理解"这个系统是怎么运转的"。用业务语言,不要用技术术语。重点说"它怎么工作",不要说"它有哪些功能"。如果发现自己在罗列功能而不是描述运转方式,停下来重新想——机制是运作原理,不是功能清单。 </PRINCIPLE>基于核心机制,识别需要做出的关键设计决策。这是架构设计的核心——架构就是一系列设计决策的结果。
设计问题不是从模板里挑的,而是从核心机制中涌现的。当你理解了系统怎么运转,自然会遇到"这个地方该怎么设计"的问题。下面的维度是审视的视角,不是填表的清单——每个维度只有在确实产生了设计问题时才展开,没有问题的维度不要硬写。
共性识别:多个环节是否在做"结构相同、数据不同"的事?如果是,差异在哪里——是处理流程不同,还是只是输入数据不同?如果流程同构、仅数据不同,值得抽取为中间层。判断关键——共性是"结构相同"而非"看起来相似",两个环节都用了LLM不叫共性,但"获取上下文→LLM推理→产出结构化建议"这种流程同构就是。
独立性确认:哪些能力只服务于单一环节、逻辑与特定业务强绑定?这些不应该强行抽象——强行抽象会让简单问题变复杂,新增场景时反而要绕弯。
AI节点规划:核心机制中哪些环节需要AI参与?对每个环节想清楚:
AI的任务类型——分类器(从有限选项判断)、生成器(产出新内容)、审核者(判断是否合格)、分析师(发现模式/异常)、规划者(分解目标为步骤)。这只是说明它在做什么类型的任务
选Agent还是LLM——默认倾向Agent。原因:Agent可以自主检索上下文,新增AI节点时只需给它工具和目标,不需要为每个节点专门开发上下文组装功能。选LLM意味着每次新增节点都要开发和维护"把什么数据喂给LLM"的上下文管道,这个隐性成本会随节点增多而持续增长。只有在输入完全确定且极其简单(如单条消息的分类判断)时,才考虑用LLM省掉工具调用的开销
Agent角色定义(Agent节点必填,LLM节点不需要)——每个Agent节点不是通用AI,而是有明确身份的专家。定义角色定位才能决定它的思考视角、工具需求、决策边界和协作方式:
风险分级:不同AI节点的错误后果不同。生成器产出直接生效会搞坏线上(高风险),分类器误判只是漏掉或误报(低风险),审核者过度否决会丢失优化机会(中风险)。风险不同→兜底策略不同→架构上区别对待。高风险节点必须有人工审核+自动化验证双重兜底,低风险节点不需要额外机制。
数据流与控制流:信息怎么流转?哪些环节串行(A的输出是B的输入)、哪些可并行?是否存在需要协调的环节(如多条路径的产出需要合并)?
决策的表达方式:每个决策用"问题→可选方案→选择→理由"的结构。理由要说清楚为什么,不能只说"更好"——要让读的人理解权衡过程。如果多个决策之间有关联(比如决策1选了A导致决策2只能选B),要说明关联关系。
基于2.1的核心机制和2.2的设计决策,形成最终的模块组织。模块不是"功能分组",而是设计决策的落地——每个模块的存在都应该有设计决策支撑。
每个模块说明:
与用户一起确认:
每个功能用如下结构描述。功能按第二步的模块分组,同一模块的功能放在一起:
### [模块名]
#### 功能N:[功能名]
**触发条件**:[使用场景]
**用户入口(前端)**:
- 页面/路由:[页面名 + 路由]
- 触发元素:[按钮/菜单/快捷键]
- 可见性:[何种角色/状态可见]
**输入**:[字段 + 界面元素(表单/选择器/上传)]
**处理逻辑**:[系统做什么]
**输出**:
- 业务结果:[数据/状态]
- 界面呈现:[列表/详情/弹窗/Toast]
- 加载/空/错误态:[各状态界面表现]
**闭环**:触发入口 → 操作路径 → 完成终点 → 结果反馈(成功/失败的具体界面)→ 异常处理
**测试关注**(简要标记,供技术方案阶段拆分功能点):
- 用 `[后端]` 标记需要后端验证的点(数据写入、参数校验、权限控制、业务逻辑分支)
- 用 `[前端]` 标记需要前端验证的点(页面渲染、交互反馈、状态转换、错误展示)
- 每个功能至少标记一个 `[后端]` 和一个 `[前端]` 关注点
- 不展开详细测试步骤,只标记"需要测什么"
示例:
```markdown
**测试关注**:
- [后端] 正常流程数据写入数据库
- [后端] 参数校验(空值、重复、格式错误)
- [前端] 成功反馈(Toast + 页面跳转)
- [前端] 失败反馈(表单错误标红 + 错误信息)
- [前端] 加载状态(按钮loading + 防重复提交)
```
闭环必检:每个功能必须能回答"用户从哪里进入 / 怎么操作 / 看到什么完成 / 失败怎么提示",缺一即不完整。
跨模块功能标注:如果一个功能涉及多个模块的协作,在功能描述中标注涉及的模块和交互方式。
页面/界面清单(汇总所有功能的用户入口):
| 页面/视图 | 路由 | 所属模块 | 主要功能 | 关键组件 | 状态(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 风险清单
[识别的风险与应对——从第一步可行性分析和第二步设计决策中提取]
### 7.3 范围确认
- 本期功能:[本次需求确定要实现的所有功能,只列确定要做的]
- 不在本期:[明确排除的功能,说明原因(如:依赖其他模块、需后续迭代)]
**原则**:需求文档只包含确定要开发的内容。如果用户提到某些功能"以后再做"或"看情况",不要写入需求文档,而是记录在"不在本期"中并说明原因。
附录填写说明:
读取 references/doc-reviewer-prompt.md,将 [SPEC_FILE_PATH] 替换为实际路径后派发 subagent。
| 状态 | 处理 | |------|------| | 通过 | 进入用户确认 | | 发现问题 | 修复后无需重审 |
需求文档已完成,保存至
<路径>。请确认:
- 价值判断是否准确?
- 业务架构是否合理?核心机制理解是否准确?设计决策是否有据?
- 功能清单是否完整、闭环?
- 页面清单是否覆盖所有功能入口?
- 验收标准是否可执行?
确认后宣布进入 tech-design,并产出交接清单:
需求文档已完成并确认。进入 tech-design 时请携带以下信息:
交接清单:
- 需求文档路径:
workplace/1.X/requirements/YYYY-MM-DD-xxx.md- 功能数量:N个(列出编号)
- 每个功能的测试关注标记数量:后端X个,前端Y个(供技术方案阶段拆分功能点)
- 页面数量:M个(列出路由)
- 关键验收标准:[摘要]
- 特别关注点:[从需求文档附录 7.1 节提取用户强调的内容]
tech-design 第一步应确认对这些内容的理解,在分析变更时基于测试关注标记创建功能点(FP-N),在制定测试策略时创建测试点(TC-N)。
| Skill | 关系 | |-------|------| | tech-design | 本 skill 的下游:需求文档确认后,由 tech-design 基于需求产出技术方案 |
development
编排无人值守项目开发闭环,从需求澄清、技术方案、实施计划、代码执行、阶段审查、疑问回退到端到端测试验收。用户要求“无人值守开发”“端到端交付”“自动推进研发流程”“严格审查并回退重做”“从需求到测试全流程执行”时使用;本 skill 负责总控,不替代 requirements-workshop-v2、tech-design-v2、implementation-planning-v2、plan-execution-v2、project-development-review-v2 或 test-suite-maintainer 的阶段规则。
development
基于已确认的需求简报创建简洁的实现契约。当需求已确认,用户要求技术方案、实现方案、API 或数据设计、代码变更契约时使用。本 skill 只设计方案,不写生产代码。
content-media
将项目想法或功能请求澄清为简洁、聚焦决策的需求简报。当用户想讨论需求、确定范围、把想法整理成开发前输入,或为 tech-design-v2 准备需求材料时使用。本 skill 只产出需求,不做技术方案或代码实现。
development
项目开发 v2 skill 套件的共享政策和交付契约。当维护、审查、分享或挂载 requirements-workshop-v2、tech-design-v2、implementation-planning-v2、plan-execution-v2 使用的公共文档时使用;当任务涉及 v2 提问策略、交付契约或禁止模拟完成策略时也使用。