技能是 MCP 服务器的补充,它教会 ChatGPT 和 Codex 如何在可重复执行的工作流中使用服务器的工具。服务器负责实时数据、身份验证、授权和受控操作;技能则提供工具调用顺序、决策点、输出要求、示例、模板及其他可复用的指导。
一个插件可以包含一项技能或一组相关技能。每项技能都应 围绕您的 使用场景清单中一个明确的用户目标展开。如果工作流只需要打包的指令和资源, 技能也可以在没有 MCP 服务器的情况下运行。
创建技能
最快的入门方式是使用内置的技能创建器。请描述用户目标,以及支持实现该目标的 MCP 工具:
@skill-creator Create a skill named tabletop-dice that understands dice
notation such as 3d6, calls roll_dice once for each die, and reports every
roll and the total.
在 Codex 中,使用 $skill-creator 调用同一个创建器。
您也可以手动创建文件。每项技能都有自己的目录,
并且必须包含一个 SKILL.md 文件:
-
skills
-
tabletop-dice
- SKILL.md 必需的指令和元数据
- references 可选的文档
- scripts 可选的可执行代码
- assets 可选的模板和资源
-
-
编写 SKILL.md
在文件开头填写名称和描述,然后编写指令:
---
name: tabletop-dice
description: Roll one or more dice for tabletop games and report each result and the total.
---
Use this skill when the user asks to roll dice.
1. Parse requests written as `NdS` as N dice with S sides. For example, `3d6`
means three six-sided dice.
2. Call `roll_dice` once for each requested die and pass S as `sides`.
3. Report each tool result in order.
4. When the user requests multiple dice, add the results and report the total.
Do not invent, replace, or reroll a result unless the user asks you to.
描述决定模型何时考虑使用该技能。请说明工作流及其触发条件,并在正文中写明详细的流程、格式和安全指令。
界定工作流的范围
让每项技能对应一个或多个使用场景。指令应明确以下内容:
- 工作流需要哪些输入。
- 模型应遵循哪些步骤。
- 用户应收到什么输出。
- 模型不得推断哪些事实。
- 工作流何时应提问、停止或拒绝请求。
- 模型应查阅哪些辅助文件。
优先创建一项目标明确的技能,避免堆积大量关联松散的指令。如果工作流的触发条件、输入或成功标准不同,请将其拆分。
审查指令遵循情况
为 GPT-6 Astra 编写或导入技能时,请审查指令遵循指南。 检查技能及辅助文件中是否存在含糊或相互冲突的指令,并 明确说明用户明确提出的指令优先于技能指南。
添加辅助资源
保持 SKILL.md 简洁,将详细资料放在旁边的文件或目录中:
- 使用
references/存放政策、模式、示例和背景资料。 - 使用
assets/存放工作流需要复制或转换的模板或文件。 - 当工作流需要确定性计算或文件处理时,
使用
scripts/。
在 SKILL.md 中引用辅助文件,并说明何时加载或运行这些文件。
如果指令和现有工具已经能够可靠地完成任务,
就不要添加脚本。
将技能与 MCP 工具关联
技能可以指导模型使用插件的 MCP 服务器提供的工具。用技能提供工作流指令,用服务器处理实时数据、授权和受控操作。
如果技能需要 MCP 服务器,请在
agents/openai.yaml 中声明该依赖项:
dependencies:
tools:
- type: "mcp"
value: "dice-roller"
description: "Roll an N-sided die"
transport: "streamable_http"
url: "https://tinymcp.dev/api/moldy-aloof-zettabyte/mcp"
依赖项让所需工具可用,但不能替代清晰的工作流指令。请告诉模型应使用哪些工具、按什么顺序使用,以及如何处理缺失或含糊的结果。
从 MCP 导入技能
您可以在提交时上传打包好的技能,也可以从插件的 MCP 服务器导入。选择 MCP 方式,可将技能指令和辅助文件与服务器一同部署。
当您在插件提交门户中选择 扫描工具 时,OpenAI 会从 MCP 导入技能。 导入的文件会成为草稿中的快照; ChatGPT 和 Codex 不会在运行时从您的 MCP 服务器获取这些文件。 修改技能后,请先部署服务器并重新扫描, 然后再提交新的插件版本。
有关能力声明、发现方法、资源清单和 导入限制,请参阅 从 MCP 服务器导入技能。
测试技能
使用场景清单中具有代表性的请求进行测试:
- 应触发技能的直接请求。
- 表达相同目标的间接请求。
- 应引发追问的不完整输入。
- 不应触发技能的请求。
- 技能必须避免编造信息或执行不受支持操作的边缘情况。
同时审查触发情况和输出质量。如果技能在不恰当的时机触发,请改进描述。如果技能选择了正确的工作流,但生成的结果不一致,请改进指令。
打包技能
在插件清单中指定技能目录:
{
"name": "dice-roller",
"version": "1.0.0",
"description": "Roll dice for tabletop games",
"skills": "./skills/",
"apps": "./.app.json"
}
有关完整清单、 MCP 服务器映射、本地测试和分发流程,请参阅打包您的插件。