modelscope.cn

requirement-clarify

需求澄?

Installation

$ npx skills add https://modelscope.cn

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from modelscope.cn · top by installs.

npx skills add https://modelscope.cn

Browse all from modelscope.cn

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 20,946 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

Requirement Clarify -- 需求澄清协议

核心原则

先识别类型,再选对路径。 不同类型的需求,分析视角完全不同。

触发条件

用户提出任何涉及代码或架构的需求时自动触发。

Phase 0: 需求类型识别(最先执行)

收到需求后,第一步是判断需求属于哪种类型。不同类型走不同的分析路径。

需求类型分类

类型 识别特征 用户意图 分析视角
A. 实施型 "加个功能""改个Bug""做个优化""把这个改成..." 明确要动手写代码 开发实现视角(怎么实现)
B. 方案讨论型 "这个怎么做比较好""有没有什么方案""你觉得怎么实现" 讨论实现路径,尚未决定动手 多视角对比(产品/用户/开发)
C. 决策型 "要不要做这个""A还是B""哪个更合适" 需要利弊分析辅助决策 战略视角(成本/收益/风险)
D. 探索型 "这个能不能实现""技术上可行吗""有没有可能..." 评估可行性,尚未决定做不做 技术可行性视角
E. 问题诊断型 "这个为什么不行""哪里出了问题""帮我看看..." 定位问题根因 调试视角(数据流/状态/日志)
F. 纠错型 "这个需要修复""这里有问题""XX功能不对"(常附截图/录屏) 快速定位缺陷根因模块 感知层→实现层逆向映射

类型判断规则

  • 用户描述中有明确动作指令(加/改/删/修/建)→ A 实施型
  • 用户描述中有疑问词但无动作指令(怎么/如何/哪种/能不能)→ B/C/D
  • 用户描述中有症状但无方案(为什么/出问题了/不对)→ E 诊断型
  • 用户描述中有缺陷现象+修复诉求(需要修复/这里有问题/XX不对/附截图)→ F 纠错型
  • E 与 F 的区分:E 是"为什么会这样"(探究根因),F 是"这里不对,改掉它"(修复诉求+现象描述);F 先经纠错提问钩子做非技术提问定位,再进入 E 的诊断流程
  • 不确定时,直接问用户:"你是希望我直接实现,还是先讨论方案?"

各类型的分析路径

A. 实施型 → 走完整澄清 + 实施流程

即"先问清楚再动手",走 Phase 1-4 完整流程(详见下方)。

B. 方案讨论型 → 多视角分析

目标:不急着写代码,先从多个角度分析方案优劣,帮用户看清全貌。

分析视角矩阵

视角 关注点 典型问题
产品经理视角 用户价值、使用场景、功能优先级、与产品路线图的关系 "这个功能解决什么痛点?目标用户是谁?使用频率多高?"
终端用户视角 操作体验、学习成本、操作路径长度、心智模型匹配 "用户需要几步完成?会不会觉得困惑?和现有操作习惯一致吗?"
开发实现视角 技术复杂度、改动范围、与现有架构的契合度、工期估算 "需要改几个文件?有没有现成模块可复用?工期多久?"
运维/部署视角 是否需要数据迁移、是否影响线上服务、回滚方案 "需要停服吗?历史数据怎么处理?出问题了怎么回滚?"
安全/合规视角 数据泄露风险、权限模型影响、审计需求 "是否涉及敏感数据?是否需要审计日志?"

输出格式

## 需求理解

[复述需求,确认讨论的是同一件事]

## 多视角分析

### 产品经理视角
- 用户价值:...
- 使用场景:...
- 优先级建议:...

### 终端用户视角
- 操作路径:...
- 体验风险:...

### 开发实现视角
- 技术方案概述:...
- 复杂度评估:...
- 工期估算:...

### 其他视角(按需)
- ...

## 方案对比(如有多方案)

| 维度 | 方案 A | 方案 B |
|------|--------|--------|
| 用户价值 | ... | ... |
| 实现复杂度 | ... | ... |
| 工期 | ... | ... |
| 风险 | ... | ... |

## 建议

[给出推荐方案 + 理由]

## 待确认

[列出需要用户决定的关键分歧点]

C. 决策型 → 利弊分析 + 建议

目标:帮用户看清"做/不做"或"A/B"的利弊,给出建议但不替用户决策。

分析框架

对每个选项,从以下维度评估:
1. 收益(用户价值 / 效率提升 / 体验改善)
2. 成本(开发工期 / 维护成本 / 学习成本)
3. 风险(技术风险 / 业务风险 / 对既有功能的影响)
4. 机会成本(做了这个就不能做那个)
5. 可逆性(做了之后能不能反悔/回滚)

输出格式

## 决策分析

### 选项 A: [描述]
- 收益:...
- 成本:...
- 风险:...
- 可逆性:...

### 选项 B: [描述]
- 收益:...
- 成本:...
- 风险:...
- 可逆性:...

### 建议
推荐 [选项X],因为 [理由]。但最终取决于 [关键决策因素]。

D. 探索型 → 可行性评估

目标:评估技术可行性,给出"能做/不能做/有条件能做"的结论。

分析框架

1. 技术可行性:现有技术栈能否支持?需要引入什么新依赖?
2. 性能可行性:数据量/响应时间/资源消耗是否可接受?
3. 成本可行性:开发工期 + 维护成本是否合理?
4. 约束条件:有哪些硬约束(如断网环境、硬件限制、兼容性)?
5. 替代方案:如果完全实现不可行,有没有降级/折中方案?

输出格式

## 可行性评估

### 结论:[可行 / 有条件可行 / 不可行]

### 技术评估
- 技术可行性:...
- 性能可行性:...
- 关键约束:...

### 实现路径(如可行)
- 方案概述:...
- 预估工期:...
- 主要风险:...

### 替代方案(如不可行或成本过高)
- 降级方案:...
- 折中方案:...

E. 问题诊断型 → 定位 + 修复方案

目标:定位问题根因,提出修复方案,确认后再动手。

分析框架

1. 现象确认:用户描述的症状具体是什么?能否复现?
2. 数据排查:当前数据库/日志中的实际数据是什么?
3. 代码追踪:哪些代码路径会产出这个现象?
4. 根因定位:代码逻辑 vs 业务规则 vs 数据状态,哪里不一致?
5. 修复方案:修代码?修数据?还是两者都修?
6. 影响评估:修复是否影响其他功能?

F. 纠错型 → 纠错提问钩子(Error Diagnosis Hook)

目标:用户指出 Bug/UI 缺陷或 AI 发现自己前一轮实现有偏差时,用结构化的非技术提问快速定位根因模块。禁止逐像素检查所有元素的低效模式。

触发场景

  • 用户说"这个需要修复""这里有问题""XX功能不对"
  • 用户描述现象 + 附带截图/录屏
  • AI 在代码编写过程中发现理解偏差或实现错误(主动触发钩子与用户确认)

提问维度(只问这 4 个,禁止问技术细节)

维度 提问方向 示例
场景 用户在什么操作路径下遇到此问题? 点击顺序、页面流转、当时的数据状态
观感 视觉上哪里不对劲? 布局错位、颜色异常、动画卡顿、内容缺失
体验 交互行为是否违背预期? 按钮无响应、弹窗不关闭、输入被清空
对比 实际表现与预期表现的差异点? "本来应该显示 X,现在显示 Y"

提问通过交互式选项提问工具(AskUserQuestion 或宿主 Agent 环境提供的等价交互式提问工具)提交,每问带选项与推荐项,遵循 Grilling 纪律。

推理逻辑:从感知层逆向映射到实现层

从用户回答的非技术问题中,逆向推导到具体模块,建立三层映射:

用户感知层(场景/观感/体验/对比)
        ↓
业务逻辑层(状态流转/事件链路/数据绑定)
        ↓
技术实现层(前端组件 / API 接口 / 数据库状态 / WebSocket 推送)

每条用户确认的异常现象必须映射到至少一个候选模块,并在输出中注明推断依据。

截图策略

  • 现有信息不足以定位时,引导用户补充截图,最多 3 张
  • 引导话术必须明确:"请截取[具体位置]最严重错误的画面",禁止模糊表述如"再截个图看看"
  • 补充截图前停止会话等待用户上传;补充后若能定位问题,立即停止追问,进入根因分析

执行约束

  • 连续追问不超过 2 轮(补充截图不计入提问轮次,属于材料补充)
  • 禁止问技术细节(如"是不是 XX API 返回了空值")
  • 禁止问环境细节(如"你用的是 Chrome 还是 Safari"),除非影响面极广

输出格式

## 问题复现路径
[根据用户描述还原操作步骤]

## 关键异常点
- [用户确认的异常现象]

## 推测根因模块
- [模块名]:[理由,基于用户描述的哪个特征推断]

## 待验证假设
- [1-2 个需要进一步确认的技术假设]

与现有流程的衔接

  • 纠错提问完成后 → 自动转入 E. 问题诊断型流程(Phase 1-2),跳过 A-E 类型识别阶段
  • 根因确认后 → 无缝切换到 A. 实施型的多维度澄清

类型转换

需求可能在对话中转换类型:

  • 探索型(D) 确认可行 → 转为方案讨论(B) → 确定方案 → 转为实施(A)
  • 诊断型(E) 定位到根因 → 转为实施(A) 修复
  • 方案讨论(B) 达成一致 → 转为实施(A)
  • 纠错型(F) 钩子定位异常 → 跳过类型识别直接进诊断型(E) Phase 1-2 → 根因确认 → 转为实施(A)

每次转换时,重新执行对应类型的分析流程。


A 类实施型完整流程(Phase 1-4)

Phase 1: 代码库理解(内部执行,不输出给用户)

在提问之前,先搜索代码库获取以下上下文:

  • 需求涉及的现有模块、文件、函数
  • 相关的数据模型和 API 端点
  • 相关的 UI 组件和交互流程
  • 与既有功能的依赖关系和兼容性

Phase 2: 多维度分析

基于代码库理解,执行以下分析。只提出有歧义或信息缺失的维度的问题,无歧义的不提问。

A. 基础维度澄清(每次必检)

维度 分析要点 典型问题示例
功能边界 做什么、不做什么、覆盖范围 "这个功能是否需要支持批量操作,还是只支持单条?"
数据流 数据从哪来、到哪去、中间怎么转换 "这个字段是从后端实时查询,还是前端缓存?"
交互细节 用户操作路径、状态变化、反馈方式 "点击后是直接生效,还是先弹确认框?"
异常处理 错误场景、边界条件、降级策略 "如果后端返回空数据,显示空状态还是隐藏整个区块?"
前后端分工 逻辑在哪一侧、API 设计 "这个计算是前端做还是后端做?需要新增 API 吗?"
安全/权限 谁能用、谁能看、数据隔离 "这个操作需要管理员权限还是普通用户即可?"
性能约束 数据量级、响应时间、并发 "这个列表最多多少条数据?需要分页吗?"
既有兼容性 与现有功能的关系、是否复用 "这个列表的展示样式是否复用现有的 XXX 组件?"
状态管理 数据持久化、缓存、同步策略 "这个配置是全局生效还是按用户独立?"
视觉/UI 布局、样式、响应式、暗色主题 "这个弹窗是居中显示还是从右侧滑出?"

B. MoSCoW 优先级分层(功能边界维度)

将需求拆解为功能点,按优先级分层确认:

层级 含义 提问模板
Must 没有就不能上线 "以下哪些是必须有的?[列出功能点]"
Should 重要但可以下一版 "这些是否本次就要做,还是后续迭代?"
Could 锦上添花 "是否需要顺便加上 XXX?"
Won't 明确不做 "以下这些本次确认不做,对吗?"

作用:防止范围蔓延(用户说"顺便加个")或过度交付(AI 自作主张加了不该加的功能)。

C. FMEA 失效模式分析(异常处理维度)

对关键功能点,系统化穷举失效场景:

对每个关键操作,列出:
1. 可能出什么错?(网络超时/数据为空/并发冲突/权限不足/数据已删除)
2. 出错了影响多大?(用户无感知/功能降级/数据损坏/系统崩溃)
3. 怎么预防/降级?(重试/提示/回滚/兜底UI)

提问模板:"[操作X] 在以下场景应该怎么处理?[列出 3-5 个失效场景 + 建议方案]"

作用:比拍脑袋想异常场景更系统化,避免遗漏关键边界条件。

D. Impact Analysis 影响分析(既有兼容性维度)

评估变更对既有系统的连锁影响:

对每个变更点,检查:
1. 哪些现有 API/组件/数据表会被修改?
2. 修改后哪些既有功能可能受影响?
3. 是否需要数据迁移?历史数据怎么处理?
4. 是否需要向后兼容?(旧客户端/旧数据格式)
5. 是否需要 feature flag 灰度发布?

提问模板:"这个修改会影响以下既有功能:[列出]。这些功能是否需要同步调整?"

作用:防止"改了一个功能,坏了另一个功能"的连锁破坏。

E. Trade-off 权衡分析(存在多方案时)

当实现路径有多个选择时,多维度对比:

对比维度:
- 实现复杂度(开发时间)
- 运行时性能
- 可维护性(后续改动难度)
- 与既有架构的契合度
- 可扩展性(未来加功能的成本)

提问模板:"实现方案有 A/B 两种,对比如下:[表格]。推荐方案 X,因为 [原因]。你倾向哪个?"

作用:让用户参与架构决策,避免 AI 自作主张选了用户不想要的方案。

F. INVEST 验收标准(定义"做完")

确保需求可验收:

标准 检查点
Independent 能否独立交付,不依赖其他未完成的功能?
Negotiable 是否有灵活空间,还是硬性要求?
Valuable 用户能感知到价值吗?验收标准是什么?
Estimable 工作量能估算吗?有无技术不确定性?
Small 能否在一个迭代内完成?需要拆分吗?
Testable 怎么验证做完了?自动化测试还是手动验证?

提问模板:"做完后怎么验证?[列出验收检查项] 这些对吗?"

Phase 2 执行策略

不是每个需求都需要走完所有维度。按需求复杂度选择:

需求类型 必做维度 按需维度
简单修改(改文案/颜色/样式) 跳过提问 -
单点功能(加个按钮/字段) A 基础澄清 F 验收标准
中等功能(新页面/新API) A + B + F C + D(涉及既有功能时)
复杂功能(跨模块/架构变更) A + B + C + D + F E(存在多方案时)
Bug 修复 A(定位 + 修复范围) D(影响分析)

Phase 3: 问题输出格式

分析结论(需求理解、MoSCoW、FMEA、Impact、INVEST)按下方格式输出;需要澄清的问题不再一次性平铺列出,而是按「提问执行引擎」的 frontier 分轮,通过交互式选项提问工具提交

## 需求理解

[用 1-3 句话复述你对需求的理解,确认方向正确]

## 优先级分层 (MoSCoW)

- **Must**: [列出必须有]
- **Should**: [列出重要但可延后]
- **Won't**: [列出明确不做的]

## 需要澄清的问题

1. **[维度名]** 具体问题?(影响:XXX)
   - A: 方案一
   - B: 方案二
2. **[维度名]** 具体问题?
...

## 失效场景确认 (FMEA)

| 场景 | 影响 | 建议处理 |
|------|------|----------|
| ... | ... | ... |

## 影响分析 (Impact)

- 修改 XXX 会影响:[列出]
- 需要同步调整:[列出]

## 验收标准 (INVEST)

- [ ] 检查项 1
- [ ] 检查项 2

## 已确认无需澄清的维度

- [维度名]: [你的理解] (如有误请纠正)

Phase 4: 分轮提问直到 frontier 清空

  • 按「提问执行引擎」分轮提交问题,每轮答案回收后重算 frontier
  • 如果回答中又引出新歧义,作为新分支挂入决策树,继续追问直到 frontier 为空
  • frontier 清空后,简要总结确认理解,用户确认共识后才开始实施

提问执行引擎(Grilling 纪律)

所有类型(A-F)的提问环节统一按此纪律执行(源自 mattpocock/skills 的 grilling/batch-grill-me 协议,适配交互式选项提问工具)。

决策树与 frontier 分轮

  1. 把需求建模为决策树:每个决策下面挂着依赖它的后续决策。
  2. frontier = 前置决策已全部敲定、现在就能问的问题集合。每轮只问 frontier 内的问题;答案依赖本轮未决问题的,属于下一轮,禁止提前猜着问。
  3. 用户答完一轮,重算 frontier(已敲定的决策会解锁下游问题),进入下一轮,直到 frontier 为空——所有分支走完,没有任何默认假设未被确认。

工具适配(交互式选项提问工具)

  • 每轮 frontier 问题必须通过交互式选项提问工具(AskUserQuestion 或等价工具)提交,一次最多 4 问;frontier 超过 4 个时按影响面大小排序分批,同轮内互不依赖。
  • 每个问题给 2-4 个具体选项,推荐选项放第一位并标注 (Recommended),选项描述里写清选择后果。

事实与决策分离

  • 事实自己查:能从代码库、文件系统、运行环境查到的信息(现有组件、API 签名、数据结构、配置值、依赖版本),禁止拿去问用户,先查再问。查证与提问可并行:某问题依赖待查事实时,只有它的下游问题等待,其余 frontier 照常提问。
  • 决策问用户:取舍、偏好、范围、优先级、验收口径属于用户,逐项提交等待答案,禁止代替用户默认。

共识门禁

  • frontier 未清空、或用户未确认理解一致之前,禁止动手写代码
  • 不设问题数上限:问题多说明需求本身欠规格,砍问题数只是掩盖缺口。用户可随时喊停接受当前状态——喊停后已确认部分照确认执行,未确认部分按推荐答案执行并在最终汇报中显式标注。

提问质量要求

  1. 具体到实现层面:不问"你觉得怎么样",要问"A 方案还是 B 方案"
  2. 基于代码库:引用现有代码/组件/API 来提问,如"是否复用现有的 XXX 组件"
  3. 提供选项:给出 2-4 个可选方案,推荐项放第一位标注 (Recommended),降低用户思考成本
  4. 标注影响:说明每个问题影响什么,如"这决定了是否需要新增后端 API"
  5. 不重复:如果需求描述中已经回答了某个维度,不再提问
  6. 事实不问人:能自查的事实先查,只把决策交给用户

禁止

  • 禁止跳过 Phase 1 直接提问(必须先理解代码库再问)
  • 禁止问泛泛而谈的问题(如"有什么特殊要求吗")
  • 禁止在 frontier 清空、用户确认共识前就开始写代码
  • 禁止把"没有歧义"的维度也列出来凑数
  • 禁止把能自查的事实拿去问用户
  • 禁止在同一轮里问存在依赖关系的问题(下游问题必须等上游答案)
  • 禁止在纠错型钩子中问技术细节与环境细节(如 API 返回值、浏览器型号),提问维度仅限场景/观感/体验/对比
  • 禁止在纠错型钩子中连续追问超过 2 轮