技能怎么写
一个技能就是一个文件夹。唯一必需的文件是 SKILL.md:开头一小段告诉 AI 这个技能用来做什么,后面用平实的话写做法。脚本和参考文件都是可选的。
文件夹
text
weekly-summary/
├── SKILL.md 必需:开头 + 做法
├── scripts/ 可选:技能要运行的代码
│ └── run.mjs
└── references/ 可选:AI 需要时再读的材料
└── format.md文件夹名就是技能名。用小写字母、数字和连字符,比如 weekly-summary、check-invoices。
SKILL.md
markdown
---
name: weekly-summary
description: 把最近 7 天的会议记录总结成决定、未解决问题和带负责人的行动项。
在要周总结、会议回顾、或问这周定了什么时使用。
---
# 每周总结
## 输入与结果
- 输入:工作区里的会议记录(.md、.docx 或 .pdf),文件名或第一行带日期。
- 结果:工作区里的 weekly-summary-YYYY-MM-DD.md。
## 做法
1. 列出最近 7 天的记录。一份都没有就说明并停止。
2. 从每份记录里取出决定、未解决问题和行动项。
3. 分三节写总结。行动项用表格:负责人(只写名)· 行动 · 截止日期,按负责人分组。
4. 保存文件。不要改动会议记录。
## 代表性检查
总结里的每个行动项都能在某份记录里找到,最近 7 天的每份记录都列在「来源」下。开头(frontmatter)
| 字段 | 必需 | 作用 |
|---|---|---|
name | 是 | 技能名,和文件夹名相同。可以用 /名称 直接运行 |
description | 是 | 技能做什么,以及什么时候用。AI 只读这一段来判断要求对不对得上,所以要写进大家实际会说的话 |
entry | 否 | 主脚本,比如 scripts/run.mjs |
resources | 否 | 技能要用到的文件夹里其他文件的列表 |
disable-model-invocation | 否 | 设为 true 时 AI 不会自己选用这个技能,只有你输入 /名称 时才运行 |
正文
像给新同事交代工作那样写做法。分三部分效果最好,这也是 Cowork 的技能创建工具一开始给你的结构:
- 输入与结果:技能需要什么,「做完」是什么样子
- 做法:步骤、限制(「不要改动会议记录」)和预期产出
- 代表性检查:一个示例输入和你预期的结果,让 AI 能判断做对没有
AI 只在用到技能时才读完整正文,所以正文可以按工作需要写长。
脚本
工作里有一部分必须每次一模一样时(计算、文件转换、调用某个系统),就写成脚本。AI 运行它并使用它输出的内容。
- 脚本用 JavaScript 或 TypeScript(
.mjs、.js、.ts)。Cowork 用自带的运行环境执行,不需要另外安装。 - 在你电脑上运行脚本前一定会先问你
- 脚本以你平常的权限运行。只用你自己或你信任的人写的脚本。
不经过 AI 直接运行的命令
技能也可以是一个普通命令:输入 /名称 加几个词,就直接运行它的脚本,不经过模型,并显示脚本输出的内容。开头这样写:
yaml
---
name: count-files
description: 按文件类型统计工作区里的文件数量。
entry: scripts/run.mjs
x-shortcut:
run: scripts/run.mjs
---/count-files 后面的词会作为命令行参数传给脚本。跟 AI 说「做一个命令技能」,它会帮你设好。
文件夹放在哪里
| 位置 | 谁能用 |
|---|---|
工作区里的 .agents/skills/ | 打开这个工作区的所有人 |
这台电脑的技能(Cowork 的 skills/ 文件夹) | 只有你,所有工作区都能用 |
主目录下的 ~/.agents/skills | 只有你;其他使用这个文件夹的工具也会读 |
平台和机构发布的技能是只读的。要改,先复制一份到你自己的技能里。见 技能是什么。
检查技能
说「检查 weekly-summary 技能」。Cowork 会检查开头字段、声明的文件是否存在、有没有留下模板占位符。格式检查通过不代表技能好用:要用真实的要求测一遍。