
2025 年 10 月,Anthropic 在 Claude 3.7 Sonnet 中正式推出 Claude Skills 功能,定位解决通用大模型在垂直场景中“知道但不会做”的问题。两个月后,Anthropic 联合多家生态伙伴在 agentskills.io 开源 Agent Skills Specification V1.0,并发布官方 SDK。到 2026 年 2 月,公开可用的 Agent Skills 已超过 85,000 个,支持该标准的主流平台达 27 家,覆盖开发、设计、办公、电商、金融等领域。TechCrunch 将其称为“AI 领域的 Dockerfile”——让 AI 能力变得可移植、可组合、可版本控制。
Agent Skills 是组织好的文件集合,其中包含了代理可组合的程序知识。本质就是一个包含元数据、脚本、模板、参考指令的文件夹:
my-skill/
├── SKILL.md # 主文件:YAML 元数据 + Markdown 指令
├── scripts/ # 可选:可执行代码(Python、Bash 等)
├── references/ # 可选:规则、规范、参考指南
└── assets/ # 可选:图标、模板等资源SKILL.md 的 YAML frontmatter 中,name 和 description 是必须字段。description 应包含有助于代理识别相关任务的关键词,因为代理正是依赖这两项元数据来决定是否加载该 Skill。
Agent Skills 最精巧的设计是渐进式披露。启动时只加载每个 Skill 的 name 和 description,约 30-50 tokens;当代理判断需要该 Skill 时,才加载完整的 SKILL.md 指令;只有在执行过程中真正需要时,才加载 scripts/ 和 references/ 中的资源。这套机制让代理可以同时安装几十个 Skill 而不撑爆上下文窗口。
以下代码展示了 Skill 的发现、加载与执行循环:
import os, re, yaml
class SkillRegistry:
def __init__(self, skills_dir: str):
self.skills = {}
for name in os.listdir(skills_dir):
path = os.path.join(skills_dir, name, "SKILL.md")
if not os.path.exists(path):
continue
with open(path) as f:
content = f.read()
meta = yaml.safe_load(re.match(r"---\n(.*?)\n---", content, re.S).group(1))
self.skills[meta["name"]] = {
"description": meta["description"],
"dir": os.path.dirname(path),
"loaded": False,
"content": None,
}
def discover(self) -> str:
"""第一层:只返回元数据,供模型判断是否需要"""
return "\n".join(
f"- {name}: {s['description']}"
for name, s in self.skills.items()
)
def load(self, name: str) -> str:
"""第二层:按需加载完整指令"""
s = self.skills[name]
if not s["loaded"]:
with open(os.path.join(s["dir"], "SKILL.md")) as f:
s["content"] = f.read()
s["loaded"] = True
return s["content"]
def run_script(self, name: str, script: str, args: list) -> str:
"""第三层:按需执行脚本"""
script_path = os.path.join(self.skills[name]["dir"], "scripts", script)
# 生产环境需沙盒隔离
import subprocess
result = subprocess.run(["python", script_path] + args,
capture_output=True, text=True, timeout=30)
return result.stdout
# 使用示例
registry = SkillRegistry("./skills")
system_prompt = f"""可用技能:
{registry.discover()}
判断需要哪个技能后,调用 load_skill 获取完整指令。"""
# 模型返回 {"action": "load_skill", "name": "pdf-toolkit"}
instructions = registry.load("pdf-toolkit")这套模式的价值在于:Skill 是纯文件,不绑定任何特定模型或框架。你可以为 Claude 写一个 Skill,然后在 OpenAI Codex、Gemini CLI、GitHub Copilot 中直接使用,无需任何改写。
Agent Skills 与 MCP 不是替代关系。MCP 解决的是标准化连接问题,让工具和模型之间的对接有统一协议;Skills 解决的是经验封装问题,把流程、异常处理和复用能力打包成可执行的知识。用一句话概括:MCP 给 Agent 提供“工具”,Skills 给 Agent 灌输“知识”,告诉它该在何时、以何种方式使用这些工具。MCP 是服务契约,Skills 是编排蓝图,两者层级协作,缺一不可。
2026 年 Q1,Skill 市场单月创建量达到 27,720 个。但《Skill 蓝皮书 2026》基于 61,776 条数据的分析显示,54% 的 Skill 从未被看见,基尼系数高达 0.983,比 AppStore 和 npm 都更极端。这意味着 Skill 的分发比创建本身更难——写好一个 Skill 只是起点,让它被正确的人和正确的 Agent 发现,才是真正的挑战。
对开发者而言,Agent Skills 打开了一扇门:你不再需要为每个 AI 平台重复编写工具定义,而是用一套标准化的文件夹,把领域知识封装为可移植、可组合、可版本控制的资产。正如 Dockerfile 让应用交付标准化,SKILL.md 正在让 AI 能力交付标准化。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。