打开网易新闻 查看精彩图片

用 Cursor 写测试技能,明明照着教程配好了 SKILL.md,AI 就是不按套路出牌?

技能多了就“失忆”,输出格式乱七八糟,换个项目直接报废……

别急着怀疑 AI,80% 的问题都出在下面这 8 个坑里。

打开网易新闻 查看精彩图片

坑 1:技能根本不在列表里(路径/格式写错了)

典型现象:

对话框里输入“列出你当前拥有的 skills”,返回的列表找不到你写的那个技能。

AI 完全不理会你的指令,用通用方式回答。

原因:

Cursor 要求技能文件必须放在.cursor/skills/<技能文件夹>/SKILL.md,且 YAML 头格式必须严格正确。

解决:

1、确认路径

你的项目/└── .cursor/ └── skills/ └── 接口测试生成器/ ← 文件夹名随意 └── SKILL.md ← 文件名固定大写

2、检查 SKILL.md 头格式

必须这样写:

---name: 接口测试生成器description: 根据接口代码生成 pytest 测试用例---以下是你的指令...

常见错误:--- 没写全、name: 后面缺少空格、中文冒号。

3、重新加载

修改后按 Cmd/Ctrl+Shift+P → 输入 Reload Skills,或直接重启 Cursor。

坑 2:技能总是时灵时不灵(灵敏度下降)

典型现象:

技能描述里写了“当用户要求生成测试用例时触发”,但 AI 有时触发,有时不触发。

项目里技能数量超过 3 个后,AI 经常选错、漏选。

原因:

多个技能混淆了 AI 的意图识别,它要在好几份描述里做选择,再加上通用指令干扰,自然不稳。

解决:

强制点名法:对话中直接用 @技能名 指定,不依赖自动判断。

示例:

@接口测试生成器 针对 user_api.py 生成测试用例

虽然每次都要手动打一下,但 可靠性接近 100%。可以把它写进团队规范:凡是要求技能输出,必须 @技能名

坑 3:全局技能太多,AI 聊久了就“失忆”

典型现象:

一开始技能工作正常,聊了几轮后 AI 突然回归普通模式,好像忘了自己有这个技能。

甚至开始出现错误的输出格式。

原因:

全局技能(对所有项目生效)会一直占用上下文窗口。如果你挂了 5 个全局技能,每个几百字,再加上系统 prompt,可能占据好几千 token。对话变长后,早期的技能描述就被“挤出”窗口,AI 自然忘记。

解决:

  • 原则:只有“通用规范类”技能才放全局。
  • 例如:“测试报告必须包含风险分析”、“所有代码示例用 Python 3.10+”。
  • 项目专属技能(如针对某个接口的生成器)放在项目级 .cursor/skills/,不要全局。
  • 定期清理:不常用的全局技能先删掉,用的时候再加。

坑 4:技能执行到一半就断掉或卡住

典型现象:

技能要求 AI 先分析代码、再生成用例、再输出报告。但 AI 做完分析后突然问“需要我继续吗?”或者只输出分析结果,没有后续。

原因:

技能描述中 没有明确要求“一次性完成所有步骤”,AI 理解为可以分步输出。

或者某一步的输出格式与下一步期望的输入不匹配,AI 无法自动衔接。

解决:

在技能描述开头加强制规则:

## 执行规则- 你必须一次性完成以下所有步骤,中间不得询问用户是否继续。- 步骤3的输出必须保存为 `{analysis}`,步骤4必须直接使用该变量。

如果技能超过 10 步,考虑拆成两个技能,用 → 链式调用。

打开网易新闻 查看精彩图片

坑 5:技能老是忘记你告诉它的项目规则

典型现象:

你已经在对话中说过“我们的接口返回码 0000 表示成功,其他表示失败”。

技能第一次记得,几轮对话后又开始用 HTTP 200 判断成功。

或者你要求“测试环境必须用公司内部账号”,过一会儿它就换回公共账号。

原因:

项目特定规则只存在于临时对话记忆中,早期信息会被后续内容挤走。

技能描述本身没有固化这些常量。

解决:

把项目规则直接写进 SKILL.md,不要只靠口头告知。

示例:

## 项目特定约束- 成功码校验:`response.code == "0000"`- 测试域名:`https://test-internal.example.com`- 默认超时:30 秒,不可低于 10 秒

如果规则经常变动,可以建一个名为 项目规范 的全局技能(只放常量),需要时用 @项目规范 显式引用,避免自动加载占用上下文。

坑 6:输出格式随心所欲,没法自动化解析

典型现象:

你要求“输出测试用例,格式为 JSON”,AI 有时输出 JSON,有时输出 Markdown 表格,有时还加一堆解释文字。

你想把它接到自动化工具(如上传到 TAPD),却被乱七八糟的格式卡住。

原因:

技能描述中的格式要求强制性不够,AI 理解为“建议”而非“必须”。

没有给出精确的 Schema 示例。

解决:

在技能描述中使用 “输出格式约束 + 强制示例”,并加警告语。

示例:

## 输出格式(必须严格遵守,不得添加任何额外文字)你必须输出以下结构的 JSON,不要输出代码块之外的任何内容。{ "test_cases": [ {"id": 1, "name": "登录成功", "steps": ["输入账号", "输入密码", "点击登录"]} ]}如果生成失败,输出 {"error": "失败原因"},不要自由发挥。

如果平台支持(如 OpenAI),开启 JSON Mode 或 Structured Output 会更稳。

团队内部可以用脚本校验输出是否符合预期 JSON Schema。

坑 7:换个项目,技能就失灵了

典型现象:

在项目 A 中完美运行的技能(比如“根据 Model 生成 SQL 测试语句”),复制到项目 B 的 .cursor/skills/ 下,表现完全不同——报错、乱输出、甚至拒绝执行。

原因:

技能描述中隐含了项目 A 的特有假设:绝对路径、特定文件名、目录结构、依赖库。

项目 B 没有这些,AI 执行时就抓瞎。

另外,项目 B 的其他全局技能也可能干扰意图识别。

解决:

  • 技能描述要尽量抽象,基于相对路径和即时发现。
  • 错误示例:"读取 api/user.py 文件"
  • 正确示例:"分析当前编辑器中打开的 Python 文件中的接口定义"
  • 增加前置环境检查:要求 AI 先确认必要条件,不满足则给出友好提示。
  • 示例:"如果项目根目录下没有 conftest.py,请提示用户先初始化 pytest 基础配置。"
  • 跨项目迁移后,先用 列出你当前拥有的skills 确认技能已加载,然后用一个最小测试验证(比如 @技能名 对当前文件做基础检查)。

坑 8:团队协作时,每个人的技能版本不一样

典型现象:

你优化了技能(增加了异常场景覆盖),推送到 Git。

队友拉取代码后,生成用例的质量还是老样子。

或者多人开发同一项目,各人本地 .cursor/skills/ 内容不同步,互相看不到对方的改进。

原因:

  • cursor/skills/ 可能被 .gitignore 忽略了,没有纳入版本管理。
  • Cursor 不会自动检测远程更新,队友必须手动拉取并重载。
  • 队友私下又改了自己本地的版本,造成分叉。

解决:

1、将 .cursor/skills/ 纳入 Git 版本管理,并在 README 中明确:技能修改必须提交并通知团队。

2、在技能描述中添加版本号和日期,便于查询。

---name: 接口测试生成器version: 2.1.0last_updated: 2026-05-08---

团队成员可以问 AI“当前技能版本是多少”来核对。

3、建立团队更新 SOP:

  • 修改者提交后,在群里发“技能 xxx 已更新至 v2.1”。
  • 其他人执行 git pull,然后在 Cursor 中 Reload Skills,必要时重启编辑器
  • 用 列出你当前拥有的skills 确认版本号已更新。

别忘了 Skills 最实用的特性:边用边优化

Skills 不是一锤子买卖。你可以在对话中直接迭代:

通过以上经验,优化下 `SKILL.md` 这个技能描述,要求在测试用例中覆盖空值和超长字符串的异常校验。

AI 会输出优化后的内容,你复制替换原文件,然后 Reload Skills 或重启编辑器(避免缓存)。

几轮下来,技能就能完美贴合你的工作流。

Skills 通用框架

如果你看到比较喜欢的技能,可以提取它的技能框架,套用到其他的技能去

参考skill-creator 技能结构内容,提取技能结构与标题级骨架。要求中文输出

打开网易新闻 查看精彩图片

☑️想了解更多涨薪技能提升方法

✔️可以到公主号【Atstudy技术社区】,即可加入领取 ⬇️⬇️⬇️

转行、入门、提升、需要的各种干货资料

内含AI测试、 车载测试、AI大模型开发、BI数据分析、银行测试、游戏测试、AIGC