本页判断标准

删掉这条命令,有人会因为缺它而漏掉一次提交前的核对吗?

答「不会」,它就在占位置,因为没人会主动输入它。没人点名的步骤,把它写成技能更合适——两者只差 disable-model-invocation 这一个字段。

一条命令的字段

命令的门槛是「步骤已经固定、能一字不差照着做」。步骤还没定下来,就先别建文件,更别让助手每次现场编一套。命令文件本体就是一段步骤清单,前置元数据只放三个字段。

name 字符集
小写字母 / 数字 / 连字符
而且必须与目录名相同。写成大写或加下划线,命令就调不出来。
是否自动触发
否
靠 disable-model-invocation: true 保证。漏了这个字段,助手会自己套用。
可以这么做 把已经固定的检查清单写成 .cursor/skills/<名称>/SKILL.md,加 disable-model-invocation: true,正文用编号列步骤。
不要这么做 把还没定下来的流程写成命令;在旧 .cursor/commands/ 里新写命令;name 用大写或与目录名不一致;把命令和技能混成一份。

什么时候不用命令:希望助手在相关任务里自己想起这件事、不需要人点名时,它该是技能而不是命令——去掉 disable-model-invocation: true,写法见 技能。

命令在三处

命令最容易混的地方在于「新写法其实是一份加了开关的技能」。三家都往这个方向收,但旧目录的兼容程度不一样。从别的工具搬过来时逐行核这张表。

项Claude CodeCursorTraeCode
新写法写成技能 .claude/skills/<名称>/SKILL.md 并加 disable-model-invocation: true写成技能 .cursor/skills/<名称>/SKILL.md 并加 disable-model-invocation: true.trae/commands/<名称>.md,文件名就是调用名
旧写法.claude/commands/*.md 仍作为同名命令加载;两边同名时技能优先.cursor/commands/*.md 仍能加载——
个人位置————~/.trae-cn/commands
目录深度————项目命令最多嵌套 3 层目录
调用方式输入 /输入 /输入 /,从 Commands 里选择
名称约束——name 与目录名相同,只用小写字母、数字和连字符文件名即名称

区别集中在两点:Cursor 和 Claude Code 的命令都是「加了开关的技能」,TraeCode 的命令还是独立的 Markdown 文件、文件名即调用名。从 Cursor 搬到 TraeCode 时,目录和名称来源都要改。

示例:两条可照做的命令

下面两条是已经能照着做的清单,都在对话里输入斜杠调用。/check-scope 先看 README 里写明做什么、不做什么;/review-diff 在提交前核对改动与规约场景。

.cursor/skills/check-scope/SKILL.md

name 与目录名 check-scope 相同;disable-model-invocation: true 让它只在人输入 /check-scope 时执行。

---
name: check-scope
description: 判断这次改动是否越出当前阶段已经写明的范围。用户输入 /check-scope 时使用。
disable-model-invocation: true
---

只做 README 里写明的角色和能力,数据按登录用户的所属范围隔离。
当前阶段有哪些能力,以 README 为准。产品里给最终用户使用的功能,不是仓库里的技能文件。
不做:家长端、多校区运营、学科交易市场。

先列出这次会改的目录。
再逐条说明:哪条在上面的范围内,哪条该停。
不要为了「顺便」加上范围内没有的角色或存储。

.cursor/skills/review-diff/SKILL.md

第二条命令,结构相同,只是步骤不同。步骤必须是已固定的,否则不要建这份文件。

---
name: review-diff
description: 提交前核对这次改动与规约场景的对应关系。用户输入 /review-diff 时使用。
disable-model-invocation: true
---

列出这次改动的文件与行数。
对每个文件,指出它对应规约里的哪个场景。
指出没有对应场景的改动,单独列成一段。
指出规约里有场景、但这次没有改动覆盖的部分。

两份文件都在 .cursor/skills/ 下,各占一个自己的目录。仓库里已经有 .cursor/commands/*.md 的,保留即可,不必改写;但别把 name、description、disable-model-invocation 这三个字段抄进旧目录的文件——旧目录不按它们处理,助手仍会自己套用。

命令不响应的五种现象

命令类问题多数表现为「调不出来」或「不该触发时触发了」。按现象对一行,照最右一列改。

现象原因修法
在 .cursor/commands/ 下新建命令并加了 disable-model-invocation,助手仍会在相关任务里自己套用disable-model-invocation 是技能前置元数据的字段,旧的命令目录不按它处理把命令改写成 .cursor/skills/<名称>/SKILL.md,再在前置元数据里加该字段
目录叫 CheckScope,name 写 check-scope,输入 /check-scope 没反应name 必须与目录名相同,且只能用小写字母、数字和连字符;出现大写或其他字符就失效把目录名和 name 统一成小写连字符形式,例如 check-scope
助手在没人输入斜杠时自己执行了这条命令的步骤SKILL.md 没有 disable-model-invocation: true在 SKILL.md 前置元数据里加 disable-model-invocation: true
把还没定下来的流程写成命令,每次跑出来的结果都不一样命令的前提是步骤已经固定、能一字不差照着做步骤没定就先不建文件,等流程稳定再写
在 TraeCode 里照抄 Cursor 的技能目录写命令,命令列表里找不到TraeCode 的命令是 .trae/commands/<名称>.md,文件名就是调用名,不是技能目录按对应工具的目录放置(见上面的三工具对照表)
对应知识点 这一页只是 命令 在 Cursor 里的落地写法。通用规则见 命令(第一层 · 能力)。上游是 规则,下游是 技能(命令与技能的区别就在那个开关字段)。