文章目录
- [Agent Skill 书写规范完整详解](#Agent Skill 书写规范完整详解)
-
- 一、基础概念定义
- 二、整体文件/结构体顶层书写规范
-
- [1. 文件格式选择与命名规范](#1. 文件格式选择与命名规范)
- [2. 顶层固定字段(所有Skill必须包含)](#2. 顶层固定字段(所有Skill必须包含))
- [三、核心:parameters 入参书写规范(最关键)](#三、核心:parameters 入参书写规范(最关键))
-
- [3.1 parameters 顶层子字段强制规范](#3.1 parameters 顶层子字段强制规范)
- [3.2 单个参数 property 书写标准(每个参数统一结构)](#3.2 单个参数 property 书写标准(每个参数统一结构))
- [3.3 参数书写禁止项](#3.3 参数书写禁止项)
- [四、返回值 response 书写规范](#四、返回值 response 书写规范)
- [五、description 描述统一写作规范(决定Agent会不会正确调用)](#五、description 描述统一写作规范(决定Agent会不会正确调用))
-
- [5.1 技能顶层 description 写作模板](#5.1 技能顶层 description 写作模板)
- [5.2 参数description写作模板](#5.2 参数description写作模板)
- [5.3 描述通用禁忌](#5.3 描述通用禁忌)
- [六、examples 调用示例书写规范](#六、examples 调用示例书写规范)
- [七、YAML / JSON 格式语法书写规范](#七、YAML / JSON 格式语法书写规范)
-
- [7.1 YAML规范(推荐)](#7.1 YAML规范(推荐))
- [7.2 JSON规范](#7.2 JSON规范)
- [八、代码层 Skill 函数实现书写规范(Python示例)](#八、代码层 Skill 函数实现书写规范(Python示例))
- 九、分类、标签、权限扩展字段规范
- 十、完整标准YAML模板(可直接复用)
- 十一、常见书写错误汇总
- 十二、不同框架差异化补充规范
Agent Skill 书写规范完整详解
一、基础概念定义
Agent Skill(智能体技能)是大模型Agent可调用的工具/能力单元,包含函数描述、入参、出参、触发规则、调用逻辑、格式约束整套标准化定义,分为JSON/YAML结构化定义规范 、自然语言描述规范 、代码实现规范三大体系,行业主流遵循 OpenAI Function Calling、Anthropic Tool、阿里Agent、LangChain 通用标准。
二、整体文件/结构体顶层书写规范
1. 文件格式选择与命名规范
- 文件后缀
- 配置定义:
.yaml/.yml(可读性优先,生产首选)、.json(程序解析优先) - 代码实现:
.py/.ts/.go(对应编程语言) - 文档说明:
skill_readme.md
- 配置定义:
- 命名规则
- 技能ID/文件名:小写蛇形命名 snake_case ,禁止驼峰、空格、中文、特殊符号
示例:weather_query、database_insert_user - 技能分组目录:按业务分层
skills/tool/weather/、skills/internal/calculate/ - 禁止:
WeatherQuery、天气查询、weather-query(横杠部分平台不兼容)
- 技能ID/文件名:小写蛇形命名 snake_case ,禁止驼峰、空格、中文、特殊符号
2. 顶层固定字段(所有Skill必须包含)
| 字段 | 类型 | 书写规范要求 | 示例 |
|---|---|---|---|
name |
string | 技能唯一标识,snake_case,全局不可重复,长度2--64字符 | stock_price_query |
description |
string | 核心用途描述,只写功能,不写参数,清晰告知Agent什么时候调用本技能;控制50--300字 | 查询指定股票代码实时当日开盘、收盘、涨跌价格 |
version |
string | 语义化版本 x.y.z,更新技能必须升版 |
1.2.0 |
author |
string | 开发人/团队,可选 | agent_dev_team |
visibility |
enum | public/private;public允许Agent自主调用,private仅内部流程调用 |
public |
parameters |
object | 入参结构体,强制标准化JSON Schema,下文详细规范 | - |
response |
object | 返回结果结构定义,可选复杂技能必填 | - |
examples |
array | 调用示例,提升模型识别准确率,至少1组 | - |
limitation |
string | 调用限制、边界条件,必填 | 仅支持A股股票,不支持美股;单次最多查5支股票 |
三、核心:parameters 入参书写规范(最关键)
采用 JSON Schema 标准 ,是各大模型Agent统一兼容标准,内部包含 type、properties、required、additionalProperties 四部分。
3.1 parameters 顶层子字段强制规范
type:固定值object(所有技能入参统一是对象)properties:存放每个入参的详细定义required:字符串数组,列出必填参数key;无必填则为空数组[]additionalProperties:固定false,禁止Agent传入未定义参数,防止乱传参报错
3.2 单个参数 property 书写标准(每个参数统一结构)
每个参数key使用snake_case,内部固定字段:
type:基础数据类型,仅允许string/integer/number/boolean/array/object,不混合模糊类型description:参数详细说明,包含:含义、取值范围、格式要求、特殊约束- 可选约束字段(按需添加)
enum:枚举值,参数只能取列表内值,固定选项必加minimum/maximum:数字上下限minLength/maxLength:字符串长度限制items:array数组内部元素类型定义(数组必填)format:格式约束,常用date/date-time/email/uuid/floatdefault:参数缺省值,不传时自动填充
标准参数示例
yaml
parameters:
type: object
required:
- stock_code
- market_type
additionalProperties: false
properties:
stock_code:
type: string
description: A股股票6位数字代码,如000001、600036,不可为空
minLength: 6
maxLength: 6
market_type:
type: string
description: 股票市场分类,仅支持沪深A股
enum: [sh, sz]
query_date:
type: string
description: 查询日期,格式YYYY-MM-DD,不传默认今日
format: date
default: "2026-06-26"
3.3 参数书写禁止项
- 描述模糊:
填日期→ 错误;查询行情日期,标准YYYY-MM-DD格式→ 正确 - 混合多type:
type: [string, null]部分老模型不兼容,改用加default空字符串 - 不写枚举约束:固定选项参数不加
enum,会导致Agent乱传非法值 - 不限制长度/范围:手机号、编码、ID类参数必须加长度限制
四、返回值 response 书写规范
复杂工具必须定义返回结构,简单工具可省略,但生产环境建议统一规范:
- 顶层type统一
object - 分层清晰,区分
code(状态码)、msg(提示信息)、data(业务数据) - data内部字段同样遵循snake_case、JSON Schema约束
yaml
response:
type: object
properties:
code:
type: integer
description: 状态码,200成功,400参数错误,500接口异常
msg:
type: string
description: 请求结果说明
data:
type: object
properties:
stock_code:
type: string
current_price:
type: number
up_rate:
type: number
五、description 描述统一写作规范(决定Agent会不会正确调用)
5.1 技能顶层 description 写作模板
结构:能力范围 + 适用场景 + 不能做什么
错误示例:查天气
标准规范示例:
本技能用于查询国内城市当日及未来3天天气预报,可返回温度、降水、风力;仅支持国内地级市及以上城市,无法查询国外地区、历史往年天气数据。
5.2 参数description写作模板
结构:字段含义 + 格式/范围 + 特殊规则
错误示例:城市名字
标准示例:
需要查询天气的城市中文名称,仅限中国大陆地级市,例如北京、上海、成都,不支持区县、乡镇名称
5.3 描述通用禁忌
- 不使用模糊代词:"相关、一些、大概"
- 不写代码逻辑、实现细节(Agent不需要知道底层怎么实现)
- 不写过长冗余文字,控制单行可读性
- 明确区分支持/不支持边界,减少模型幻觉调用
六、examples 调用示例书写规范
作用:给模型提供Few-shot样例,大幅提升参数填充准确率,规范要求:
- 每条示例包含
input(入参)、output(返回结果)、scene(使用场景说明) - 至少1条正常调用示例;有枚举、异常场景需补充异常示例
yaml
examples:
- scene: 查询上海A股600036当日股价
input:
stock_code: "600036"
market_type: "sh"
output:
code: 200
msg: "查询成功"
data:
current_price: 32.15
七、YAML / JSON 格式语法书写规范
7.1 YAML规范(推荐)
- 缩进统一2空格,禁止Tab制表符
- 字符串无特殊字符可省略引号;包含数字开头、冒号、空格必须加双引号
- 数组短横线
-后必须加空格 - 键名后冒号
:必须加空格再写值 - 长文本description使用
|换行,保持排版整洁
yaml
description: |
本技能用于查询国内城市天气预报,
支持未来3天温度、降雨、风力数据,
仅中国大陆城市可用。
7.2 JSON规范
- 键名必须双引号,禁止单引号
- 末尾不能有多余逗号
- 格式化分层缩进2空格,禁止压缩单行
八、代码层 Skill 函数实现书写规范(Python示例)
如果Skill需要绑定可执行代码,函数必须遵循:
- 函数名:snake_case,与skill name保持一致
- 参数名:与配置文件parameters字段完全同名
- 增加标准文档字符串 docstring,对齐配置description
- 入参校验前置:长度、枚举、格式校验,抛出标准化错误
- 返回统一结构体,对齐response定义
python
def weather_query(city: str, query_date: str = "2026-06-26") -> dict:
"""
国内城市天气预报查询技能
仅支持中国大陆地级市,返回3天温度、降水、风力
:param city: 城市中文名称,地级市
:param query_date: 查询日期 YYYY-MM-DD
:return: 标准化天气返回结构体
"""
# 参数校验
if len(city) < 2:
return {"code": 400, "msg": "城市名称非法", "data": {}}
# 业务逻辑省略
return {"code": 200, "msg": "成功", "data": {...}}
九、分类、标签、权限扩展字段规范
tags:数组,小写蛇形,用于Agent技能检索分类
tags: [stock, finance, query]priority:数字1--10,1最高优先级,复杂决策Agent使用timeout:integer,调用超时毫秒,默认3000auth_required:boolean,true代表调用需要鉴权token
十、完整标准YAML模板(可直接复用)
yaml
# 技能唯一标识 snake_case
name: city_weather_query
version: 1.0.0
author: agent_platform
visibility: public
timeout: 3000
auth_required: false
tags:
- weather
- life_service
# 技能整体描述
description: |
查询中国大陆地级市未来3天天气预报,返回日间夜间温度、降水概率、风向风力。
不支持国外城市、区县乡镇、历史天气查询。
limitation: 单次仅可传入1个城市,不支持批量查询
# 入参标准JSON Schema
parameters:
type: object
required:
- city_name
additionalProperties: false
properties:
city_name:
type: string
description: 中国大陆地级市完整中文名称,如北京、广州,不可填写区县
minLength: 2
maxLength: 10
forecast_days:
type: integer
description: 需要预报天数,仅支持1/2/3天
enum: [1, 2, 3]
default: 3
# 返回结构定义
response:
type: object
properties:
code:
type: integer
description: 200成功,400参数错误,500服务异常
msg:
type: string
data:
type: array
items:
type: object
properties:
date:
type: string
format: date
temp_low:
type: integer
temp_high:
type: integer
# 调用示例
examples:
- scene: 查询北京未来3天天气
input:
city_name: "北京"
forecast_days: 3
output:
code: 200
msg: "天气查询成功"
data:
- date: "2026-06-26"
temp_low: 22
temp_high: 35
十一、常见书写错误汇总
- 命名混用驼峰/横杠/中文:
WeatherQuery、weather-query - parameters不写
additionalProperties: false,Agent传入无效参数 - 固定选项参数不配置
enum,模型传入非法值 - description写底层实现逻辑,不写业务适用边界
- 无limitation字段,Agent超范围调用技能(如查国外天气)
- 数组参数不写
items,模型不清楚数组内部结构 - 日期、编码类参数不添加
format、长度限制 - YAML使用Tab缩进、键后缺少空格
十二、不同框架差异化补充规范
- OpenAI Function Calling
- 字段完全兼容上述标准,顶层字段仅保留
name/description/parameters即可,多余字段会被忽略
- 字段完全兼容上述标准,顶层字段仅保留
- LangChain Tool
- 额外增加
return_direct布尔值:true代表工具结果直接返回用户,不交给大模型二次总结
- 额外增加
- 阿里通义Agent / 文心智能体
- 支持新增
skill_type字段:api/code/dataset区分技能类型
- 支持新增
- Anthropic Claude Tool
- 参数描述支持更长文本,推荐在description中增加失败场景说明
参考: https://swarmskills.openjiuwen.com/skills/c7dc8f03a5df49d78d2615f888495b11