skills/node-version-compatibility-tester-yashu/SKILL.md
自动测试指定技能在不同Node.js LTS版本下的兼容性。激活条件:用户消息须包含以下关键词之一:`测试Node版本兼容性`、`多版本Node测试`、`Node版本兼容性测试`。
npx skillsauth add steelan9199/wechat-publisher-skill node-version-compatibility-tester-yashuInstall 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.
通用 Node.js 版本兼容性测试工具。对任意用户指定技能,在 3 个 Node.js LTS 版本(18.20.8 / 20.20.1 / 动态查询的最新 LTS)下,对该技能的所有功能脚本逐一执行真实功能测试,输出兼容性矩阵报告。
| 用户输入触发词 | AI 执行动作 | | ---------------------------------------------------------- | ------------------------ | | "测试Node版本兼容性" / "多版本Node测试" / "技能兼容性测试" | 按【兼容性测试模式】执行 |
| 项目 | 说明 |
| ----------------- | ------------------------------------------------------------------------ |
| 依赖工具 | NVM(Node Version Manager) |
| Node 版本 | 测试 3 个 LTS 版本:18.20.8 / 20.20.1 / 动态查询的当前最新 LTS |
| Shell | PowerShell 5(Windows)/ bash(macOS/Linux) |
| 脚本执行 | 本技能为纯文档型 Skill,不包含可执行脚本目录,所有命令由 AI 直接运行 |
| $SKILL_DIR | d:\skill\private-skills\.trae\skills\node-version-compatibility-tester |
| $TARGET_SKILL_DIR | 用户指定的被检测技能目录 |
⛔ 最高优先级规则:以下 10 步必须逐条执行。每完成一步,才能进入下一步。严禁合并步骤、跳过步骤、或用"常识"替代步骤。
第1步:nvm --version → 确认 NVM 已安装
↓ 未安装 → 提示用户安装 NVM,中断
第2步:读取 references/node-version-query.md
↓ 这一步不可跳过!它定义了如何查询和提取最新 LTS 版本号
第3步:nvm list available → 查询远程可用的 Node.js 版本
↓ 必须执行此命令,禁止用 nvm list 替代!
第4步:从 nvm list available 的输出中提取最新 LTS 版本号
↓ 按 node-version-query.md 中的规则提取(第 2 列 LTS 列第一行)
↓ 记下这个版本号,例如 24.18.0
第5步:nvm list → 检查本机是否已安装三个版本
↓ 三个版本 = 18.20.8 / 20.20.1 / 第4步提取的最新 LTS
↓ 有缺失 → 立即中断,告知用户缺失的版本号和安装命令
第6步:读取目标技能的 SKILL.md → 提取「全脚本索引清单」
↓ 获取所有功能脚本列表,全部都要测试
第7步:nvm use <版本> → 依次切换到 18.20.8 / 20.20.1 / 最新 LTS
第8步:在每个版本下,安装依赖并执行所有功能脚本
↓ 参考 test-execution-guide.md 的 4 步 SOP
第9步:记录每个版本 × 每个功能的测试结果
第10步:生成兼容性测试报告
为什么必须用 nvm list available 而不是 nvm list?
| 命令 | 作用 | 问题 |
| -------------------- | ----------------------------------- | ------------------------------------------------- |
| nvm list | 列出本机已安装的版本 | 看不到远程的最新 LTS;如果最新 LTS 没安装就看不到 |
| nvm list available | 列出远程 Node.js 官方发布的版本 | ✅ 能获取真正的最新 LTS 版本号 |
❌ 错误做法:
nvm list→ 看到当前在用 24.18.0 → 认为"24.18.0 就是最新 LTS"✅ 正确做法:
nvm list available→ 解析输出获取 LTS 列版本号 → 得到 真正的最新 LTS
nvm list available 输出示例(Windows):
| CURRENT | LTS | OLD STABLE | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
| 26.4.0 | 24.18.0 | 0.12.18 | 0.11.16 |
→ 跳过表头,取第一行数据第 2 列(LTS 列) = 24.18.0,这就是最新 LTS。
| 前置条件 | 检查方式 | 缺失时处理 |
| -------------------- | --------------- | ------------------------------------------------------------------------------------------------------- |
| 本机已安装 NVM | nvm --version | 提示用户安装 NVM |
| 3 个测试版本均已安装 | nvm list | 见 references/node-version-query.md 第「最新 LTS 版本缺失处理规则」 |
3 个测试版本中前 2 个为固定版本(18.20.8 / 20.20.1),第 3 个最新 LTS 需通过 NVM 动态查询。NVM 查询规则、最新 LTS 缺失处理详见 references/node-version-query.md。
| 步骤 | 执行动作 | 必须执行的命令 / 操作(按顺序) | 详细参考 |
| ---- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| 1 | 查询最新 LTS | ① 读取 references/node-version-query.md;② 运行 nvm list available;③ 从输出提取最新 LTS 版本号(第 2 列 LTS 列第一行);④ 运行 nvm list 确认三个版本均已安装 | node-version-query.md |
| 2 | 读取技能文档 | 读取目标技能的 SKILL.md,提取「全脚本索引清单」表格 | — |
| 3 | 遍历所有功能 | 对清单中的每一个功能脚本,在 3 个 Node 版本下分别执行 | — |
| 4 | 切换 Node 版本 | 运行 nvm use <version> 切换到对应 Node.js 版本 | — |
| 5 | 执行功能测试 | cd 到技能 scripts 目录;npm install;按目标技能文档构造参数文件;执行脚本 | test-execution-guide.md |
| 6 | 记录测试结果 | 将每个版本 × 每个功能的测试结果(✅通过 / ❌失败 + 错误信息)记录到内存 | — |
| 7 | 生成报告 | 汇总所有版本的测试结果,生成兼容性测试报告 | 见下方「输出结果」 |
⛔ 步骤 1 的四个子步骤必须全部完成,不可跳过任何一个。尤其是
nvm list available,这是获取最新 LTS 版本号的唯一可靠来源。实际运行测试的完整 SOP(4 步流程、测试参数构造、凭证处理、授权保护处理)详见 references/test-execution-guide.md。
| 规则 | 说明 |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| 禁止 node --check | 必须对每个功能进行真实功能测试,仅做语法检查不算通过 |
| 执行前必读文档 | 在测试目标技能的每个功能之前,必须先读取该技能的 SKILL.md 学习调用方式,禁止假设命令格式 |
| 凭证需求询问 | 对需要 API 凭证的功能,先读取 $TARGET_SKILL_DIR/.env 获取凭证;若 .env 不存在,则终止任务并使用 AskUserQuestion 向用户索要凭证 |
| 授权保护禁止绕过 | 检测到目标技能有授权保护信号(license-key.txt、免费试用限制等)→ 立即终止该功能测试并标记「跳过(授权保护)」,禁止用 curl/Invoke-RestMethod 绕过 |
| 多版本测试建议 | 总执行次数 ≥ 12 时优先用总控脚本;多版本切换后必先 smoke test 再全量执行 |
「公共规则」的实战经验与踩坑案例(总控脚本策略、Smoke Test 优先、瞬态锁识别、脚本成功 ≠ 业务成功)详见 references/battle-experiences.md。
| 错误场景 | 错误表现 | 处理方式 |
| -------------------------------------------------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| nvm 未安装 | 执行 nvm list 报错 | 提示用户安装 NVM |
| 当前最新 LTS 版本未安装 | nvm list 中没有当前最新 LTS 版本 | 立即中断测试,告知用户具体版本号,并提供 nvm install x.y.z 命令 |
| 其他测试版本未安装 | nvm list 中没有用户指定的 Node 版本 | 询问用户是否安装对应版本,或者更换测试版本 |
| Node 版本切换失败 | nvm use <version> 返回非零退出码 | 检查 nvm 配置,重试切换,或跳过该版本 |
| 技能运行报错 | 测试过程中技能执行失败 | 记录完整错误信息,继续测试其他版本 |
| 飞书 API 瞬态锁(code 1254291 / LockNotObtainedError) | HTTP 响应错误但脚本正常退出 | 等待 3 秒后重试 1 次,仍失败则按业务错误处理(详见 经验 3) |
测试结果表格说明:
成功时输出示例:
✅ Node.js版本兼容性测试完成
📊 测试结果汇总:
| Node.js版本 | get-tenant-access-token | feishu-to-markdown | markdown-to-feishu | url-to-document-id | clear_temp | 状态 |
|------------|------------------------|-------------------|-------------------|-------------------|------------|------|
| 18.20.8 | ✅ 通过 | ✅ 通过 | ✅ 通过 | ✅ 通过 | ✅ 通过 | 完全兼容 |
| 20.20.1 | ✅ 通过 | ✅ 通过 | ✅ 通过 | ✅ 通过 | ✅ 通过 | 完全兼容 |
| 24.18.0 | ✅ 通过 | ✅ 通过 | ✅ 通过 | ✅ 通过 | ✅ 通过 | 完全兼容 |
✅ 结论:该技能完美支持所有测试的Node.js LTS版本
📝 下一步:可以根据测试结果更新技能的环境要求说明
失败时输出示例:
❌ Node.js版本兼容性测试发现问题
📊 测试结果汇总:
| Node.js版本 | get-tenant-access-token | feishu-to-markdown | markdown-to-feishu | url-to-document-id | clear_temp | 状态 |
|------------|------------------------|-------------------|-------------------|-------------------|------------|------|
| 18.20.8 | ✅ 通过 | ✅ 通过 | ❌ 失败 | ✅ 通过 | ✅ 通过 | 部分兼容 |
| 20.20.1 | ✅ 通过 | ✅ 通过 | ✅ 通过 | ✅ 通过 | ✅ 通过 | 完全兼容 |
| 24.18.0 | ✅ 通过 | ✅ 通过 | ❌ 失败 | ✅ 通过 | ✅ 通过 | 部分兼容 |
❌ 问题说明:markdown-to-feishu 在 Node.js 18.20.8 和 24.18.0 版本下失败
错误信息:Error: Cannot find module 'some-module'
解决建议:检查技能依赖是否兼容这些 Node.js 版本,或者更新依赖配置
| 文档 | 作用 | | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------- | | references/node-version-query.md | 必测版本号、NVM 查询规则、最新 LTS 缺失处理 | | references/test-execution-guide.md | 实际运行测试 4 步 SOP、测试参数构造、凭证处理策略、授权保护处理规则 | | references/usage-guide.md | 通用使用模板、推荐提示词、典型示例 | | references/battle-experiences.md | 4 篇实战经验(总控脚本、Smoke Test、瞬态锁识别、脚本成功 ≠ 业务成功)及使用指南 |
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」时触发。产出评审报告:结论(自包含 / 不独立)+ 问题清单(文件:行号 + 引用的外部依赖 + 为何影响独立性)+ 整改建议。