测试用例生成xmind工具

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

通用测试用例编写与xmind脑图生成工作流(适用于任何业务)。当用户需要编写测试用例/梳理测试要点、将业务需求转化为结构化测试用例、生成测试xmind脑图、进行测试设计时使用此skill。流程:用户阐述测试方向 → AI主动思考并提问 → 收集足够信息 → 需求分析 → **功能层面+数据层面双维度用例设计** → **流程性判定(有流程用流程形式,无流程用标准模板)** → 模块化归纳生成xmind/md/html。覆盖正常/异常/边界三类场景。需求不明确时强制向用户提问或读取截图,不擅自编写。

一句话选型结论

按资料字段整理

测试用例生成xmind工具是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_cb670f4b/test-case-to-xmind
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_cb670f4b仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量60.1 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
测试用例生成xmind工具当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

60.1 KB
模型实际读到的说明书原文,来自技能仓库

通用测试用例编写与转 xmind

概述

以资深软件测试工程师的角色,将任何业务需求转化为结构化测试用例(测试要点清单),并最终生成 xmind 脑图 / Markdown / HTML 右向逻辑图。

本 skill 是通用流程与规则,不绑定任何具体业务。需求可以是订单、用户、数据、报表、调度、巡检等任何领域——只需按同一套流程执行即可产出同样结构的内容。

四条核心能力(v2.3):

能力 要求 落地位置
用例编写(双维度) 每个功能都从功能层面(正例/反例)与数据层面(场景/边界)两个维度设计,确保核心业务逻辑与边界数据场景全覆盖 Step 3 设计 → dimensions.positive/negative/data
模块归纳(双模板) 先判定是否存在流程性用例:有则该子模块按流程形式输出,无则全部按标准模板输出;保证 XMind 打开时结构清晰、层级分明 Step 3 判定 → type:"flow" + flow / dimensions
覆盖全面性 每个功能必须覆盖正常场景、异常场景、边界条件三类,缺一不可,缺项须写明原因 Step 5 覆盖统计表
成品打磨(质量关卡) 产物生成完毕后自动执行打磨工序:修正拗口措辞、清理冗余与空白内容、核对功能与需求一致性,并用 Q1–Q10 量化门槛验收,不过关不放行 Step 7 打磨工序(产物生成后自动触发)

支付宝 AI 按量付费改造(402 流程)

本 skill 已完成支付宝 AI 按量付费(HTTP 402)改造,付费能力落地在 Step 8,客户端为 scripts/aipay_gate.js(零依赖,Node 内置 fetch,不引入任何第三方支付 SDK),服务端接口契约见 references/aipay-integration.md。付费与业务无关,不影响 Step 0–7 的用例生成质量。

付费改造项 实现方式 关键标识
402 账单下发 unlock 未携带凭证时,服务端返回 HTTP 402 + code=PAYMENT_REQUIRED;响应头下发 amtPaymentLink(预下单号)与 Payment-Needed(Base64URL 账单),响应体含 out_trade_no / amount / currency / pay_before;脚本按退出码 2 输出账单 402 / Payment-Needed / amtPaymentLink / out_trade_no
携带凭证重试 用户完成支付后,客户端把 Payment-Proof 放进请求头重新 unlock;脚本支持 --proof 与 --proof-file Payment-Proof
验付调用 服务端对 Payment-Proof 执行验付(payment verify),校验订单 ↔ 草稿 ↔ 资源三者绑定;通过后返回 200 并在响应头附 Payment-Validation 回执 Payment-Validation / verify
履约确认 交付后调用 fulfillment confirm,成功响应含 fulfillment_confirmed: true;502 FULFILLMENT_CONFIRM_FAILED 表示已验付但履约未确认,必须用同一 Payment-Proof 重试,不重复付款 FULFILLMENT_CONFIRM_FAILED / fulfillment_confirmed
订单持久化与幂等 draft_id 与 out_trade_no 一一绑定并随草稿持久化;同一 Payment-Proof 重复提交返回同一订单、幂等不重复扣款;草稿过期 410 需重新 publish,已付订单仍可用原凭证重试 draft_id / out_trade_no / 幂等 / 410

规范端点等价映射(不同接法名称不同,语义一致):

常见端点 本 skill 的对应实现
probe(探测是否需付费) unlock 不带凭证 → 402;status --draft 查草稿状态与价格
pay(下单 / 拉起收银台) 402 响应中的 amtPaymentLink + Payment-Needed 交给支付能力或用户支付宝端
complete(支付完成、拉取资源) unlock --proof 返回 200 + files + Payment-Validation
ack(履约确认回执) fulfillment_confirmed: true 与 Payment-Validation 头

付费状态判定:402 = 未支付(不得交付全文);402 且 code 非 PAYMENT_REQUIRED = 凭证无效/金额不符,需重新取账单;200 + Payment-Validation = 已支付,可交付服务端返回的全文。

> 合规说明:付费链路完整可用,但上传属于显式触发动作——需用户主动要求解锁并同意上传清单后才发起(详见 Step 8 与 config/aipay.json);用户拒绝时回落本地产物交付。

通用性铁律

  • skill 中不得固化任何具体业务的字段/规则/术语(如某业务的专用字段、规则编号、脚本逻辑等)
  • 本 skill 及 references 中的示例一律使用占位符或中性业务
  • 具体业务的内容只出现在产出的 JSON / 脑图中
  • 换任何需求,都按同一套流程(Step 0-6)与结构执行

产物清单(关键约束,永久生效)

每次执行本 skill 只产出以下 3 类文件(写入用户工作区):

类型 扩展名 用途 必需
源数据 .json 测试用例源数据(结构化 JSON,遵循 case-schema.md v2.2) ★ 是
Markdown 大纲 .md 标题层级大纲(#/##/###/#### + 嵌套列表项),可直接导入 XMind / 幕布 / 任意思维导图工具 ★ 是
HTML 视图 .html 纯静态 HTML + CSS(根在最左、向右延展的逻辑图),零依赖双击即看,可打印为 PDF ★ 是

> 以上 3 类文件在 Step 6 生成后,必须经 Step 7 打磨工序:先打磨 .json,再由打磨后的 json 重新生成 .md / .html。交付的 md/html 必须是打磨后版本,不得交付打磨前产物。
>
> 默认交付路径:Step 7 通过后,直接把本机的三件套路径交付给用户即完成,全程不联网。
> 可选分支 Step 8(付费解锁)默认不启用:只有用户主动要求"发布/解锁完整版"、并看过上传清单明确同意后,才会把这三份产物上传到配置的服务地址。用户拒绝、地址未配置或任一环节失败,都回落到本地产物交付,不影响产物完整性。

明确不再产出:

  • ❌ 不生成 .xmind(XMind 26 强制升级样式 / XMind 8 不兼容旧格式,体验差;用户已确认放弃此格式)
  • ❌ 不生成 .opml(除非用户显式要求)
  • ❌ 不生成 .xml8、.zen 等其他 x mind 内部格式

专属输出目录(强制,先生成目录再输出):

  • 每次执行生成前,先在输出根目录建立本 skill 专属输出目录 test-points/(输出根目录默认当前登录用户主目录,Windows 即 C:\Users\<用户名>\test-points;用户指定交付目录时用指定目录)。
  • 目录不存在则先创建;已存在则沿用,并在写入前按下方强制清理纪律删除该需求上一批产物。
  • 本 skill 的全部产物必须输出到该专属目录内,不得散落在工作区根目录或其他 skill 的目录下。
  • 目录建立后向用户反馈该目录的完整绝对路径,便于查找最新产物。

强制清理纪律(先清理再生成):

  • 每次生成前,在专属输出目录 test-points/ 内先删除本次需求前缀的上一批全部产物:<prefix>-test-points.json、<prefix>-test-points.md、<prefix>-test-points.html,以及历史遗留的 .xmind / .opml,再重新生成;专属目录内只保留最新一套,避免文件堆积找不到新产物
  • 禁止生成 -v2、-v3、-final 等递增命名文件;同一需求重复生成时始终覆盖同一套 <prefix>-test-points.*
  • 删除范围只限专属目录内本次需求前缀的产物;不同需求/项目用不同前缀隔离(例如 V3.10.8 用 test-points.*、huiju 用 huiju-test-points.*),禁止互相覆盖、禁止误删其它项目或其它 skill 目录的文件;删除前先列出将删除的文件路径核对范围
  • .html 与 .md 都基于 .json 生成,三者保持一致

产物命名约定(ASCII 命名,中文内容只在文件内):

  • 主项目(默认):test-points/<prefix>-test-points.json / test-points/<prefix>-test-points.md / test-points/<prefix>-test-points.html
  • <prefix>:项目/需求的英文/拼音缩写(如 V3.10.8 质控项目用 test,huiju 用 huiju)

核心纪律(铁律,贯穿全流程)

每个步骤末尾均附"检查清单"。清单未全部满足时,必须停下来向用户提问或请求截图,不得擅自往下编写。只有清单全部满足,方可进入下一步。此规则不可跳过、不可妥协。

尤其 Step 0:必须先让用户阐述测试方向、AI 主动思考提问并收集足够信息,禁止拿到需求就直接编写。

工作流总览

步骤 名称 核心产出
Step 0 用户阐述测试方向 + AI 主动思考提问(核心硬纪律) 业务理解 + 测试方向 + 待澄清问题清单
Step 1 需求收集与澄清 需求澄清清单
Step 2 业务理解与测试范围识别 业务流程概述 + 模块清单
Step 3 双维度用例设计 + 流程性判定 功能层面/数据层面用例设计表 + 流程性判定表 + 输出形式决策
Step 4 用例编写与模块化归纳(标准模板 / 流程形式) 测试用例集(主模块→子模块→功能→分支→要点 + 概要)
Step 5 结构化与覆盖自检 <prefix>-test-points.json + 覆盖统计表
Step 6 生成产物 <prefix>-test-points.md + .html
Step 7 打磨工序(最终质量关卡,生成完毕后自动执行) 措辞/冗余/空白/需求一致性打磨后的 json + 重新生成的 md/html + 质量门槛报告
Step 8 可选的付费解锁(默认关闭,需用户显式同意上传) 用户拒绝/未执行时:本机三件套即为最终交付物

Step 7 为强制步骤:产物生成完毕后自动执行,不得跳过;其检查项清单与量化质量标准见该节正文。

Step 8 不是交付前提,默认不执行:本地产物在任何情况下都可直接交付。只有用户主动选择付费解锁、且明确同意上传时,才按该节流程执行;服务端返回内容须通过摘要/结构校验后才落盘。

每个步骤的完整提示词原文见 references/workflow-details.md,执行到对应步骤时加载。字段与模板规范见 references/case-schema.md(v2.2)。

Step 0:用户阐述测试方向 + AI 主动思考提问(核心硬纪律)

目标:在进入 Step 1 之前,先让用户主动阐述本期需求的主要测试方向与业务内容(测试人员视角),再让 AI 主动思考测试维度并向用户列出关键问题收集足够信息。只有"业务理解 + 测试方向 + 待澄清问题"都齐了,才开始用例梳理。

为什么必须有这一步:
- 同一份原型 / 需求文档,不同测试人员会拆出截然不同的用例(取决于各自对业务的理解深度)
- 仅基于原型文字会漏掉业务侧重点——真正的测试重点(核心计算/校验逻辑、数据处理规则、关键控制点等)往往不在原型里直接描述
- 新功能 vs 增量改动的测试策略完全不同(增量改要回归原逻辑;新功能要按功能测全)
- 重构类改动必须当新功能测,并额外验证迁移兼容性(老数据/老流程是否受影响)

AI 必须做的事(收到需求 + 原型后):

步骤 动作 产出
0-1 请用户阐述:本期需求的主要测试方向(从测试视角看,业务方最关心什么、本期有哪些新功能 / 增量改动 / 重构)和业务内容(核心业务规则、数据/逻辑流转、关键控制点、验证方式) 用户的一段叙述
0-2 AI 主动思考并提问:基于原型 + 用户阐述,从测试角度列出关键问题(覆盖业务规则、新功能验证维度、边界场景、回归影响、数据/结果正确性、是否存在同类对象需逐个验证、是否有正反例等业务关键点) 关键问题清单(≥ 5 个,每个问题附 AI 当前的最佳猜测)
0-3 等待用户回答:用户回答所有问题(每问 1-2 句话即可),并提供必要的历史记录 / 截图 / 样例数据 / 预期结果样例 用户的回答 + 补充材料
0-4 收集足够信息后才进入 Step 1 业务理解笔记

提问方式(必须遵守):

禁止用纯文字罗列问题让用户手写回答——用户回答成本高、体验差。必须使用选项式提问工具(ask_followup_question / AskUserQuestion):

  • 每个问题提供 2-4 个选项(选项即 AI 基于原型 + 用户阐述推测的最可能答案)
  • 每个选项附简短说明,让用户一眼看懂选哪个
  • 需要多选的场景(如"哪些数据源需要覆盖")使用 multiSelect: true
  • 若问题超过工具上限(单次最多 4 个问题),分批提问(先问最核心的 4 个,答完再问下一批)
  • 选项必须覆盖"不确定 / 按惯例默认"这一项,避免用户卡住
  • 若所有预设选项都不对,用户可在工具的输入框中补充自定义答案
  • 每个问题必须标注所属模块:问题前面用 [模块A] / [模块A vs 模块B] 等前缀标注,便于用户区分相似功能在不同模块下的差异(例如"数据管理-日"和"数据管理-月"都有"日统计"或"表单编码查询",必须标注是哪个模块)

提问示例(正确):

问题:[数据管理-日] 「日统计」的"日"是按哪个日期聚合?
选项:
  A. 实际入库日期(数据进入系统的日期)—— 推荐
  B. 数据发生日期(业务发生的日期)
  C. 不确定,按惯例默认

提问示例(错误):

1. [数据管理-日] 「日统计」的"日"是按哪个日期聚合?
2. [数据管理-月] 「月统计」的"日"是按哪个日期聚合?
   ↑ 看起来一样但其实是不同问题,必须标注模块让用户知道是问哪个模块

提问示例(错误):

1. 「日统计」的"日"是按实际入库日期还是数据发生日期?
2. ...(纯文字罗列 8 个问题,用户需逐条手写)

禁止行为:
- ❌ 收到需求直接写用例(不经过 Step 0 提问)
- ❌ 仅基于原型文字闭门造车(必须基于用户阐述的业务理解)
- ❌ 跳过用户提到的业务关键信息(如"同类对象逻辑各不相同需逐个验证"、"存在正反例"、"需对比改动前后结果"等)
- ❌ 用 Step 1 的"被动澄清"代替 Step 0 的"主动思考提问"
- ❌ 把某个具体业务的规则/字段/术语写进 skill(skill 只保留通用流程与规则)


Step 1:需求收集与澄清

目标:在 Step 0 已完成业务理解和测试方向对齐的基础上,进一步逐项明确所有待确认信息(字段、规则、边界、回归影响),确保无歧义。

关键指令:
- 基于 Step 0 的用户阐述 + AI 提问回答,整理出结构化的需求澄清清单(信息项 | 当前状态 | 内容摘要 | 待澄清问题)。
- 仍允许补充提问(仅针对 Step 0 未问到的细节),不要重新做一次 Step 0。
- 一次提出所有问题,每个问题附最佳猜测供用户确认或纠正;界面/流程不清晰时明确请求截图。
- 信息严重不足时不要编造任何业务细节。

详细提示词:加载 references/workflow-details.md 的 Step 1。

检查清单(全部满足方可进入 Step 2):
- 业务名称与目标、用户角色、核心模块、主要业务流程、关键字段校验规则均已明确
- 所有"待确认"项已得到用户回答,用户无补充信息

> 未满足则提问或请求截图,不得进入下一步。

Step 2:业务理解与测试范围识别

目标:基于已澄清需求,梳理业务流程,划分测试模块,界定测试边界。

关键指令:
- 用文字描述核心业务主路径:起点、关键环节与状态流转、终点、异常分支与回退路径。
- 将业务拆分为可独立测试的模块(模块名 + 职责 + 关键数据实体)。
- 明确测试范围:覆盖模块清单、排除项及原因、环境与数据准备要求。
- 所有内容必须基于 Step 1 已澄清需求,不得编造未确认信息。

详细提示词:加载 references/workflow-details.md 的 Step 2。

检查清单(全部满足方可进入 Step 3):
- 主流程完整、异常分支与回退路径已识别
- 模块已拆分且职责明确,测试范围已界定
- 用户已确认流程梳理和模块划分无异议

> 流程存在断点或模块边界不清时,向用户提问确认,不得进入下一步。

Step 3:双维度用例设计 + 流程性判定

目标:基于需求分析结果(Step 1/2),完成两件事——
① 从功能层面与数据层面两个维度设计用例,确保核心业务逻辑与边界数据场景全覆盖;
② 判定是否存在流程性用例,据此决定各子模块的输出形式(流程形式 / 标准模板)。

3.1 功能层面(对应"功能正例 + 功能反例")

拆解对象 通用做法
核心业务逻辑 每条核心规则单独立一条正例,逐条确认"输入 → 处理 → 结果",不允许合并成"功能正常"
操作主路径 完整走通一次,验证页面跳转、状态、提示、落库结果一致
业务规则校验 每条规则(必填、唯一、状态、权限、金额/数量限制)分别列正例(满足规则)与反例(违反规则)
异常/失败路径 输入非法、权限不足、状态非法、依赖服务失败、超时中断、重复提交等逐项列出反例
状态流转 合法转换列正例;非法转换(如已归档再编辑)必须列反例
上下游联动 改动是否影响上游同步、下游统计、历史数据一致性

3.2 数据层面(对应"场景")

拆解对象 通用做法
等价类划分 合法输入区间 / 非法输入区间分别取值验证
边界值 最小值、最小值-1、最大值、最大值+1,必须写出具体数值
字段校验规则 格式、类型、长度、特殊字符、空值/null、唯一性逐字段覆盖
多数据源/多类型 存在多个数据源、类型、编码方案、版本时,每种独立测一条
数据流转一致性 输入 → 存储 → 展示 → 下游统计 全链路值一致
特殊数据 超长字符串、emoji、SQL 注入串、历史脏数据、大数量级数据

3.3 覆盖三类场景(强制)

每个功能的设计结果必须覆盖:正常场景(正例) + 异常场景(反例) + 边界条件(场景)。
三类均无内容的功能不允许输出;确实不适用的必须写明原因并标 [待确认]。

3.4 流程性判定(决定输出形式,强制先判定)

判定标准(满足任一即判定为"流程性用例"):
1. 存在明确的操作步骤序列(开始 → 节点1 → 节点2)
2. 存在状态流转或条件分支(是/否、成功/失败、通过/驳回)
3. 存在回退 / 退回 / 循环 / 重试路径
4. 存在跨角色、跨系统、跨岗位的流转

> 流程形式只用于需求中确实存在流程性用例的子模块/功能分组:先逐条对照上面 4 条标准,四条都不命中的(纯表单字段校验、列表查询筛选、静态说明页、字段边界)一律用标准模板,禁止把"打开 → 输入 → 保存"这类表单操作包装成假流程节点,也不允许为了"有流程"而给没有流程的模块硬造流程。

输出形式决策:

判定结果 输出形式
存在流程性用例 该子模块 type:"flow" + flow(流程形式);其余子模块用标准模板
完全不存在流程性用例 全部子模块用标准模板;禁止生成"该模块流程"等空流程节点

必须输出流程性判定表:

子模块 是否流程性 判定依据(命中哪条标准) 输出形式
<子模块X> 是/否 <步骤序列 / 状态分支 / 回退 / 跨角色> 流程形式 / 标准模板

> 不确定是否属于流程性时,向用户提问确认,不得凭感觉硬套流程形式。

详细提示词:加载 references/workflow-details.md 的 Step 3。

检查清单(全部满足方可进入 Step 4):
- 每个模块都完成了功能层面(正例/反例)与数据层面(场景)两个维度的用例设计
- 每个功能都覆盖了正常 / 异常 / 边界三类场景(不适用者已写明原因)
- 边界值已具体到数值,异常场景已具体到触发条件
- 已输出流程性判定表,每个子模块的输出形式已确定
- 用户已确认用例设计与流程性判定无遗漏

> 字段校验规则、异常处理或流程分支未明确时,向用户提问,不得进入下一步。

需求内容与测试推导分层规则(强制)

测试要点不是 PRD 原文,生成时必须明确区分以下三类内容:

  • [PRD明确]:需求文档中直接写明的功能、字段、规则、流程、状态、校验或验收要求;必须能够回溯到 PRD 原文或来源定位。
  • [测试推导]:根据 [PRD明确] 需求设计出的正向、反向、边界、兼容、异常、联动或回归测试关注点;可以输出,但不得伪装成需求原文,也不得写成“需求要求”。
  • [待确认]:PRD 未说明、存在歧义或无法判断的内容;只能作为测试澄清项保留,不得自行补成确定规则。

标注要求:

  1. 测试要点字符串必须以 [PRD明确]、[测试推导] 或 [待确认] 开头;嵌套测试点同样必须标注。
  2. [PRD明确] 后保留需求事实;[测试推导] 后描述测试动作或验证关注点;[待确认] 后写明缺失信息和需要确认的问题。
  3. 不得把“合法路径”“非法操作不可执行”“缓存更新”“权限控制”“数据隔离”等未在 PRD 中明确写出的内容,直接写成 [PRD明确] 或需求结论;这类内容只能写成 [测试推导] 或 [待确认]。
  4. “按 PRD 全量覆盖”表示完整覆盖 PRD 明确内容,不表示可以把测试推导冒充为 PRD 内容;交付前必须同时输出三类内容的数量统计。
  5. 后续用例 Skill 消费时,必须优先使用 [PRD明确] 作为需求依据;[测试推导]作为测试设计;[待确认]作为需求澄清或风险项。

输出模板规范(强制,Step 4 编写时逐节点对照)

用例按 主模块 → 子模块 → 功能分组 → 功能 → 分支 → 测试要点 归纳整理,保证导入 XMind 后结构清晰、层级分明。
功能较多时必须在子模块与功能之间加“功能分组”层(feature_groups,按业务语义归类,如“配置”“辅助说明页面”“原逻辑回归”),把同一模块下的功能一层一层下钻,禁止把所有功能平铺在子模块下。
每个子模块先按 Step 3.4 的判定结果选择模板:有流程 → 流程形式;无流程 → 标准模板。

模板 A:标准模板(无流程的用例)

本期需求名称            ← project_name
└── 主模块               ← groups[].name
    └── 该模块下的子模块  ← groups[].modules[].name
        ├── 功能分组1     ← modules[].feature_groups[].name(可选;功能较多时按业务语义归纳)
        │   ├── 模块包括的功能1   ← feature_groups[].features[].name
        │   │   ├── 功能正例      ← dimensions.positive(功能层面·正常场景)
        │   │   │   ├── 1功能测试点1
        │   │   │   ├── 2功能测试点2
        │   │   │   └── 3功能测试点3
        │   │   ├── 功能反例      ← dimensions.negative(功能层面·异常场景)
        │   │   │   ├── 1功能反例测试点1
        │   │   │   ├── 2功能反例测试点2
        │   │   │   └── 3功能反例测试点3
        │   │   └── 场景          ← dimensions.data(数据层面·边界条件)
        │   │       ├── 1
        │   │       ├── 2
        │   │       └── 3
        │   └── 模块包括的功能2
        └── 该模块下的子模块2
    └── 主模块2

模板 B:流程形式(有流程的用例)

该模块下的子模块2        ← groups[].modules[].name(type=&quot;flow&quot;)
└── 该模块流程           ← modules[].flow.name
    ├── 开始             ← flow.start
    ├── 流程节点1        ← flow.nodes[0]
    │   └── 该节点的测试要点 ← flow.nodes[].points
    ├── 流程节点2        ← flow.nodes[1]
    │   ├── 是           ← branches[0].condition(向后流转 type=forward)
    │   │   ├── 继续节点3  ← branches[0].next
    │   │   └── 结束      ← branches[0].next / flow.end
    │   └── 否           ← branches[1].condition(回退 type=back)
    │       └── 返回流程2 ← branches[1].target

流程形式编写要求:
- 节点按实际执行顺序排列;节点内可挂该节点的测试要点。
- 每个判定节点必须穷尽"是/否"(或通过/驳回)两条分支,分支内可挂该分支的测试要点。
- 存在回退/循环时用 &quot;type&quot;: &quot;back&quot; + &quot;target&quot;: &quot;&lt;历史节点名&gt;&quot;,渲染为 否 — 返回流程节点2。
- 仅在确实存在流程性用例时使用;不存在流程时禁止生成空的"该模块流程"节点。

Step 4:用例编写与模块化归纳(按模板输出)

目标:基于 Step 3 的用例设计与输出形式决策,编写测试用例并做模块化归纳,输出结构化用例集。

关键指令:
- 严格遵循 references/case-schema.md(v2.2):不再写完整用例(不需要 case_id / 步骤 / 预期结果字段)。
- 模块化归纳:按 主模块 → 子模块 → 功能 → 分支 → 测试要点 + 概要 组织,保证 XMind 中层级分明、同一分支不重复堆叠。
- 按判定结果选模板:流程性子模块用 type:&quot;flow&quot; + flow;其余子模块用 dimensions(positive/negative/data)标准模板。
- 双维度不得缺失:每个功能的 positive / negative / data 三个分支都要有内容。
- 核心业务逻辑逐条列:每条规则在 positive 中单独立一条,不合并。
- 边界具体到数值:data 中写清最小值/最大值/临界越界值与具体长度、枚举、字符集。
- 概要(shared):跨功能共用的要点集中到 shared,避免在每个功能重复列举。
- 每个子模块必须明确列出本期新增/变更的功能,不能笼统堆在一处。
- 用例描述必须贴合具体业务,写清"什么对象/字段/场景下,触发什么校验或行为",禁止"测试正常/测试异常"等空话。
- 用例中的需求事实必须标 [PRD明确];测试人员扩展的场景标 [测试推导];需求未说明的标 [待确认]。

层级与命名规范(强制)

  • 先按“主模块 → 子模块 → 功能分组 → 功能 → 测试分支 → 细分要点”建立树;同一子模块下的功能必须按业务语义归入功能分组,不将多个子模块、多个功能或多个规则平铺在同一节点;功能多到看不清归属时必须继续下钻。
  • 子模块/功能名称使用业务动作或对象命名,例如“日期范围校验”“统计口径”“空数据展示”,避免使用“功能测试”“其他”等空泛标题。
  • 一个测试分支只表达一个可独立验证的对象;按“字段/条件 → 场景 → 预期关注点”拆分,避免一条要点同时包含多个无关校验。
  • 对可枚举内容逐项展开:每个状态、每个数据来源、每个边界值、每种组合条件分别列出;使用 1.、2.、3. 编号保持短句化。
  • 每条要点控制在一至两行,优先使用“对象 + 条件 + 行为/结果”句式;详细解释放入嵌套 points,不在父节点堆长段落。
  • 输出中明确区分 [PRD明确]、[测试推导]、[待确认];截图只引用实际存在且与当前节点对应的原型证据,不用父节点截图冒充不存在的子页面截图。
  • 可用 screenshot_paths 在子模块或功能节点绑定截图;Markdown 在节点下直接插入图片,HTML 在节点旁提供缩略图/可点击预览。
  • 用户提供经过人工优化的 XMind、Markdown 或 HTML 时,将其视为风格基准样例:优先学习其层级深度、节点命名、场景拆分、概要聚合、编号方式和截图挂载方式,不得退回到“子模块下直接平铺测试内容”的旧风格。
  • 生成前先检查每个子模块是否都有独立功能、每个功能是否都有独立测试分支、每个测试分支是否还能继续拆出条件/数据/结果;能拆分时必须继续下钻。
  • 对“正例/反例”“有值/无值”“单选/多选”“全部/指定”“按日/按周/按月”“已启用/未启用/已发布/未发布”等成对或多状态场景,默认拆为并列节点,不合并成一句概括性描述。
  • 需求中出现“测试场景”“注意点”“需要验证”等内容时,将其转换为具体的场景节点和细分验证点;不得原样保留为无法执行的空泛标题。

树结构示例(通用占位,实际内容按具体业务填充):

主模块(一级大类)
├── 子模块A1
│   ├── 功能A1-1
│   │   ├── 功能正例
│   │   │   ├── 1. 测试要点1
│   │   │   └── 2. 测试要点2
│   │   ├── 功能反例
│   │   │   └── 1. 测试要点3
│   │   └── 场景
│   │       ├── 1. 边界场景1
│   │       └── 2. 边界场景2
│   └── 功能A1-2
│       └── ...
└── 子模块A2(流程形式)
    └── 该模块流程
        ├── 开始
        ├── 流程节点1
        ├── 流程节点2
        │   ├── 是
        │   │   ├── 继续节点3
        │   │   └── 结束
        │   └── 否 — 返回流程节点2
        └── ...

> 注意:skill 中不得固化任何具体业务的字段/规则/术语(如某业务的专用字段、规则编号、脚本逻辑等)。示例一律使用占位符或中性业务,确保换任何需求都能复用同一套流程与结构。

测试要点深度展开模式(标注说明):

仅列"测试正常/异常"是不够的,测试要点应按以下通用模式深度展开,把每一条都拆成可独立验证的颗粒:

模式 通用做法 错误示例 → 正确示例
① 字段分支穷尽 每个字段需列出它的"为空 / 不存在 / 超长 / 特殊字符 / 越界 / 合规"等所有数据状态分支(属数据层面) ❌ "测试编码字段" → ✅ "字段为空时取默认值 A / 字段不存在时跳过校验 / 字段值超长时拒绝写入"
② 正反例场景化 把"正例 / 反例"按具体数据状态细分,每种场景列一条(分别进 positive / negative) ❌ "正例:合法数据通过" → ✅ "正例:XX 编码合法且完整 / 正例:字段为空按默认处理"
③ 多维度差异化 当存在多个数据源 / 类型 / 编码方案 / 版本时,每种都要独立测(不能合并写"各数据源都通过") ❌ "数据源字段默认值" → ✅ "数据源A 时取字段1 / 数据源B 时取字段2 / 数据源C 时取字段3"
④ 动态/历史数据兼容 首次配置、修改配置、历史数据为空时等场景都要单独测 ❌ "默认值" → ✅ "首次新增时默认未选 / 修改配置后是否生效 / 历史数据为空时取默认 6 个值"
⑤ 测试场景编号化 把可枚举的测试场景用 1. / 2. / 3. 编号列出,每条独立可执行可验证 ❌ "测试新增" → ✅ "1. 配置为空和未填 → 是否动态替换;2. 第一次配置后改 3 项 → 是否按新配置生成;3. 历史为空 → 是否取配置的 6 个"
⑥ 上下游联动 功能 A 改动后,是否影响其他功能 / 子模块 / 上下游数据流转 ❌ "新增字段" → ✅ "字段新增是否触发上游同步 / 是否影响统计结果正确性 / 是否影响下游模块"
⑦ 可枚举场景 → 独立功能 当某功能有多个独立可执行的测试场景,提升为独立功能节点,每个场景单独一个功能 ❌ 把 1/2/3 场景都塞在同一个功能下 → ✅ 新建"测试场景"独立功能,下面列出 1./2./3. 各自独立可测的场景要点
⑧ 映射/对应关系 → 独立功能 当存在 "X 与 Y 的对应 / 映射 / 关联" 关系,单独列一个功能展示该映射关系 ❌ 映射关系散落在各功能里 → ✅ 单独"映射关系"功能列对应表
⑨ 流程判定 → 分支穷尽 流程形式下每个判定节点必须拆出"是 / 否"(或通过 / 驳回)两条分支,各自补测试要点;回退路径单列 ❌ "审批通过与不通过" → ✅ "是 → 状态流转为已通过并进入归档 / 否 → 必须填写驳回原因并返回流程节点1"

> 关键原则:每一条测试要点必须可独立执行 + 可独立验证。若一个要点无法独立验证(依赖其他操作 / 结果含糊),说明拆分不够细,继续按上述模式展开。

详细提示词:加载 references/workflow-details.md 的 Step 4。

检查清单(全部满足方可进入 Step 5):
- 每个子模块都列出了本期新增/变更的功能
- 每个功能都写入了 dimensions.positive / negative / data 三个分支,且都有内容
- 核心业务逻辑在 positive 中逐条列出(未合并为"功能正常")
- 数据层面的边界值已具体到数值
- 流程性子模块已按流程形式输出(节点顺序正确、是/否分支穷尽、回退路径用 type:&quot;back&quot;)
- 不存在流程性用例时,未生成任何空的"该模块流程"节点
- 跨功能的共性要点已用概要(shared)节点集中
- 用例描述贴合业务、具体、无空话/占位符
- 每条用例已标记为 [PRD明确]、[测试推导] 或 [待确认]
- [PRD明确] 内容均可回溯到 PRD 原文或来源定位
- [测试推导] 未被表述为需求事实,[待确认] 未被擅自补全
- 用户已确认用例集覆盖度满足要求

> 用例缺少必要数据(如具体边界值未定义)时,向用户提问,不得用假设值替代。

Step 5:用例结构化与覆盖自检

目标:整理为标准 JSON 文件,进行完整性、冗余、覆盖度自检。

关键指令:
- 整理为符合 references/case-schema.md(v2.2)的完整 JSON(顶层含 project_name / version / created_date / dimension_labels / groups)。
- 完整性校验:必填字段齐全;每个子模块、功能和测试要点均已覆盖;每条字符串、对象 name 和嵌套要点均带 [PRD明确]、[测试推导] 或 [待确认] 标记。
- 来源校验:[PRD明确] 必须有 PRD 原文或来源定位;[测试推导] 不得冒充需求事实;[待确认] 不得被擅自补全。
- 冗余检查:合并重复用例时保留来源标记,不得因合并丢失 PRD 明确内容;共性内容上提到 shared。
- 覆盖度自检(双维度 + 三类场景):对照 Step 3 用例设计表逐项核对,并输出覆盖统计表:

子模块 功能 正常场景(正例) 异常场景(反例) 边界条件(场景) 覆盖结论
<子模块X> <功能Y> n 条 n 条 n 条 全覆盖 / 缺<边界>(原因)
  • 任一功能三类场景中有 0 条时必须说明原因,不允许静默缺项。
  • 模板一致性自检:有流程性子模块用 type:&quot;flow&quot;、其余用标准模板;无流程性用例时全量标准模板。
  • 输出 test-points.json 全文 + 自检报告(含三类来源标记数量 + 双维度覆盖统计)。

详细提示词:加载 references/workflow-details.md 的 Step 5。

检查清单(全部满足方可进入 Step 6):
- JSON 合法且符合 v2.2 规范,必填字段齐全
- 每个功能均覆盖正常 / 异常 / 边界三类场景(缺项已写明原因)
- Step 3 用例设计表中的每个测试点均已落为具体用例,未覆盖项为空(或已说明原因)
- 输出形式与流程性判定结果一致,无多余空流程节点
- 用户已确认最终用例集

> 自检未通过则修正后重新自检;覆盖不足源于需求缺失时,向用户提问,不得进入下一步。

Step 6:转换为 xmind

目标:将 test-points.json 转换为思维导图文件。

运行时选择(按序尝试,第一个可用即可):

# 1) 首选 Node:零依赖,Windows 上可用性最高
node &lt;skill目录&gt;/scripts/gen_xmind.js test-points.json test-points.xmind

# 2) 备选 Python:Windows 下 python 命令常不可用,必须用 py -3
py -3 &lt;skill目录&gt;/scripts/gen_xmind.py test-points.json test-points.xmind

> 不要假设 python 命令存在。若 node 与 py -3 均失败,再尝试 python3 / python。

输出格式说明(固定约定):
- 主产物输出 XMind Zen / 2020+ 高版本格式(--format=zen,zip 内含 content.json + metadata.json + manifest.json,layoutEngineVersion: &quot;3&quot;)。
- 不使用 XMind 8 兼容格式(content.xml):XMind 2024/2026 已不兼容旧格式,直接打不开。
- 画布布局固定为 右向层级树:--layout=logic → 在 rootTopic.structureClass 写入 org.xmind.ui.map.tree.right(注意:XMind Zen 从 rootTopic 读取该字段,写 sheet 无效)。根在最左,模块→测试类型→用例→详情逐级向右展开。
- XMind 2024/2026 打开时的样式弹窗处理:新版 XMind 打开 zen 高版本文件可能提示"导图样式已更新为当前 XMind 版本资料库中最新样式"。引导用户点击"取消 / 否" 保留原布局;若用户点了确定被升级成思维导图,需在 XMind 画布手动切换结构(右键 → 结构 → 选择"逻辑图/右向")并另存,再交付该文件。
- 备选格式:--format=xml8(老 XMind 8)、--format=opml、--format=md。
- 脚本内置结构类 ID:logic/tree = org.xmind.ui.map.tree.right;mindmap = 不设置(默认放射状);orgchart = org.xmind.ui.map.orgchart.down。

生成纪律(先删再生成):
- 每次生成前,先删除本次需求前缀的上一批产物(&lt;prefix&gt;-test-points.json、&lt;prefix&gt;-test-points.md、&lt;prefix&gt;-test-points.html,以及历史遗留的 .xmind / .opml / .xmind8.xmind),再运行生成命令;json 由 Step 5 重新生成覆盖,避免新旧文件混淆。
- 若用户只是要求把已确认的最新 json 重新转换为格式(未改需求内容),可保留该 json 并重新生成 md/html;除此之外不得保留上一批 json。
- Windows 下删除中文路径文件时用文件工具/脚本(终端传中文路径会乱码),不要用终端 del 命令操作中文路径。

默认产物(关键约束):

  • 本 skill 不再生成 .xmind 格式——直接交给 XMind 用户体验差(XMind 26 强制升级样式 / 8 兼容版不兼容),用户明确要求去掉
  • 默认只生成 2 种产物:
  • *.md:Markdown 大纲(标题层级 #/##/###/#### + - 列表项),用户可在 XMind 中「文件 → 导入 → Markdown」获得右向逻辑图
  • *.html:纯静态 HTML(CSS 实现根在左、向右延展的逻辑图),零依赖、双击即看、可打印为 PDF
  • 源数据 &lt;prefix&gt;-test-points.json 在每次完整生成时由 Step 5 重新覆盖,不额外保留旧版 json
  • 其他格式(zen/xml8/opml)脚本仍保留支持(若用户显式需要可手动指定),但默认不输出 .xmind

可选格式(脚本支持但默认不用):

参数 产物 适用场景
--format=md .md XMind 导入 / 人工评审 / 版本管理(首选)
--format=opml .opml 任意思维导图工具导入 OPML
--format=zen .xmind 仅当用户必须直接双击 .xmind 时(不推荐)
--format=xml8 .xmind XMind 8 及更早(新版 XMind 已不兼容)
  • 画布布局(--layout=logic|tree|mindmap|orgchart,默认 logic):仅用于 .xmind / .opml 格式
  • 其他可用参数:--sheet-title=XXX(画布名称)

验证与交付:
- 确认产物文件存在且大小 > 0;层级为 根(本期需求名称) → 主模块 → 子模块 → 功能 → 分支(功能正例/功能反例/场景) 或 该模块流程(开始 → 流程节点 → 是/否分支)。
- 输出交付总结:文件清单(路径 + 大小)、用例统计(主模块数 / 子模块数 / 功能数 / 用例总数 / 功能正例(正常) / 功能反例(异常) / 场景(边界) / 流程形式处数)、脑图结构概览。
- JSON 解析失败则回到 Step 5 修正 test-points.json 后重试。

Windows 环境注意事项:
- 终端对中文参数的编码不稳定,中文路径/文件名可能被写成乱码目录或乱码文件名。产物文件名一律用 ASCII(如 test-points.md、order-test-points.html),中文只出现在文件内容中。
- 不要先 cd 进含中文的目录;脚本用绝对路径调用。
- 脚本已强制 UTF-8 输出,文件内中文内容不会乱码;终端回显出现乱码属正常现象,以实际文件为准。

详细提示词:加载 references/workflow-details.md 的 Step 6。

检查清单:
- 文件已生成且大小 > 0,脑图层级正确(标准模板与流程形式均正确渲染)
- 用例统计已输出(含正例/反例/场景三类数量),用户已确认可正常打开

Step 7:打磨工序(最终质量关卡,生成完毕后自动执行)

7.0 触发时机(强制)

Step 6 产物生成完毕后立即自动执行,无需用户触发、不得跳过。 这是交付前的最后一道工序,位置固定在「生成产物」之后、「交付总结」之前。

Step 5 结构化 → Step 6 生成产物 → Step 7 打磨工序 → 交付总结
                                    ↑ 本步骤,自动触发

打磨只改表达,不改语义:修正措辞、清理冗余与空白、核对功能与需求一致性;不得新增、删除或改写任何测试要点的事实内容(要改内容必须回 Step 4/5)。

7.1 打磨对象

对象 说明
test-points.json 唯一数据源,必须先改这里
test-points.md 由 json 重新生成
test-points.html 由 json 重新生成

铁律:只改 json 后重新生成 md/html;禁止直接手改 md/html(三者为生成关系,手改会在下次生成时丢失)。

7.2 检查项清单(五项,逐项过)

① 措辞打磨

检查 不合格示例 合格示例
拗口词 存量记录、存量数据、存量放开 历史记录、历史数据、历史数据放开
术语前后不一致 同一对象在 A 处叫「编码」、B 处叫「编号」 全文统一
语义重复的修饰 「历史历史数据」「历史数据的历史」 单一修饰
超长单句(> 60 字无标点) 一段话逗号串联五六个校验 拆成多个可独立验证的短句
被动/倒装导致难读 「被统一刷为 yy_upload 的目标库字段」 「目标库字段统一刷为 yy_upload」
半截子短语(兜底替换产生) 「空表(0 条历史)」「大历史」 「空表(0 条历史数据)」「大数据量」

> 常见拗口词与推荐替换表见 references/polish-rules.md,优先查表;表中没有的按上表规则判断。

② 冗余清理

  • 同一功能下完全同义的要点 → 合并为一条(保留信息更全的表述)
  • 跨功能重复且无差异的要点 → 上提到该子模块的 shared 概要
  • 「测试正常」「测试异常」「功能可用」等无信息量的占位语句 → 删除或改写成具体对象+条件+预期
  • 同一节点下 positive 与 negative 内容完全相同 → 至少一方改写为真正的反向场景

③ 空白内容清理

现象 根因 处理
空「概要」节点 shared 写成字符串数组(生成器只认 {name, points}) 改为 [{name: &quot;语义名&quot;, points: [...]}]
空分支节点 dimensions.positive/negative/data 为空数组 补内容,或写明不适用原因
功能名为空 / 「未命名」 漏填 name 按业务动作或对象补名
要点字符串为空 / 仅标点 生成残留 删除
占位符残留(__XXX__、TODO、{xxx}、&lt;链接&gt;) 模板未填充 填充或改为明确说明
空功能(features: [{}]) 结构残留 删除

④ 功能与需求一致性核对

  • 正向核对:需求文档中每一条明确需求,至少有一条用例覆盖(标注来源为需求原文);
  • 反向核对:每条用例都能回溯到需求原文或明确的测试推导理由,不得出现需求中不存在的功能点;
  • 排除项核对:需求方声明「不在范围内」的内容(如需求素材、其他版本模块),用例中不得作为需求出现;如作为背景说明必须显式标注;
  • 默认值核对:需求中给出的默认值,用例中必须原样出现且不被改写(如统一值、默认分类名);
  • 口径核对:同一规则在不同模块的描述必须一致(如唯一键规则、排序规则、校验提示)。

⑤ 可读性提升

  • 同一层级的句式统一(建议「对象 + 条件 + 预期」);
  • 可枚举项用 1. 2. 3. 编号,不塞进一句;
  • 成对/多状态场景(单选/多选、为空/非空、成功/失败)拆为并列要点,不用一句概括;
  • 每条要点可独立执行、可独立验证;依赖其他操作才能验证的继续下钻拆分。

7.3 质量标准(量化门槛,全部满足才放行)

# 指标 门槛
Q1 空节点(概要/分支/功能/要点) 0
Q2 占位符残留(__XXX__、TODO、{xxx}、&lt;链接&gt;) 0
Q3 无信息量占位语句(「测试正常」「测试异常」等) 0
Q4 来源标注残留(如 [PRD明确]、[测试推导]、[待确认],除非用户明确要求保留) 0
Q5 同一功能下三维度(正例/反例/场景) 全部非空(不适用者已写明原因)
Q6 单条要点长度 ≤ 120 字,超长须拆分
Q7 术语一致性 同一对象全文同名,无同义混用
Q8 需求覆盖 需求明确项 100% 有用例对应
Q9 排除项污染 声明排除的内容 0 条作为需求出现
Q10 生成关系一致 json / md / html 三者内容一致(md、html 必须由打磨后的 json 重新生成)

7.4 执行方式

建议脚本化自动检查 + AI 判断修正,流程:

  1. 自动扫描:对 json 跑结构化检查(空节点、占位符、标注残留、长度、同义重复、术语不一致),输出问题清单;
  2. 人工/AI 判断:对清单逐条判定「改表述 / 合并 / 删除 / 保留并说明原因」;
  3. 应用修正:只改 json;
  4. 重新生成:重跑 Step 6 生成 md/html;
  5. 复扫确认:再跑一次自动扫描,确认 Q1–Q10 全部达标。

防误报铁律(扫描规则本身也要打磨):宁可漏报,不可误报。 漏报只是没优化到,误报会把正确内容改错,且带着「自动检查」的可信度外衣更容易被直接采纳。

  • 新增或修改扫描模式前,必须先在小样本上试跑,逐条人工判读命中项是否真为问题;存在任一条误报就收紧模式或弃用该模式;
  • 中文的「的」字结构、量词结构(如 0 条历史)、被动句极易误报,这类模式默认按误报处理,必须人工确认;
  • 扫描结果一律标注「待人工确认」,不得作为「已发现问题」直接修改;每条命中必须带原文摘录与路径,没有摘录的命中项不允许进入修改环节。

> 典型案例:用正则 的历史 扫「助词错位」,命中 6 处 的历史记录、的历史档案——均为正确语法。若不判读直接替换,会改坏 6 条正确表述。

7.5 不过关时的处理

情况 处理
仅是表达问题(措辞/冗余/空白) 本步骤直接修正后重新生成
缺少用例导致需求覆盖不足(Q8 不达标) 回 Step 4/5 补用例,再回到本步骤
需求本身有歧义导致无法判定 停下来向用户提问,不得自行补成确定规则
用户明确要求保留来源标注或特定表述 在交付说明中注明该项为例外,其余门槛仍须达标

检查清单(全部满足方可交付):
- Q1–Q10 全部达标,自动扫描结果干净
- md / html 已由打磨后的 json 重新生成(非打磨前版本)
- 打磨只改表达、未改动任何要点的事实内容
- 已执行防误报自检:本次使用的扫描/替换规则无误报(有误报的已收紧或弃用,并记入打磨报告)
- 已向用户说明本次打磨改了什么(改了哪些类、多少处)
- 用户已确认可正常打开最终产物

Step 8:可选的付费解锁(默认关闭,需用户显式同意上传)

本节默认不执行:Step 7 通过后,把本机三件套的路径直接交付给用户即完成全流程,不联网、不上传。仅当用户主动要求"发布预览 / 解锁完整版"时才进入本节。

详细契约:references/aipay-integration.md(接口字段、状态码、告知清单与校验纪律)。服务地址只从 config/aipay.json 的 api 字段读取,环境变量 AIPAY_SKILL_API 优先;未配置即视为不启用,直接跳过本节。

8.1 前置条件(全部满足才可继续)

  • Step 7 已通过 Q1–Q10,&lt;prefix&gt;-test-points.json/.md/.html 均为打磨后版本
  • 服务地址已配置(config/aipay.json 或 AIPAY_SKILL_API),且为 HTTPS
  • 用户主动要求付费解锁(不得由 skill 自行发起)
  • 已向用户展示 8.2 的告知清单,且用户明确表示同意上传

8.2 上传前告知清单(必须逐项展示,缺一不可)

先执行只读命令拿到真实清单(不联网):

node &lt;skill目录&gt;/scripts/aipay_gate.js manifest --dir &lt;专属输出目录&gt; --prefix &lt;prefix&gt;

把 stdout 原样呈现给用户,必须包含以下各项:

项 内容
待上传文件 三件套的文件名、字节数、sha256 摘要
接收方 域名 + 接口地址(来自配置,不得猜测、拼接或临时替换)
用途 生成前 20% 节点的节选预览;用户支付后由服务端回传完整内容
留存 草稿在服务端暂存至过期(HTTP 410)为止,过期需重新上传
范围 只上传这三份产物,不含源码、需求原文、截图、账号信息
拒绝的后果 不上传也能拿到本地产物,内容完整度不受影响

在用户明确同意之前,不得执行 8.3。

8.3 上传并展示节选(必须带 --consent)

node &lt;skill目录&gt;/scripts/aipay_gate.js publish --dir &lt;专属输出目录&gt; --prefix &lt;prefix&gt; --consent
  • 缺 --consent 时脚本立即以退出码 5 中止,不发起任何网络请求
  • 拿到 draft_id 后,把 stdout 的「节选预览」原样呈现,并说明结构统计(主模块 / 子模块 / 功能 / 用例要点)、预览比例、价格与下一步命令
  • 上传失败(退出码 4)时按 8.6 回落到本地交付,不反复重试

8.4 触发支付

node &lt;skill目录&gt;/scripts/aipay_gate.js unlock --draft &lt;draft_id&gt;
  • 退出码 2 表示需要支付:把返回的 金额、支付截止时间、amtPaymentLink、Payment-Needed 原样呈现
  • 宿主具备 AI 付支付能力时,把 Payment-Needed 交给支付能力完成付款;否则请用户用支付宝端支付后把 Payment-Proof 提供回来

8.5 解锁、校验与落盘

node &lt;skill目录&gt;/scripts/aipay_gate.js unlock --draft &lt;draft_id&gt; --proof &lt;Payment-Proof&gt; --prefix &lt;prefix&gt;

输出目录默认是当前登录用户主目录下的 test-points/(Windows 即 C:\Users\&lt;用户名&gt;\test-points),与执行命令时的 cwd 无关,无需传 --out;确需指定时才用 --out &lt;目录&gt;。

服务端返回的三件套通过校验后写入 &lt;prefix&gt;-test-points.json/.md/.html。落盘前脚本强制做以下校验,任一不通过即以退出码 6 中止且不写任何文件:

校验项 说明
摘要比对 服务端返回 digests / files_sha256 / sha256 时逐项比对,不一致即拒绝落盘
结构校验 未提供摘要时至少校验:内容非空、json 可解析且顶层为对象、groups 若存在必须为数组
路径防护 文件名清洗掉 .. 与路径分隔符;写入目标必须落在输出目录内,禁止服务端左右本地路径
验付与幂等 Payment-Proof 由服务端验付;同一凭证重试返回同一订单,幂等不重复扣款
备份 + 原子写入 覆盖前把本地旧文件备份为 &lt;文件名&gt;.bak(可回滚),再写临时文件替换,避免留下半截文件

支付由买方客户端完成时(收银台/AI 付客户端代为请求资源并拿到 200),把该 200 响应体原样存成文件后落盘:

node &lt;skill目录&gt;/scripts/aipay_gate.js save --body &lt;支付端返回的响应体.json&gt; --prefix &lt;prefix&gt;

同样经过上述校验后写入 &lt;prefix&gt;-test-points.json/.md/.html,并回显 draft_id / 订单号 / 履约确认状态。禁止手抄或改写响应体内容。

8.6 降级与失败处理(一律以本地产物兜底)

现象 / 退出码 处理
用户拒绝上传、或服务地址未配置 跳过本节,直接交付本机三件套,交付说明标注"本地直出,未上传"
5 未获得同意 属预期拦截:回到 8.2 重新确认,或按本地直出交付
4 上传/解锁请求失败(网络、5xx) 停止重试,交付本机三件套并说明失败原因
402 凭证无效 / 金额不符 重新 unlock 取新账单再支付;用户不支付则本地直出交付
502 FULFILLMENT_CONFIRM_FAILED 用同一 Payment-Proof 重试,不重复付款
410 草稿过期 重新 publish 后再走 8.4;不重试则本地直出交付
6 回传内容校验失败 丢弃回传内容,保留本地产物,向用户说明校验未通过
无法取得 Payment-Proof 停下并向用户说明,不得编造凭证

8.7 检查清单(执行过本节时逐项确认)

  • 用户已看到 8.2 的完整告知清单,并在对话中明确同意上传
  • 上传时带了 --consent,且未在用户同意前发起任何网络请求
  • unlock 返回 200,且已附带 Payment-Validation 回执
  • 回传内容通过摘要或结构校验(退出码 0),落盘文件大小 > 0
  • 覆盖前已生成 &lt;文件名&gt;.bak 备份(可直接回滚);已向用户输出 draft_id、out_trade_no、trade_no、最终文件路径与大小
  • 未执行本节或发生降级时,交付说明明确标注"本地直出,未上传"

> 付费解锁是可选服务,不是交付门槛。任何环节失败都回落到本地产物,不重复扣款、不重复上传、不编造凭证、不把未校验的回传内容写盘。

需求澄清提问模板

任一步骤检查清单未满足时,按以下模板提问:

我在【Step X:步骤名称】中发现以下信息尚不明确,需要您确认后再继续:

1. [问题1描述]
   - 当前理解:[最佳猜测]
   - 需要确认:[具体问题]

2. [问题2描述]
   - 当前理解:[最佳猜测]
   - 需要确认:[具体问题]

如涉及界面或流程不清晰,请提供截图,我将根据截图理解后再继续。

资源

  • scripts/gen_xmind.js — 首选。Node 零依赖转换脚本,输出 MD / HTML / OPML / Zen / XML8 格式,支持 dimensions 双维度分支与 flow 流程链(Step 6 时运行,无需加载进上下文)。
  • scripts/gen_xmind.py — Python 标准库版本的等价脚本(默认 md),供 Node 不可用时使用(py -3 调用)。
  • references/workflow-details.md — 各步骤的完整提示词原文(Prompt),执行到对应步骤时按需加载。
  • references/case-schema.md — v2.2 用例字段与模板规范:双维度(dimensions)、流程形式(flow)、输出形式决策规则(Step 3/4/5 时按需加载)。
  • references/polish-rules.md — Step 7 打磨工序配套细则:拗口词替换表、冗余与空白识别规则、需求一致性四向核对、自动扫描脚本要点、Q1–Q10 门槛速查(Step 7 时按需加载)。
  • scripts/aipay_gate.js — Step 8 可选付费解锁客户端(零依赖):manifest 只读展示上传清单(不联网)、publish 需 --consent 才上传暂存、unlock/save 校验后落盘、status 查询(Step 8 时运行,无需加载进上下文)。
  • config/aipay.json — 服务地址与告知文案配置:api 留空即禁用付费流程;可被环境变量 AIPAY_SKILL_API 覆盖,scope/purpose/retention 用于上传前告知。
  • references/aipay-integration.md — Step 8 接入契约:服务端接口、402/410/502 处理、上传告知清单、回传校验与路径防护、Payment-Proof 来源(Step 8 时加载)。
  • assets/example-cases.json — 结构示例(中性业务),同时演示标准模板与流程形式两种写法。

常见问题

5 问
答案由本站依据条目字段整理
测试用例生成xmind工具怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_cb670f4b/test-case-to-xmind。安装方式为未标注。装完刷新技能列表或重开客户端。

测试用例生成xmind工具支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

测试用例生成xmind工具权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

测试用例生成xmind工具收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

测试用例生成xmind工具用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。