关于 cawplan-requirement-analyze
cawplan-requirement-analyze 是面向 SQA 需求分析的 Agent skill,可将工单、文字和截图整理为结构化需求,并提供修订及归档流程。
主要功能
- 01收集需求素材
- 02五字段需求分析
- 03跟踪待确认问题
- 04按反馈修订草稿
- 05衔接 CawPlan 归档
适用场景
- 01将工单内容整理为结构化需求
- 02分析需求文字和截图
- 03根据 SQA 反馈修订草稿
- 04准备将需求归档到 CawPlan
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ cawcut/ skill-cawplan --skill cawplan-requirement-analyze安装后在 Claude Code 中输入/cawplan-requirement-analyze确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/output-confirmation.mdrules-global.mdterminology-en.mdworkflow-analysis.mdworkflow-archive.mdworkflow-revise.mdworkflow-save.mdworkflow-step1-material.md详细介绍
CawPlan Requirement Analyze
输出语言
按以下优先顺序确定本轮输出语言;下文「用户主语言 / 会话语言」均指此结果:
- 用户明确指定输出语言 → 按指定语言。
- 用户提供自然语言要求 → 跟随该要求的主语言。
- 用户仅提供链接 / 工单号、没有自然语言要求 → 读取工单后,按
description与去除 HTML 后的remarks的主语言输出。 - 以上仍无法确定 → 沿用已有会话语言;无历史会话语言时默认英文。
Skill 说明与示例的语言、命令名、URL、工单号、Product info 均不参与语言判断。五字段标题与正文、推断标记、展示摘要、存疑清单、确认框及引导 / 回执统一使用选定语言;禁止同一段中英各写一遍。英文出稿前须按 references/workflow-analysis.md step 3 读取英文术语表。
Bootstrap
cawplan skill check
Read discipline (lazy-load)
上下文判定:模型无法可靠感知静默裁剪。凡跨用户消息(新 invoke)且将进入 P4 / P1b / P2′ / P5 / P6,一律 presume 所需 reference 不在上下文,须 Read;禁止凭「本会话 earlier 读过」免读。
唯一可免读:本 agent 同一响应内刚通过 Read 工具载入该文件全文,且尚未结束该响应。
拿不准是否仍在上下文 → 按不在处理,Read。
行为上 step 6(仅未绑定草稿)始终 Re-run steps 3–5(422 行);免读只省 Read 工具,不省重跑行为。已绑定(有 bound_requirement_id)的修改不走 step 6,见 P1b。
禁止在判定工作路径之前批量读取 references/。
Read 条件(与上默认一致,细化路径):
- 新 invoke 且路径为 P3/P4/P1b/P2′/P5/P6 → Read 路径表所列文件(P4 等默认必读 analysis + rules,除非满足上段「同一响应内刚 Read」)。
- 同一会话、同一 agent 响应内刚 Read 过且全文仍在该响应上下文 → 可不重复 Read;仍须 Re-run 3–5 与复用首次措辞(159 行)。
「全文仍确定在当前上下文」由 Agent 自行认定→ 删除;改用上「默认安全侧」。
| 路径 | 条件 | Read(跨用户消息时 默认必读;仅「同一响应内刚 Read」可免) |
|---|---|---|
| P0 · 零素材早停 | step 1 判定无任一素材 | 不读;stop |
| P1 · 冷交接(仅载入) | 延续已归档,本条不改字段 | workflow-archive.md |
| P1b · 已绑定后编辑(冷交接绑定后,或 create 成功后) | 有 bound_requirement_id,SQA 改需求内容 / 摘要 / 工单 | archive + rules + confirmation;需求内容走 11b-MD,摘要/工单走 11b-PATCH;不重跑 3–5 |
| P2 · 接力直归档 | resume_intent,本条不改草稿 | save + archive + rules + confirmation |
| P2′ · 接力后改草稿 | resume_intent + 改字段 | 同 P4(新 invoke 必读 analysis + rules) |
| P3 · 新分析 | 有素材、非冷交接 | step1-material → analysis → rules → Output |
| P4 · 修订 | 未绑定草稿:改字段/摘要,未触发保存闸 | 新 invoke 必读 analysis + rules + revise + Output;同响应内可免重复 Read |
| P5 · 保存 | 保存意图闸 / resume_intent | save + archive + rules + confirmation |
| P6 · UNKNOWN | pending_write / UNKNOWN | archive + rules + confirmation;始终 Read |
路径重判:每条用户消息开始时重判路径。
归档后测试点热交接(优先于 step 1) — 本条为「马上生成测试点」(或同义,见 cawplan-testpoint-generate P2),且会话已有有效 binding(product_id + requirement_id / bound_requirement_id)?
- 是 → 读
cawplan-testpoint-generateskill,按 P2 热交接续跑(stop 本 skill 后续步骤)。 - 否 → 继续下方 Workflow。
Workflow
1. Collect requirement material
入口路由前置检查(先判此项,再收素材) — SQA 的意图是延续 / 修改一条已归档的 Requirement(给出 requirement id、REQ- display ID、Requirement 链接,或说「接着上次那条改」)?
- 是 → 走 step 10 Cold handoff 只做绑定(不载入五字段草稿),不要从头重分析。理由:需求内容以服务端的需求 Markdown 为准,修改是全文覆盖,从头重分析会丢掉用户在 Markdown 里手改的内容;修改走
workflow-archive.md的 11b-MD。 - 否(新需求分析)→ 继续本步收集素材。
裸 REQ- + 数字及 /browse/product/{product_key}/qa/requirement/{display_id} 是已归档 Requirement 引用,优先走 Cold handoff;不要把它当成 step 1 的 Ticket display ID。其他前缀的工单号仍按 Ticket material 处理。
零素材早停(新增) — 判定本条消息是否带有任一素材:用户文字、工单(URL / display ID / unique ID)、截图。(Product info 不计入素材 — 仅有 overview、无任何上述三类 → 仍走零素材早停。)
- 全无 → 只输出下方引导文案,然后
stop;禁止进入 step 2–5(否则会产出全「(素材未提及)」废稿)。 - 有任一 → 继续下方
Accept any mix of,不弹窗。
输出纪律(零素材分支) — 内部脚手架,不呈现给 SQA:
- 只输出引导文案块本身——禁止在其前或其后加任何说明、过渡句或复述判定过程。
- 禁止出现类似:「根据入口路由检查…」「当前会话没有素材…」「按照流程规则,我需要先请求素材…」「零素材早停」等字样。
- 不要解释你在检查什么、为什么停下;SQA 只看到引导文案,与下方示例一致。
引导文案(仅此块逐字输出给用户,保留编号列表格式):
想分析需求?给我下面任一样就能开始:
- 需求文字描述
- 工单链接 / 工单号
- 相关截图 / 设计稿(可多张)
三样都给,信息会更完整,我会先整理成一份完整需求给你确认。
Want a requirement analyzed? Give me any one of these to start:
- Requirement text description
- Ticket link / ticket number
- Related screenshots / mockups (multiple OK)
Providing all three gives more complete information — I'll draft a full requirement for you to confirm first.
(结尾不提归档/保存。纯文字,不用 AskUserQuestion。跟随会话语言只输出中文或英文其中一版,不要两版同时输出。)
边界:只贴工单链接 = 有素材,按下方 ticket 解析;裸 issue URL 且无分析意图 → 仍走 Rules Trigger boundary(cawplan-ticket-context),不走零素材分支。
工作流索引 + Read 钩子
步骤 N 前:每条新用户消息到来时,读取 references/<file>.md,除非你已在本次 Agent 响应中通过 Read 加载该文件;然后应用步骤 N 规则。
| 步骤 | 摘要 | Read 钩子 |
|---|---|---|
| 1(有素材) | 收集素材 | 新 invoke:read references/workflow-step1-material.md |
| 1 冷交接 | 绑定已归档(不载入草稿) | 新 invoke:read references/workflow-archive.md;随后编辑 → P1b |
| 2–5b | 出稿管线 | 新 invoke:read references/workflow-analysis.md + references/rules-global.md |
| 6 | 修订(仅未绑定草稿;已绑定走 11b) | 必须重新运行 3–5。新 invoke:read analysis + rules + revise |
| 7–8 | 保存准备 | 新 invoke:read references/workflow-save.md |
| 10–11 | 绑定/归档 | 新 invoke:read references/workflow-archive.md;P6 始终 read |
| 输出 | 呈现格式 | 新 invoke:read references/output-confirmation.md 对应节 |
步骤 → 文件定位表(补全交叉引用,不改原文指称)
| 文内指称 | 所在 reference |
|---|---|
| step 2 / Numeric cross-source check | references/workflow-analysis.md |
| step 3 / 固定措辞表 / 表外句式 | references/workflow-analysis.md |
| step 4 / 展示摘要 | references/workflow-analysis.md |
| step 4b / 漏测自检 | references/workflow-analysis.md |
| step 5 / 判据 1 / 数值限制型存疑 / walkthrough | references/workflow-analysis.md |
| step 5b / 呈现尾巴 | references/workflow-analysis.md |
| step 6 修订正文 | references/workflow-revise.md;保存意图闸 → 主文件 |
| step 7–8 / §8 模块树 | references/workflow-save.md |
| step 10–11 / Table A/B / Command outcomes | references/workflow-archive.md |
| Rules 总则 / 红线 0 / 枚举完整性 / Failures / API scope | references/rules-global.md |
| Rules Trigger boundary / 跨 skill 接力 | 主文件(热路径) |
| Output / Confirmation | references/output-confirmation.md |
步骤 1 前(有素材分支):每条新用户消息到来时,读取 references/workflow-step1-material.md,除非你已在本次 Agent 响应中通过 Read 加载该文件;然后应用步骤 1 素材规则。
步骤 1 前(冷交接分支):每条新用户消息到来时,读取 references/workflow-archive.md,除非你已在本次 Agent 响应中通过 Read 加载该文件;然后应用步骤 10 冷交接规则。
2–5b. 分析管线(步骤 2–5b)
步骤 2–5b 前:每条新用户消息到来时,读取 references/workflow-analysis.md 和 references/rules-global.md,除非你已在本次 Agent 响应中通过 Read 加载这些文件;然后应用步骤 2–5b 规则。
详情:references/workflow-analysis.md — 标记来源(步骤 2)、五字段草稿(步骤 3)、展示摘要(步骤 4)、漏测自检(步骤 4b)、待解决问题列表(步骤 5)、五字段呈现尾巴(步骤 5b)。
分析输出前:每条新用户消息到来时,读取 references/output-confirmation.md(Output 节),除非你已在本次 Agent 响应中通过 Read 加载该文件。强制要求——在输出任何 Output 文本前,必须调用该文件的 Read 工具;在其他位置看到类似格式(例如 workflow-analysis.md)不能替代此次 Read。
6. 根据 SQA 反馈修订
先判断会话是否有 bound_requirement_id:
- 已绑定 → 跳过 steps 3–5b,执行
references/workflow-archive.md中的 11b-MD(修改需求内容)/ 11b-PATCH(修改summary/ticket_id);读取 archive + rules + confirmation,不读取 analysis。 - 未绑定(新需求、接力入站的未保存草稿)→ 沿用现有五字段草稿路径,不变:
在 step 6 前:每收到一条新用户消息,都要读取 references/workflow-analysis.md、references/rules-global.md 和 references/workflow-revise.md,除非已在本次 Agent 响应中通过 Read 读取过这些文件;然后应用 step 6 规则。每轮修订后都要重新运行 steps 3–5 + step 5b tail。
详情:references/workflow-revise.md。
保存意图闸门 — 仅当满足以下任一条件时,才进入 steps 7+:
| 路径 | 条件 |
|---|---|
| 口头 | SQA 表示「保存到 CawPlan」或同义说法,如「存到 CawPlan」「保存需求」 |
| 识别兼容(用于识别,不要提示 SQA 这样说) | 可以了、存吧、提交、归档 |
| 接力入站 | 会话有 resume_intent(testpoint | testcase)——Rules 跨 skill 接力;不是 A1 口头触发词 |
不要将 马上保存 列为 A1 口头触发词——它是 A2/A3 框2的选项标签,会通过 resume_intent 接力路由,而不是独立的 A1 口头触发词。
在触发保存意图前:不要调用 products list,不要调用 qa-insights module-tree get,不要推荐挂载节点。
展示层:五字段尾部和引导语使用「保存到 CawPlan」;识别层可以接受旧版说法。
7–8. 保存准备(steps 7–8)
在 steps 7–8 前:每收到一条新用户消息,都要读取 references/workflow-save.md,除非已在本次 Agent 响应中通过 Read 读取过该文件;然后应用 steps 7–8 规则。
详情:references/workflow-save.md — 解析产品(step 7),从已有 module-tree 中选择挂载位置(step 8)。
10–11. 绑定并归档(steps 10–11)
在 steps 10–11 前:每收到一条新用户消息,都要读取 references/workflow-archive.md,除非已在本次 Agent 响应中通过 Read 读取过该文件;然后应用 steps 10–11 规则。P6 UNKNOWN:务必读取 references/workflow-archive.md。
详情:references/workflow-archive.md — 绑定需求上下文(step 10)、协调(step 10b)、归档或更新(step 11)、命令执行结果、正文编写规则。
归档 Confirmation 前:每收到一条新用户消息,都要读取 references/output-confirmation.md 的 Confirmation 部分,除非已在本次 Agent 响应中通过 Read 读取过该部分。强制要求 — 输出任何 Confirmation 文本前,必须调用 Read 工具读取此文件;不要凭记忆或临时编写成功/失败回执。
Rules (hot path — full rules in references/rules-global.md)
- Trigger boundary: this skill is for SQA requirement analysis and QA Insights archiving — not for loading a ticket into a coding session. If the user only pasted a CawPlan issue URL with no analysis intent, stop and use
cawplan-ticket-contextinstead. Ticket links are material here only when the user also wants five-field analysis or archive. - 跨 skill 接力(入站 / 出站):
- 入站(来自「生成测试点」或「生成用例」框,且会话已有五字段草稿):跳过 step 1–6,直接从 step 7(Resolve product)/ 归档闸 step 11 继续;不得从头重分析(措辞漂移会破坏 reconcile / snapshot diff)。入站(
resume_intent)本身即保存意图;不在入站前向 SQA 重复五字段尾巴里的保存引导。 - 入站挂载节点:若接力已带
module_tree_node_id,按方案「已确定挂载节点直接用,不重问」— 跳过 §8 选位置闭环,直接进入 step 11(保留 step 11 乙式确认闸,因无 §8 确认)。 - 入站冷启动(无五字段草稿):从 step 1 正常收素材。
- 出站:归档或更新
outcome: SUCCESS后,若会话存在resume_intent(testpoint|testcase),回写product_id+requirement_id(=bound_requirement_id),读取并清除resume_intent,回到发起方 skill 从其 §2 refresh 续跑;不追加 §6 测试点引导(已自动回流);不停在本 skill 等下一条指令。 - 归档后测试点引导:§6 成功回执末尾可选追加一句(见
output-confirmation.md§6 末尾引导);用户回「马上生成测试点」→ 读cawplan-testpoint-generateskill(P2 热交接);不接茬则不重复提示。 - §8 选位置确认后(
location_confirmed)→ step 11 跳过乙式保存/更新确认,直接写入;§8 被跳过的路径(接力已带节点、冷交接未重选位置)→ 保留 step 11 乙式确认闸。
- 入站(来自「生成测试点」或「生成用例」框,且会话已有五字段草稿):跳过 step 1–6,直接从 step 7(Resolve product)/ 归档闸 step 11 继续;不得从头重分析(措辞漂移会破坏 reconcile / snapshot diff)。入站(
入站「跳过 step 1–6」的范围:仅指接力入站后首轮自动路由至 step 7 / step 11(保存),不是禁止 step 6。若 SQA 在保存确认前(未绑定草稿)提出五字段/摘要/存疑修改 → 仍走 step 6(P2′),
Re-run steps 3–5;不是从素材重分析(对照 step 1 第 27 行、Rules 920「不得从头重分析」)。
References
Skill references(Mandatory read — 见 Read discipline)
references/workflow-step1-material.md— step 1 素材:ticket lookup、截图、Product inforeferences/workflow-analysis.md— steps 2–5b:五字段、展示摘要、漏测自检、存疑清单、呈现尾巴、固定措辞表references/workflow-revise.md— step 6:SQA 修订轮(须与 analysis + rules 同读)references/workflow-save.md— steps 7–8:产品解析、已有模块树选择闭环references/workflow-archive.md— steps 10–11、Command outcomes、Write body rules;Cold handoff;P6 reconcilereferences/rules-global.md— 总则、红线 0、枚举完整性、Failures、API scope 等(全文 889–924)references/output-confirmation.md— 分析 Output 格式;归档 Confirmation 文案
Repository references
references/CAWPLAN_OPEN_API.md— §15 QA Insights APIs (field/schema reference only — invoke viacawplan qa-insightsCLI); §2 Product APIs (Get Product Overview →cawplan products overview; product resolution at save) and §4 Ticket APIs for ticket material.