什么是技能?
SKILL.md 文件,用来教会 Devin 可复用的流程——任何你希望 Devin 始终一致遵循的可重复工作流。无论是在打开 PR 之前测试你的应用、部署到某个环境、研究代码库,还是为新服务搭建脚手架——只要你能把它写成分步说明,就能把它变成一个技能。
它们遵循开放的 Agent Skills standard,因此同一个技能文件可以在多个 AI 编码工具之间通用。
请将技能文件放在代码仓库中的 .agents/skills/<skill-name>/SKILL.md 路径下。Devin 会自动在你所有已连接的代码仓库中发现这些文件。完整的文件格式参考请参见 Agent Skills specification。
为什么技能很重要
- 每次都应以相同方式完成 — 例如测试检查清单、部署步骤、评审流程
- 需要仓库级知识 — 例如要启动哪些服务、使用哪些端口、运行哪些命令
- 能从动态上下文中受益 — 例如在调用时引入 git diff、分支名称或环境信息
Devin 会自动推荐技能
- 学到内容的摘要 (例如“how to start the backend with Docker”)
- 建议的
SKILL.md文件内容 - 一个用于将该技能提交到代码仓库的 “Create PR” 按钮
示例
在打开 PR 之前进行测试
部署到某个环境
@skills:deploy staging 调用时,staging 会替换 $ARGUMENTS 和 $0,而 !`command` 块会插入实时的 git 信息。triggers: ["user"] 字段可确保 Devin 仅在你明确要求时才运行此技能——它不会自动启用。
探查代码库的某个部分
allowed-tools 字段会将 Devin 限制为只读操作——不能编辑,也不能执行 shell 命令。这对于只想进行分析而不产生副作用的探索任务非常有用。
技能发现
- 已建立索引的代码库 (indexed repos) — Devin 的后端会在与你的组织连接的所有代码库中为
SKILL.md文件建立索引。这些技能在会话开始时即可立即使用,此时还未克隆任何代码库。 - 已克隆的代码库 (cloned repos) — 当代码库被克隆到会话使用的机器上时,Devin 会在磁盘上扫描其中的
SKILL.md文件。通过磁盘扫描发现的技能会更新或覆盖来自同一代码库的任何匹配的索引技能,确保 Devin 始终使用当前正在处理分支上的最新版本。
支持的技能文件位置
SKILL.md 文件:
.agents/skills/<skill-name>/SKILL.md(推荐).github/skills/<skill-name>/SKILL.md.claude/skills/<skill-name>/SKILL.md.cursor/skills/<skill-name>/SKILL.md.codex/skills/<skill-name>/SKILL.md.cognition/skills/<skill-name>/SKILL.md.windsurf/skills/<skill-name>/SKILL.md
Devin 从技能文件中加载的内容
--- 块) 并提取:
| Field | Purpose |
|---|---|
name | 标识该技能。如果省略,则回退为父目录名称。 |
description | 在技能列表中显示的简短摘要,让 Devin (以及你) 知道该技能的作用。 |
allowed-tools | 限制技能激活时 Devin 可以使用哪些工具。 |
| Field | Purpose |
|---|---|
argument-hint | 与技能名称一起显示的提示文本,用于描述预期参数。 |
triggers | 控制谁可以调用该技能——默认为 ["user", "model"]。将其设置为 ["user"] 可阻止 Devin 自动激活它。 |
动态内容
$ARGUMENTS—— 替换为调用技能时传入的完整参数字符串 (例如通过@skills:deploy staging prod) 。你也可以按索引访问单个参数:第一个参数用$ARGUMENTS[0]或$0,第二个参数用$ARGUMENTS[1]或$1,依此类推。参数按空白字符拆分。!`command`—— 该命令会在代码仓库根目录中执行,并替换为其标准输出,从而让技能能够包含分支名、端口号等动态值。
Devin 如何使用技能
SKILL.md 文件,并将其正文作为系统级指令注入到当前上下文中。这意味着在接下来的任务中,Devin 会主动遵循该技能中的步骤——它不仅仅是一个参考,而是直接引导 Devin 的行为。
Devin 可以通过多种方式使用技能:
自动调用
test-before-pr 技能,Devin 会在打开 PR 之前先激活它。若要禁止对只希望显式触发的技能进行自动调用,请在 frontmatter 中设置 triggers: ["user"]。
在提示中提到某个技能
@skills:skill-name 来让 Devin 使用某个特定技能:
$ARGUMENTS、$ARGUMENTS[0]、$1 等的地方,都会被替换为对应的参数值。
一次只启用一个技能
搜索和列出
限制
- 全局 / 组织级技能 — 目前,技能只存在于各个代码仓库中。对于组织范围的技能,可以创建一个专门的「skills」仓库作为变通方案。我们正在探索对适用于所有仓库的组织级技能提供原生支持。
- 组合多个技能 — 当前一次只能激活一个技能。我们正在开发对工作流串联与组合的支持。
Skills 与 Playbooks 的区别
| Skills | Playbooks | |
|---|---|---|
| 存放位置 | 在你的代码仓库中,作为 SKILL.md 文件——与代码一起纳入版本控制 | 在 Devin web 应用中——通过 UI 管理 |
| 触发方式 | Devin 会自动发现并调用,或者你可以在任意 prompt 中通过 @skills:name 显式引用 | 在启动会话时手动附加到该会话 |
| 作用范围 | 作用于单个代码仓库——Devin 会根据与任务相关的仓库自动选用合适的 skills | 作用于整个组织——任何团队成员都可以在任意会话中附加任意 playbook |
| 自动建议 | Devin 在测试你的应用或学到新内容后,会建议创建新的 skills | 由团队成员手动创建 |
| 最适合用于 | 测试流程、本地开发环境配置、部署检查清单、与仓库紧密相关的工作流 | 可复用的 prompt 模板、跨仓库任务模式、入职/上手指南 |
了解更多
- Agent Skills specification ——
SKILL.md文件格式、frontmatter 字段和目录结构的开放标准 - Knowledge —— 用于提供上下文提示和事实信息 (而非分步操作指引)
- Playbooks —— 用于附加到会话的可复用提示模板
