skills/retest-generator/SKILL.md
为已由 AI 测试成功的技能功能生成一键复测脚本和文档,让用户零 AI 消耗地独立复现测试。当用户说『为 XX 技能生成复测工具』、『生成手动测试脚本』、『我要手动复测』时触发。
npx skillsauth add steelan9199/wechat-publisher-skill retest-generatorInstall 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.
为已由 AI 验证成功的技能功能,在目标技能目录下生成一键复测脚本 + 使用文档,让用户之后无需 AI 即可独立复现该测试。
AI 测试消耗算力 = 花钱。 已验证成功的测试流程,应固化成用户可独立运行的脚本,避免重复消耗 AI 算力。
当用户在以下情境中调用本技能:
典型触发语:
第一优先:当前对话中已成功测试的真实过程(黄金蓝本)
第二优先:目标技能的 SKILL.md 和参考文档
第三优先:已验证的成熟范式
spawnSync 调用封装脚本(非 execSync)indexOf('{') ~ lastIndexOf('}') 提取 JSONimport,配合 "type": "module")await sleep(interval * 1000)⚠️ 强制要求:AI 生成脚本前,必须先回顾当前对话中与目标技能相关的成功测试过程。禁止仅凭技能文档凭空推导,因为文档不会记录实际运行时的细节坑点。
从用户请求中识别:
coze-callerAI 回顾当前对话中:
读取以下文件补充细节:
$SKILL_DIR/SKILL.md(目标技能的技能说明)$SKILL_DIR/references/ 下的相关参考文档$SKILL_DIR/config/ 下的配置文件结构$SKILL_DIR/.env 的配置项(如轮询间隔)输出位置: 目标技能/手动测试技能/
生成以下 3 个文件:
retest.js(一键复测脚本)必须包含:
node retest.js "今天天气怎么样?")__dirname 推导目标技能的 scripts、temp、config 目录)extractJson、runScript(spawnSync + 合并 stdout/stderr)、parseEnv代码范式(必须沿用):
import { spawnSync } from "node:child_process";
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
import { dirname, join, resolve } from "node:path";
import { fileURLToPath } from "node:url";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
// 目标技能根目录(手动测试技能 的上一级)
const SKILL_DIR = resolve(__dirname, "..");
const SCRIPTS_DIR = join(SKILL_DIR, "scripts");
// 从脚本输出提取 JSON(封装脚本可能把 JSON 输出到 stderr)
function extractJson(text) {
const start = text.indexOf("{");
const end = text.lastIndexOf("}");
if (start === -1 || end === -1 || end < start) {
throw new Error("脚本输出中未找到 JSON:\n" + text);
}
return JSON.parse(text.slice(start, end + 1));
}
// 用 spawnSync 调用封装脚本,合并 stdout+stderr
function runScript(args, label) {
console.log(`\n▶ ${label}`);
const r = spawnSync("node", args, { cwd: SCRIPTS_DIR, encoding: "utf-8" });
if (r.status !== 0) {
throw new Error(
`脚本执行失败(exit ${r.status}):\n${r.stdout || ""}${r.stderr || ""}`,
);
}
const combined = `${r.stdout || ""}\n${r.stderr || ""}`;
return extractJson(combined);
}
使用文档.md必须包含:
package.json{
"type": "module"
}
生成完成后,向用户说明:
retest.js(若目标技能已有该文件则覆盖,因为用户调用本技能意味着要更新复测工具)使用文档.mdquestion.txt、input.json 等)scripts/temp/ 下content-media
自动启停视频课程录制所需的辅助程序。激活条件:用户消息须包含以下关键词之一:`我要录制视频课程`、`开始录制视频课程`、`准备录课`、`视频课程录完了`、`录课结束`、`停止录制`。
content-media
生成扁平的 SVG 图(架构图、中心辐射图、流程图、简易时序图、思维导图、组织架构图、2×2对比矩阵、时间线、循环图、鱼骨图),也支持把已有 SVG 文件转成 PNG 图片。激活条件(满足任一即可):生成类关键词 `画架构图`、`画中心辐射图`、`画流程图`、`画时序图`、`画思维导图`、`画脑图`、`画组织架构图`、`画树形图`、`画对比矩阵`、`画四象限`、`画时间线`、`画循环图`、`画鱼骨图`、`画因果分析图`;转换类关键词`SVG 转图片`、`把 SVG 转成图片`、`把 SVG 转成 PNG`。
testing
检查指定技能文档中的废话文字并输出诊断报告。激活条件:用户消息须包含以下关键词之一:`检查技能废话`、`这个技能文档有没有多余内容`、`清理技能文档废话`、`审查技能文档废话`、`清理技能文档历史说明`。
testing
评审一个技能是否「自包含」——即其知识、经验、规范是否全部内置在技能文件内(SKILL.md + references/),不依赖特定 AI 客户端专有的知识接口命令(如 read_me / modules: / show_widget / Visualizer)去外部拉取,也不硬编码某个 AI 软件的私有路径(如 .workbuddy)。同时检查工具依赖(node、浏览器、命令行)是否仅作为用户自备工具声明、未写死私有路径。当用户要求「评审这个技能是否自包含 / 独立」「检查技能知识是否内置」「审查技能的独立性 / 可移植性」「audit / review a skill for self-containment」时触发。产出评审报告:结论(自包含 / 不独立)+ 问题清单(文件:行号 + 引用的外部依赖 + 为何影响独立性)+ 整改建议。