帮你快速理解、总结文档立即下载

Skills 文件规范

最近更新时间:2026-07-20 18:22:01

我的收藏
适用范围: 本规范适用于用户在 Skills 广场创建自定义 Skills 时,本地组装并打包 ZIP 文件的要求。内置 Skills 和企业共享 Skills 无需自行打包。
说明:
本平台遵循业界广泛采纳的 Agent Skills 开放规范,作为统一的 Skills 格式标准。以下要求均为该规范的硬性校验项,不满足将直接导致上传失败。

一、ZIP 包基础约束

要求项
说明
文件格式
仅支持 .zip 格式。
文件大小
最大 10 MB。
文件数量
ZIP 包内文件总数不超过 300 个。
文件类型
不允许在 ZIP 包任意位置包含二进制文件,包括但不限于:
可执行文件:.exe、.dll、.so、.dylib 等。
图片/媒体文件:.png、.jpg、.gif、.mp4 等。
压缩/归档文件:.zip、.tar、.gz 等。
ZIP 包内只允许包含纯文本格式文件(例如: .md、.py、.js、.txt、.json、.yaml 等)。
根目录结构
ZIP 包根目录下必须直接包含 SKILL.md 文件,不可嵌套在子文件夹中。
文件正确结构: 解压后 SKILL.md 直接位于根目录,无外层包裹文件夹:
my-skill.zip
├── SKILL.md
├── scripts/
│ └── main.py
├── references/
│ └── api-docs.md
└── assets/
└── config.json
文件错误结构: SKILL.md 被嵌套在子文件夹里:
my-skill.zip
└── my-skill/ ← 多余的包裹层,SKILL.md 未在根目录
├── SKILL.md
├── scripts/
└── references/

二、SKILL.md 硬性规范

SKILL.md 是 Skills 的入口文件,由两部分组成,必须同时满足本节所有规范,缺一不可:
YAML Frontmatter(元数据区):位于文件开头,用一对 --- 包裹,包含 Skills 的标识、描述、许可证等元信息,供平台识别和校验。其中 namedescription 为必填字段。
Markdown 正文:紧跟 Frontmatter 闭合的 --- 之后,说明 Skills 的具体使用方式、调用逻辑、注意事项等,供 LLM 在运行时理解并执行。

2.1 文件名

文件名大小写精确:必须是 SKILL.md,不能是 skill.mdSkill.md 或其他变体。

2.2 YAML Frontmatter 基础格式

元数据区只需一对 --- 包裹(开头开始、闭合结束),闭合后直接写正文,中间不要再插入额外的 --- 分隔线。
格式示范SKILL.md 文件开头):
---
name: pdf-processing
description: 从 PDF 文件中提取文本和表格,填写 PDF 表单,合并多个 PDF 文件。当用户提到 PDF、表单填写、文档提取或需要处理 .pdf 文件时使用此技能。
license: MIT
metadata:
author: your-name
version: 1.0.0
---

# PDF Processing

这里开始写 Markdown 正文,说明 Skills 的具体使用方式……
上例中,licensemetadata 为可选字段。

2.3 name 字段(必填)

约束
说明
长度
3~64 个字符。
字符集
仅允许小写字母(a-z)、数字(0-9)和连字符(-)。不允许大写字母、下划线、空格、中文或其他特殊字符。
首尾限制
不能以连字符开头,不能以连字符结尾。
连续连字符
不允许出现连续连字符(--)。
唯一性
name 需在企业内唯一,与已安装 Skills 重名时导入将失败。
合法示例:
pdf-processing
data-analysis
code-review
非法示例:
PDF-Processing(含大写字母)。
-pdf(以连字符开头)。
pdf_processing(含下划线)。

2.4 description 字段(必填)

约束
说明
长度
1~1024 个字符,不能为空。
内容要求
description 是 LLM 选择是否调用该 Skills 的关键依据,建议同时包含 Skills 功能(做什么)和触发场景(什么时候用),以便平台更准确地识别和调用该 Skills。
建议参考的示例:
description: 从 PDF 文件中提取文本和表格,填写 PDF 表单,合并多个 PDF 文件。当用户提到 PDF、表单填写、文档提取或需要处理 .pdf 文件时使用此技能。
不建议的写法(可能影响 Skills 触发效果):
description: 处理 PDF。(过于模糊,缺少触发场景)。
description: 帮助处理文档(没有说明具体功能和触发条件)。
留空(上传将失败)。

2.5 可选字段

字段
说明
license
许可证标识,可以是 SPDX 许可证标识(如 MITApache-2.0),也可以是 ZIP 包内附带的许可证文件名(如 LICENSE.txt)。
compatibility
环境兼容约束,最多 500 字符,标注运行 Skills 所需平台、依赖、网络等条件(例:Python
3.10+)。无特殊环境限制的常规 Skills,可省略该字段不填。
metadata
自定义键值对扩展信息,使用 YAML 嵌套对象格式(如 author: your-nameversion: 1.0.0)。
其中 version 建议遵循语义化版本规范(SemVer,如 1.0.0),更新时新版本号必须高于当前最新版本。

2.6 Markdown 正文

正文建议控制在 500 行以内,内容过多时拆分为 references/ 目录下的独立文件。
引用其他文件时使用相对于 Skills 根目录的路径,如 references/api-docs.mdscripts/main.py

三、标准目录结构

(ZIP 根目录)
├── SKILL.md ← 必填:YAML 元数据 + Markdown 指令正文,须直接位于根目录
├── scripts/ ← 可选:可执行脚本(Python/Bash/JS 等)
├── references/ ← 可选:按需加载的参考文档
└── assets/ ← 可选:模板文件、图标等静态资源

3.1 scripts/ 目录

存放 Skills 运行时可执行脚本,支持 Python、Bash、JavaScript 等语言。

3.2 references/ 目录

存放按需加载的参考文档(Markdown 格式)。LLM 在执行任务时,会根据 Skills 正文中的引用自主决定是否加载对应参考文档,未引用的文件不会预加载。

3.3 assets/ 目录

存放文本格式的模板文件、配置文件等静态资源。注意:ZIP 包内任意位置均不允许放置二进制文件(图片、可执行文件等)。

3.4 打包方式

进入 Skills 文件夹内执行 zip -r ../skill.zip .,确保 SKILL.md 位于 ZIP 根目录。打包时排除 __pycache__.DS_Store.git 等无关文件。

四、平台主要错误码及相关说明

错误码
说明
解决方案
450019
技能包缺少 SKILL.md 文件,请确认压缩包解压后 SKILL.md 直接位于根目录。
检查 ZIP 内是否有 SKILL.md,且不在过深的嵌套目录中。
450020
SKILL.md 缺少必填信息,请补全 name 和 description。
在 SKILL.md 开头的元数据区填写 name 和 description 字段。
450033
技能包中包含不支持的文件。
删除 .exe/.png/.mp4 等二进制文件后重新上传。
450034
技能包内文件数量超过上限 300。
减少文件数量后重新上传。

五、FAQ

5.1 我的压缩包解压后明明有 SKILL.md,为什么还报 450019?

原因有以下几种:
1. 同一层级有多个 SKILL.md:如 dir1/SKILL.mddir2/SKILL.md,平台无法确定哪个是根目录,会拒绝。不同层级的多个 SKILL.md 不会报错(如 a/SKILL.mda/b/SKILL.md,平台取最浅的 a/ 作为根目录)。
2. ZIP 文件损坏:压缩包本身格式有问题。
排查方法
# 查看 ZIP 内文件列表
unzip -l my-skill.zip

# 确认 SKILL.md 位置
unzip -l my-skill.zip | grep SKILL.md

5.2 Windows 打的 ZIP 包上传后中文文件名乱码怎么办?

平台已做兼容处理(GBK → UTF-8 自动转换),正常情况下不会出现乱码。若仍有问题,建议使用以下工具重新打包:
7-Zip:选择 UTF-8 编码。
PowerShellCompress-Archive -Path .\\my-skill -DestinationPath my-skill.zip
Git Bashzip -r my-skill.zip my-skill/

5.3 技能标识 name 的命名有什么规则?

仅允许小写字母数字连字符-)。
不能以连字符开头或结尾。
长度 3-64 个字符。
同一企业内唯一。
name
是否合法
原因
pdf-tool
-
weather123
-
My-Skill
包含大写字母
my_skill
包含下划线
-weather
以连字符开头
weather-
以连字符结尾
ab
少于 3 字符

5.4 SKILL.md 的 description 支持多行吗?

支持。可以使用 YAML 块标量语法:
---
name: my-skill
description: |
这是一个多行描述。
第二行内容。
第三行内容。
---
也支持折叠块标量 >
description: >
这是一段很长的描述,
会被折叠成一行。
description 最多 1024 个字符,超长会被截断。

5.5 哪些文件会被自动过滤?

以下文件不会上传到运行环境,也不计入文件数量:
类型
文件/目录
说明
macOS 元数据
__MACOSX/
macOS 压缩工具自动生成。
macOS 扩展属性
._*
._SKILL.md
macOS Finder
.DS_Store
目录显示设置文件。
Windows 缩略图
Thumbs.db
Windows 资源管理器缩略图缓存。
Windows 配置
desktop.ini
Windows 文件夹配置文件。
Python 缓存
__pycache__/
Python 字节码缓存目录。
Python 字节码
*.pyc*.pyo
Python 编译产物。
Git 元数据
.git/
Git 版本控制目录。
IDE 配置
.idea/.vscode/
JetBrains / VS Code 配置目录。

5.6 版本号有什么要求?

必须符合 SemVer 格式:主版本.次版本.修订号(如 1.0.0)。
修改技能时,新版本号必须严格高于当前版本。
不支持 v1.01.0latest 等非标准格式。

5.7 如何排查"技能包不可用"(450019)错误?

按以下步骤排查:
1. 检查 SKILL.md 是否存在
unzip -l my-skill.zip | grep SKILL.md
2. 检查是否有多个 SKILL.md
unzip -l my-skill.zip | grep -c SKILL.md
# 输出 > 1 则需要删掉多余的
3. 检查路径安全性
unzip -l my-skill.zip
# 确认没有异常路径(如绝对路径、特殊字符等)
4. 检查 ZIP 是否损坏
unzip -t my-skill.zip
# 报错说明 ZIP 文件损坏,需要重新打包

5.8 文件数量限制 300 是否包含系统文件?

不包含。被自动过滤的系统垃圾文件(.DS_Store__MACOSX/ 等)不计入文件数量。300 个限制只计算有效文件。

5.9 不同系统推荐的打包建议

推荐使用以下方式打包,避免编码和路径问题:
macOS
cd my-skill
zip -r ../my-skill.zip . -X
-X 参数排除 macOS 扩展属性。
Linux
cd my-skill
zip -r ../my-skill.zip .
Windows (PowerShell):
Compress-Archive -Path .\\my-skill\\* -DestinationPath my-skill.zip