本页判断标准

不点名,只说一句「改一下检索」,助手会不会自己加载这个技能?

答「不会」,先改 description,写明什么任务里用。改完开一轮新对话,提一次相关任务再试。

位置、结构与触发依据

技能和规则的分工用一句话就能分清:规则全量加载,进来就一直占上下文;技能按需加载,只在被判断为相关时才进来。所以把「每次对话都要遵守」的写成规则,「某类任务才用得上」的写成技能。

项TraeCode 的写法写错的后果
项目位置.trae/skills/<名称>/SKILL.md放到别的目录,不会被发现
个人位置~/.trae-cn/skills只在自己电脑上,小组共用就丢了
必需字段前置元数据里的 name 与 description缺 description,助手无法判断何时加载
触发依据只靠 description 判断相关性写得笼统就等于不会被加载
正文写什么分步指令,以及复查用的输入与期望输出正文太长,每次加载都占更多上下文
长说明放哪同目录的其他文件,如 reference.md塞进正文,等于每次都全量加载
另一个目录.agents/skills/ 要另开「设置 → 技能与命令 → 导入设置」的开关;与 .trae/skills/ 重名时以后者为准改的可能是没生效的那一份
手动点名对话里直接说「用 trace-retrieval 处理这次改动」——

SKILL.md 的推荐结构是「描述 / 使用场景 / 指令 / 示例(可选)」。字段不用背:写一个技能,提一次相关任务看它有没有被加载,实测一次就知道了。

技能在三个工具里的差别

三家的技能文件都叫 SKILL.md,只有根目录不同。真正要留意的是「重名/兼容」这一行:只有 TraeCode 有 .agents/skills/ 这个第二个来源。

项Claude CodeCursorTraeCode
项目位置.claude/skills/<名称>/SKILL.md.cursor/skills/<名称>/SKILL.md.trae/skills/<名称>/SKILL.md
个人位置~/.claude/skills/——~/.trae-cn/skills
长说明放哪正文留步骤同目录 reference.md同目录其他文件
触发依据descriptiondescription,第三人称写「做什么、在什么任务里用」description
重名/兼容————规范里的 .agents/skills/ 要另开「设置 → 技能与命令 → 导入设置」的开关;与 .trae/skills/ 重名时用后者

示例:一个技能加一份参考文件

正文只留五步和复查方式,把「为什么这么定」和判定细节放到同目录的参考文件里。

.trae/skills/trace-retrieval/SKILL.md

在 description 里写清「什么任务里用」,助手才可能自动加载它。

---
name: trace-retrieval
description: 修改检索或基于检索结果的回答时使用。包括命中来源、无依据判定,以及只引用当前用户范围内的切片。
---

1. 检索条件中的 scope_id 来自当前会话,不读取请求中的 scope_id。
2. 若使用向量库,点的 id 与数据库切片 id 相同,payload 带上 scope_id。
3. 候选结果全部低于检索配置里的相似度阈值时,视为没有命中;没有命中就返回无依据,本轮不调用对话模型。
4. 命中之后,回答只使用这些切片中的句子,并带上出处(文档名 + 切片 id)。
5. 用两个所属范围各看一次:当前范围能读到,其他范围读不到。

判定细节和复查清单见同目录 reference.md。

.trae/skills/trace-retrieval/reference.md

把长说明放在这里,正文只给出文件名,它就不会被全量加载。

# 检索与回答的边界

## 为什么不用请求里的 scope_id

请求参数由客户端提供,可以被改写;会话里的 scope_id 由登录态决定。

## 命中与无依据怎么分

相似度阈值写在项目的检索配置里,不在这个文件里改。
没有命中时回答「无依据」,不出现材料中没有的句子。

## 复查清单

- 两个所属范围各看一次:当前范围读得到,其他范围读不到。
- 其他范围读不到的表现,与记录不存在无法从响应区分。
- payload 里带 scope_id,点的 id 与数据库切片 id 相同。
- 回答里的每个句子都能指回某个切片的出处。

技能不被加载或不被照做的四种现象

技能不生效和规则一样,不会报错。下面四条按发生频率排列,照着对号。

现象原因修法
技能写好了,改检索时从没被自动加载description 只写了「一个处理检索的技能」,没说在什么任务里用改成「修改检索或基于检索结果的回答时使用,包括命中来源与无依据判定」,并写清边界
技能改了一份,对话里用的还是旧的同名技能同时存在于 .trae/skills/ 与 .agents/skills/,重名时以 .trae/skills/ 为准只在 .trae/skills/ 放技能,删掉或停用另一份
把「家长端」这类产品功能写进了技能,助手总想在代码里实现它把面向最终用户的产品能力和给编程助手的步骤混在一起把产品能力写到需求和接口说明里;.trae/skills/ 里只放改代码时要遵守的步骤
技能正文写到三百行,每次加载都吃掉一大块上下文正文会被全量加载,长说明没有外置正文只留分步指令,把判定细节、示例、清单移到同目录的 reference.md
对应知识点 这一页是 技能 在 TraeCode 里的落地写法。上游是技能(第一层 · 能力)与规则,后者说明哪一类约束该写成规则;下游是子智能体。