MCP 是工具层,Skill 是应用层。学会封装让 Agent 更懂你的业务
MCP Skill 不只是暴露几个工具 —— 好的 SKILL.md 还会告诉 Agent "什么时候该用这个工具"、"怎么组合多个工具完成任务"、"有什么坑要避开"。本文教你写出让 Agent 真正聪明的 SKILL.md。
MCP Server 是**工具层** —— 暴露可调用的函数,比如 send_message / query_contacts。 Skill 是**应用层** —— 告诉 Agent 这些工具怎么组合着用,解决什么业务问题。 打个比方:MCP 是"螺丝刀、扳手、锤子"这些工具,Skill 是"修一台空调"的完整操作手册。
一个好的 SKILL.md 包含: 1. Front Matter — 元数据(名称、描述、触发关键词) 2. 适用场景 — 什么时候该用、什么时候不该用 3. 前置条件 — 需要哪些 MCP Server 已注册 4. 操作指南 — 分步的工作流程 5. 常见坑 — 容易犯错的地方 6. 示例对话 — 好的输入输出样例
--- name: 钉钉请假助手 description: 帮员工一键发起钉钉请假审批 triggers: [请假, 休假, 年假, 病假] --- ## 适用场景 员工说"我明天想请一天假"、"帮我申请年假"时触发。 ## 前置条件 必须已注册钉钉 MCP Server(包含 attendance.leave 工具)。 ## 操作流程 1. 确认请假类型(年假/病假/事假)—— 如果用户没说清楚就问 2. 确认起止日期 3. 确认时长(自动计算工作日) 4. 调用 attendance.leave 发起审批 5. 返回审批链接 ## 常见坑 - 注意区分工作日和周末(自动跳过) - 如果是病假,可能需要上传证明(问用户) - 审批发起人是当前登录用户,不需要额外指定 ## 示例 User: "我下周三请半天假" AI: 好的,我帮你申请下周三(2024-03-20)下午的年假。确认一下,是年假对吗?
把 SKILL.md 放到项目根目录的 .trae/skills/你的-skill-名/ 目录下: .my-project/ ├── .trae/ │ └── skills/ │ └── dingtalk-leave/ │ └── SKILL.md └── src/ Trae 会自动扫描这个目录,Agent 会根据 triggers 关键词在合适的时机加载 Skill。
Skill 不是一次性写完就完事的。建议: 1. 先写最小可用版本,上线后观察 Agent 的表现 2. 记录 Agent 犯错的 case,补充到"常见坑"里 3. 好的经验变成 Skill 的固定流程 好的 Skill 是**用出来的**,不是**写出来的**。