Post

Codex 初学者笔记:Skill 到底是什么?它和 Prompt 有什么区别?

用初学者视角讲清楚 Skill 和 Prompt 的区别——Prompt 解决一次问题,Skill 固化一套流程。

Codex 初学者笔记:Skill 到底是什么?它和 Prompt 有什么区别?

前言

我一开始以为 Skill 只是一个更长的 Prompt,但后来发现它更像一套可复用的工作流说明书。

这个认知转变花了我一些时间。如果你也是 Codex / Claude Code 的初学者,这篇文章希望帮你少走一些弯路。

文章会回答三个问题:

  1. Skill 是什么?
  2. Skill 和 Prompt 有什么区别?
  3. 初学者应该如何理解和使用 Skill?

一、直觉解释:Prompt 像临时指令,Skill 像 SOP

在正式定义之前,先建立一个直觉:

  • Prompt 像是你临时告诉助手的一句话:”帮我把这段代码检查一下。”
  • Skill 像是你提前写好的一份标准操作手册(SOP):检查什么、按什么顺序、输出什么格式、有哪些注意事项。

当 Agent 遇到类似任务时,它不需要你每次重复说明,而是直接按照这份 SOP 来执行。

类比的失真点:这个类比不完全准确,因为 Skill 不只是文字说明,它还可以包含资源文件、模板、脚本等辅助材料。SOP 通常只是文字流程,而 Skill 是一个更完整的”工具包”。


二、Prompt 是什么

Prompt 就是你每次给 AI 的任务输入——一次性的、临时的指令。

它的重点是 “这一次怎么做”

几个典型例子:

1
帮我解释一下什么是 overfitting。
1
帮我把这段话改得更自然。
1
帮我检查这个函数有没有明显 bug。

这些都是一次性的任务:你说完,AI 做完,任务结束。下次遇到类似问题,你需要重新描述一遍。

Prompt 非常灵活,但它的缺点也很明显:不可复用、不稳定。同一个任务,你今天写的 Prompt 和明天写的可能不一样,输出质量也可能不一样。


三、Skill 是什么

Skill 是一个可复用的结构化 workflow

它通常以一个 SKILL.md 文件为核心,定义了任务的名称(name)、触发条件(description)、执行步骤(instructions)等信息。除了文字说明,Skill 还可以包含参考资料、模板文件、辅助脚本等。

一个典型的 Skill 目录结构:

1
2
3
4
5
my-skill/
  SKILL.md          # 核心说明文件
  scripts/          # 辅助脚本
  references/       # 参考资料
  assets/           # 模板或其他资源

Skill 的重点不是”比 Prompt 更长”,而是 “可复用、结构化、稳定执行”

你可以把它理解为:把你反复使用的 Prompt 升级成了一套有结构、有规范、可以被 Agent 自动调用的工作流。


四、Skill 和 Prompt 的区别

对比项PromptSkill
作用范围当前任务可复用任务
形式一段临时指令一个结构化工作流
稳定性每次可能不同更稳定、更一致
内容主要是文字指令 + 模板 + 参考资料 + 可选脚本
适合场景偶发任务重复流程

一句话总结:

Prompt 解决的是”这一次怎么做”,Skill 解决的是”以后遇到同类任务都怎么做”。


五、Skill 的工作原理

一个常见的疑问是:Agent 怎么知道该用哪个 Skill?

可以这样理解(这里是一个简化模型,帮助建立直觉):

  1. Agent 不会一开始就把所有 Skill 的完整内容全部读进去。
  2. 它通常先看到每个 Skill 的 namedescription
  3. 当用户提出任务后,Agent 判断任务和哪个 Skill 的 description 最匹配。
  4. 如果匹配上了,它才会进一步读取完整的 SKILL.md,然后按其中的 workflow 执行。

所以,description 非常重要——它决定了 Agent 能不能在对的时候找到对的 Skill。

flowchart TD
    A[用户提出任务] --> B[Agent 查看可用 Skills 的 name 和 description]
    B --> C{是否有匹配的 Skill?}
    C -- 否 --> D[直接根据当前 Prompt 执行]
    C -- 是 --> E[读取对应 SKILL.md]
    E --> F[按 Skill 中的 workflow 执行任务]
    F --> G[输出结果]

注意:真实系统的匹配机制不一定只是简单的关键词匹配,可能涉及语义理解等更复杂的逻辑。上面的流程图是为了帮助理解而做的简化。


六、一个最小例子

假设你配置了 3 个 Skills:

1
2
3
blog-writer          → description: "帮助撰写博客文章,生成标题、大纲和正文"
code-review          → description: "对代码进行审查,检查 bug、风格和安全问题"
experiment-report    → description: "总结机器学习实验结果,包含 metrics、figures、风险分析和下一步计划"

现在你输入一个任务:

1
请帮我总结一次机器学习实验结果,包含 metrics、figures、风险和下一步。

Agent 会怎么选?

从直觉上看,experiment-report 的 description 和任务高度相关——”实验结果”、”metrics”、”figures”、”风险”、”下一步”这些关键概念都对得上。所以 Agent 更可能选择 experiment-report 这个 Skill,然后按照它定义的 workflow 来组织输出。

再次强调:真实系统不只是关键词匹配,这里只是为了帮助理解。Agent 的选择过程可能涉及对任务语义的更深层理解。


七、常见误解

误解 1:Skill 就是一个更长的 Prompt

不对。长度不是关键区别。Skill 是一个可复用的 workflow,可能包含说明、资源、模板、脚本。一个 Skill 哪怕只有 10 行,只要它结构化且可复用,就比一个 500 字的临时 Prompt 更有价值。

误解 2:只要写了 Skill,Agent 就一定会自动用对

不一定。如果 description 写得不好——太模糊、太宽泛、或者和任务不匹配——Agent 可能不会调用它,甚至可能误调用另一个 Skill。写好 description 是让 Skill 生效的关键

误解 3:Skill 会让模型永久学会新能力

不准确。Skill 更像是当前任务可用的说明书和工具包,而不是对模型的重新训练。模型本身的能力没有因为你写了一个 Skill 而改变——它只是在执行任务时多了一份可以参考的 workflow。


八、初学者应该如何使用 Skill

适合做成 Skill 的任务

  • 经常重复的任务(比如每周写实验报告)
  • 有固定流程的任务(比如代码审查的检查清单)
  • 有安全规则的任务(比如修改代码前必须先备份)
  • 有固定输出格式的任务(比如统一的文档模板)
  • 需要多个步骤才能完成的任务(比如”先读代码 → 再分析 → 再输出报告”)

不一定需要 Skill 的任务

  • 一次性问题(”帮我解释一下这个概念”)
  • 简单文本修改(”帮我把这句话改通顺”)
  • 临时聊天或头脑风暴
  • 不会重复出现的任务

判断清单

1
2
3
4
5
如果这个任务以后还会重复出现      → 考虑 Skill
如果这个任务有固定流程            → 考虑 Skill
如果这个任务有安全限制            → 考虑 Skill
如果只是问一个简单概念            → Prompt 就够了
如果只是临时改一句话              → Prompt 就够了

九、一个适合初学者的 SKILL.md 模板

如果你想开始写自己的第一个 Skill,可以参考这个简化模板:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
---
name: example-skill
description: Use when the user asks to [describe the trigger scenario].
---

# Goal

这个 Skill 用来帮助 Agent 完成 [具体任务描述]。

# When to use

- 当用户要求 [场景 A] 时
- 当用户要求 [场景 B] 时

# Workflow

1. 先做什么
2. 再做什么
3. 最后做什么

# Constraints

- 不要做什么
- 必须检查什么
- 修改代码前必须确认什么

# Output format

请按以下格式输出:

1. Summary
2. Files inspected
3. Findings
4. Risks
5. Next steps

各部分的作用:

  • name:Skill 的唯一标识,方便管理和调用。
  • description:最重要的字段,决定 Agent 能否正确匹配到这个 Skill。写清楚”什么时候用”。
  • Goal:简述这个 Skill 要完成什么。
  • When to use:列出具体的触发场景,帮助你自己和 Agent 理解适用范围。
  • Workflow:核心步骤,按顺序写清楚。
  • Constraints:安全边界和注意事项——什么不能做、什么必须检查。
  • Output format:统一输出格式,让结果更稳定、更可比较。

总结

回到开头的三个问题:

  1. Skill 是什么? 一个可复用的结构化 workflow,以 SKILL.md 为核心,可以包含说明、模板、脚本等。
  2. 和 Prompt 有什么区别? Prompt 是一次性指令,Skill 是可复用流程。
  3. 初学者怎么用? 先用 Prompt 把任务跑通,发现重复出现的流程后,再沉淀成 Skill。

Prompt 解决的是这一次怎么做,Skill 解决的是以后遇到同类任务都怎么做。

对初学者来说,真正重要的不是把 Prompt 写得越来越长,而是把反复出现的工作流沉淀成 Skill。

这也是我自己的学习体会:与其每次花时间写一个完美的 Prompt,不如花一次时间写一个好用的 Skill,之后每次都能省下重复的沟通成本。

This post is licensed under CC BY 4.0 by the author.