rules管底线约束,强制执行不可覆盖;skill管专业流程,按需加载复用。rules在启动时全量加载并全程生效,规定“能做什么、不能做什么、必须怎么做”;skill则封装完整工作流,如cypress测试生成,需手动创建或导入,仅在触发时加载。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

想让TRAE智能体稳定输出符合项目规范的代码,又不希望每次写提示词都重复说明“用TypeScript”“接口返回Promise”“测试覆盖率≥85%”,就得搞清Skill和Rules到底该谁管什么——它们不是可互换的配置项,而是分工明确的两类机制。
Rules是AI必须守的底线
Rules文件(如.trae/rules/project.md或全局.trae/rules/global.md)在TRAE启动时自动全量加载,全程占用上下文窗口。它只回答一个问题:【什么能做、什么不能做、必须怎么做】。
比如写一条Rule:“所有HTTP请求必须使用Axios,禁用fetch”,TRAE在任何对话中生成代码时,只要涉及网络请求,就会强制过滤掉fetch调用,哪怕你当前Prompt里明确写了“用fetch发个GET”,也会被Rules拦截并修正。
这一步操作起来很简单,直接把规则文本写进.md文件保存即可,但注意:【Rules一旦生效,无法被单次Prompt覆盖】,这是它作为“宪法”的刚性体现。
Skill是AI按需调用的专业流程
Skill封装的是完整可复用的工作流,比如“生成Cypress端到端测试用例”这个动作,就不是靠一句Rule能完成的——它需要:解析页面结构→识别关键交互元素→生成POM类→编写it块→注入fixture数据→插入截图断言。这一整套步骤,必须打包成独立技能模块才能执行。
方法一:手动创建Skill文件夹
在项目根目录新建.trae/skills/cypress-test-gen文件夹 → 放入SKILL.md(定义触发条件与输出格式)→ 放入script.ts(实际执行逻辑)→ 放入resources/(配套JSON Schema或模板文件)。
方法二:导入现成Skill包
下载别人写好的Skill压缩包 → 解压到.trae/skills/下对应子目录 → 重启TRAE,该Skill即出现在可用能力列表中,无需修改任何代码。
Skills采用按需加载机制,只有当用户输入触发词(如“帮我写Cypress测试”)且Rules未禁止该行为时,TRAE才会将对应Skill加载进当前上下文,避免Token浪费。
两者协同运行的真实顺序
第一步:用户输入“给登录页写Cypress测试”
第二步:Rules引擎先扫描——确认未违反“禁用硬编码URL”“必须mock API”等约束
第三步:Memory加载最近三次登录页DOM结构快照供Skill参考
第四步:MCP协议调用Playwright服务获取实时渲染树
第五步:Skill模块根据DOM结构+快照+MCP返回数据,生成完整测试文件
整个过程里,Rules像交通信号灯,永远亮着;Skill像专用车道,只在调度指令发出后才启用。










