跳到正文
全部 31 篇FREN中文
目录
第 5 部分 · 第 3 篇,共 5 篇 难度:进阶 阅读时间:12 分钟

技能:把您的工作流自动化

当您发现自己一遍遍对智能体重复同样的指令时,把它们变成可复用的技能。这一步让您从「助手」迈进「工作坊」。

本文目录
  1. 01为什么:重复就是一个信号
  2. 02它具体怎么运作
  3. 03一个例子:/review 命令
  4. 04操作流程
  5. 05全局视角:您那个自我组合的工作坊
  6. 06常见问题

要点速览

技能是一包可复用的指令,智能体可以通过 slash 命令触发它,也会在任务合适时自动加载:它是一个包含 SKILL.md 文件的文件夹(一个名字、一段描述,然后是指令)。如今它是 Claude Code 和 Codex 共同的主要机制,两者都用它取代了旧的自定义命令;它也是一个开放格式 Agent Skills,OpenCode、Cursor 和 Gemini CLI 同样能读取。只要同一条指令您敲了两遍,就把它做成技能;会部署或删除东西的技能,只允许手动触发。

请先完成: 记忆文件(CLAUDE.md 及其它)

您很快就会认出这个症状。这周第三次了,您又打了同样的一长串请求:「重读我的 diff,找出 bug 和密钥泄露,按文件给我列出问题,但没有我同意之前别改任何东西。」每次都一字不差。这正是该把这个请求一劳永逸地捕获下来、并用一条命令唤回它的时刻。

这就是技能:一包可复用的指令,智能体按需触发它,通常通过一个 slash 命令。记忆文件是智能体总会读取的被动上下文,而技能是您需要时才调用的主动能力。想象一下 /check-diff(重读我的 diff)、/ship(跑测试、升版本号、提交、开 PR)、/deploy。一个名字,整个工作流就跑起来。

为什么:重复就是一个信号

技能的触发点永远是同一个:您发现自己在重新敲一条多步骤指令。「跑测试,如果是绿的,就用规范化的提交信息提交,然后推送……」如果您写过两遍,您就会写二十遍。

把它捕获一次,您一下子得到三样东西:

  • 一条命令,而不是一段话。 您打 /check-diff,就这样。
  • 一致性。 工作流每次跑得一模一样,您不会再因为赶时间就漏掉「检查密钥」那一步。
  • 可共享。 技能就放在仓库里:您的队友(和他们的智能体)原样拿来就用。

它具体怎么运作

如今原理到哪都一样:技能是一个文件夹,里面有一个 SKILL.md 文件。开头是一小段 YAML 头,给出名字和描述;下面是您用 markdown 写的指令。文件夹里还可以放脚本、模板或文档,智能体需要时会去查阅。

描述比看上去更重要:启动时,智能体只读取所有技能的名字和描述,然后才加载与当前任务匹配的那个技能的完整内容。所以您可以有很多技能,而不会塞满它的上下文。

在 Claude Code 里,技能已经成为主要机制。文件夹名就是命令名:deploy/SKILL.md 对应 /deploy。

.claude/skills/<名字>/SKILL.md    # 项目技能(通过仓库共享)
~/.claude/skills/<名字>/SKILL.md  # 全局技能(您所有的项目)

您可以自己用 /名字 触发它,也可以让 Claude 在您的请求符合其描述时自动加载。/skills 会列出可用的技能。

旧的自定义命令(.claude/commands/deploy.md)已经并入技能:它们仍然可用,也会生成 /deploy,但任何新的工作流,请直接写成技能。各字段的说明见技能文档。

一个例子:/review 命令

回到开头那个请求,您自己的审查。注意名字:Claude Code 已经自带一个 /review(/code-review 的别名,见审查、审计、加固)。所以给您自制的版本换个名字,比如 check-diff(Codex 也自带一个 /review),把它一次性写进 .claude/skills/check-diff/SKILL.md,Codex 和 OpenCode 则写进 .agents/skills/check-diff/SKILL.md:

---
name: check-diff
description: 审查当前 diff,列出问题但不做任何修改。当我要求在合并前做审查时使用。
---

重读当前 diff,对照基准分支。

查找:
- 明显的 bug 和回归,
- 密钥泄露(明文的 API key、密码、token),
- 未转义的 SQL 查询或其它注入,
- `console.log` 和其它遗忘的调试残留。

按 `文件:行号` 分组列出问题,从最严重到最
轻微。要具体:每一点都说清楚为什么这是个问题。

没有我同意之前别改任何东西。最后给一个结论:可以合并,还是不行。

从此,/check-diff(在 Codex 里是 $check-diff)每次都重新跑这个一模一样的协议。不用再敲一段话,不用再漏掉一步。

操作流程

已完成 0 步,共 4 步 勾选记录只保存在此浏览器中。

  1. 发现重复

    那个反射动作:一旦您心里想「咦,这个我已经打过了」,就停下来。这就是您的技能候选。别提前创建,等到这个需求出现第二次。

  2. 把指令写一次

    在恰当的位置创建技能文件夹和它的 SKILL.md(.claude/skills/deploy/SKILL.md → /deploy)。用心写描述:智能体靠它判断何时使用。像对智能体说话那样写下指令:清晰、有序、带护栏(「没有我同意之前别改任何东西」)。

  3. 用它的名字调用它

    在智能体里打 /check-diff(在 Codex 里是 $check-diff)。技能跑起来。您刚刚把一段话变成了一个词。

  4. 随时间打磨它

    随着使用,您会看到哪里缺了、哪里溢出了。加一条标准,收紧一条规定。技能像记忆一样成熟:在真实的摩擦中。

全局视角:您那个自我组合的工作坊

坐下来,看看您在这三篇里建起了什么:

  • 记忆(记忆文件),智能体永久知道的东西。
  • 技能,它按命令会做的东西。
  • 需求厘清(用 LLM 厘清),您一开始向它提出的东西的质量。

把这些首尾相接,就成了一个自我组合的个人工作坊。每个项目都充实您的全局记忆,给您留下一两个可复用的技能,打磨您的需求厘清模板。第十个项目,站在前九个的肩膀上启动。这正是全部意义所在:您不是在自动化一项任务,而是在为自己搭建一个让您每一次都更快一点的环境。

常见问题

技能和记忆文件有什么区别?

记忆文件是被动的上下文:智能体每次会话都会读它,它说明智能体始终知道什么。技能是一种主动能力,只有在您调用它或任务合适时才会被唤醒:它说明智能体在被要求时做什么。两者结合,就是您的工作坊。

技能太多会挤占智能体的上下文吗?

不会。启动时,智能体只读取每个技能的名字和描述,只有与任务匹配的那个技能才会加载完整内容。所以描述才这么重要:正是它告诉智能体何时使用这个技能。

技能放在哪里才能在所有项目里使用?

放在智能体的全局目录里,每个技能一个子文件夹,里面放它的 SKILL.md:Claude Code 用 ~/.claude/skills/,Codex 用 ~/.agents/skills/,OpenCode 用 ~/.config/opencode/skills/。反过来,放在项目仓库里的技能会和您的队友及他们的智能体共享。

怎样防止智能体自行运行会部署或删除东西的技能?

在 Claude Code 里,在 SKILL.md 的头部加一行 disable-model-invocation: true:这样只有您明确调用时才会触发。在 Codex 里,对应的设置写在 SKILL.md 旁边的 agents/openai.yaml 文件中,在 policy: 下写 allow_implicit_invocation: false。会执行命令的技能,破坏力和手动敲下的命令完全一样。

我的审阅技能能叫 /review 吗?

最好别这样:Claude Code 已经自带一个 /review,它是 /code-review 的别名,Codex 也有一个。给您自己的版本换个名字,比如 relecture。之后在 Claude Code 里用 /relecture 调用,在 Codex 里用 $relecture 调用。

本文涉及的术语: Skill(技能)智能体Commit(提交)MarkdownClaude CodeCodexOpenCode

发现错误?

命令失效了,价格变了?

这些工具每个月都在变。请告诉我这篇文章哪里不对,我会改正并更新日期。

只保留页面、您的留言和选填的联系方式,别无其他。

第 29 / 31 篇 · 第 5 部分 还没有读过任何一篇 打开文章目录