10+年产品经理聊聊产品、测测产品,产品人交流学习成长平台,按 Ctrl+D 收藏我们
关于我 留言板 小程序 标签云

苏米客

  • 首页
  • AIGC
    • AI最新动态
    • AI学习教程
    • AI工具集合
    • AI产品百科
    • AI编程开发
    • AI提示词
    • AI开源项目
  • Axure
    • Axure动态
    • Axure教程
  • 产品
    • 用户体验
    • 产品设计
    • 苏米杂谈
  • 资源
    • 产品UI组件库
    • 开源图标库
    • 中后台框架
  • 书单
    • AI书籍
    • 用户体验
    • UI视觉
    • 产品研究
    • 其他类型
  • 下载
    • Axure组件
    • Axure原型
    • 文档报告
    • 素材资源
  • 登录
  • 首页
  • AIGC
    • AI最新动态
    • AI学习教程
    • AI工具集合
    • AI产品百科
    • AI编程开发
    • AI提示词
    • AI开源项目
  • Axure
    • Axure动态
    • Axure教程
  • 产品
    • 用户体验
    • 产品设计
    • 苏米杂谈
  • 资源
    • 产品UI组件库
    • 开源图标库
    • 中后台框架
  • 书单
    • AI书籍
    • 用户体验
    • UI视觉
    • 产品研究
    • 其他类型
  • 下载
    • Axure组件
    • Axure原型
    • 文档报告
    • 素材资源
当前位置: 首页 » AI编程开发

新手入门:深入浅出 Agent Skills 底层原理全解析(附实战案例)

2小时前 AI编程开发 55 0

OpenClaw 近期大热,但很多人连 Skill 的门槛都还没迈进去。

可偏偏,Skill 才是 OpenClaw 的地基。

你可能以为 Claude 的 Skill 系统背后是复杂算法与精密工程?

这正是最大的误解:没有神秘架构,没有花哨代码。

它的关键,几乎完全建立在“阅读理解”之上。

我把 Claude Agent Skills 源码从头到尾过了一遍。

所谓“技能”,本质就是一个 Markdown 文件。

不需要 Python,不需要 JavaScript,不需要服务器。

一个目录配上一段精心设计的提示词,就足够成体系。

接下来,我就用一篇文章深入浅出的拆解 Skill 的所有核心环节:从技能的发现机制,到 SKILL.md 的写作规则,再到技能如何被选择、展开与执行,以及如何打造高质量的可复用技能。

每一步都结合源码与实战案例,帮助你不仅会用,还能看懂它为什么这样设计。

Skills 到底是什么?

先建立全景认知:Skill 是什么、不是什么、如何运转。

  • Skill 是提升 Claude 在特定任务上表现的“提示词资产”。每个技能就是一个目录,内含指令、脚本与资源。
  • 当需要时,这些内容会被加载到对话与执行环境中,改变 Claude 的行为与权限。
  • 技能的发现与调用,依赖“声明式、基于提示词”的系统:把所有技能的名称与描述汇总为清单,引导 Claude 自主选择。
  • 源码层面,不存在额外的算法来替你“路由”技能:没有词向量、没有分类器。所有决策发生在模型自身的推理里。

技能不是什么?

  • 不是可执行程序:不会直接跑 Python/JavaScript,也没有背后服务或函数调用。
  • 不是系统提示词里写死的一段文字:技能独立存放在各自目录内,通过机制在需要时注入。

技能是什么?

技能是“专用提示词模板”。被激活时,它会同时:

  • 注入一段详细指令到对话上下文(改变 Claude 的思考与行动策略)
  • 修改执行上下文(预授权工具、切换模型等)

技能本身不直接“干活”。它是展开成详尽指令的操作手册,让 Claude 以正确角色和流程处理任务。

请求进入系统后,发生了什么?

当用户发起请求时,Claude 会同时接收到:

  1. 用户消息(例:请帮我从这个 PDF 中提取文字)
  2. 可用工具列表(如 Read、Write、Bash 等)
  3. Skill 工具(列出了全部技能的名称与描述)

Claude 读完技能清单后,基于语言理解把“用户意图”与“技能描述”进行匹配。例如用户让它“创建一个技能”,它看到 skill-creator 的描述正是“帮助创建新技能”,就会决定调用该技能。

技能选择的机制

  • 无算法路由、无意图分类、无正则、无 embeddings 或分类器。
  • 系统只负责把所有技能描述格式化为一段可读文本,嵌入到 Skill 工具提示词中。
  • 选择完全由模型的推理完成。这是“纯 LLM 推断”。

技能被调用后,系统的动作

  1. 加载技能目录中的 SKILL.md
  2. 把文件内容展开为详细指令
  3. 将这些指令作为新的用户消息注入到对话上下文
  4. 调整执行上下文(授权工具、切换模型等)
  5. 带着“增强后的环境”继续对话

与传统工具不同:工具是“执行动作并返回结果”,技能是“塑形与准备”,让 Claude 以正确的方式去完成任务。

工具 vs. 技能

  • 执行方式:工具是同步执行;技能是提示词展开(Prompt Expansion)。
  • 用途:工具做具体操作;技能引导复杂工作流。
  • 返回:工具直接给结果;技能修改对话与执行上下文。
  • 并发:工具通常安全;技能本质为 prompt,不提供并发能力。
  • 类型:工具多样;技能始终是“提示词类型”。
  • 示例:工具如 Read/Write/Bash;技能如 internal-comms、skill-creator。

如何构建 Agent Skills?

以 Anthropic 官方 skill-creator 为例,拆解构建方法。

核心公式:

技能 = 提示词模板 + 对话上下文注入 + 执行上下文修改 + 可选的数据文件与脚本

文件结构

每个技能由一个名为 SKILL.md 的 Markdown 文件定义(文件名大小写不敏感),可配套放置辅助文件。以 skill-creator 为例:

  • SKILL.md —— 核心指令
  • LICENSE.txt —— 许可证
  • scripts/ —— 可执行脚本集合

技能的发现与加载来源

  • 用户级:~/.config/claude/skills/
  • 项目级:.claude/skills/
  • 插件提供的技能
  • 内置技能

桌面版 Claude Desktop 也支持直接上传自定义技能。

核心设计思想:渐进式披露

“只在需要的时刻,展示刚好足够的信息”,再逐层展开。分为三步:

  1. 先展示技能的元数据头(Frontmatter):名称、简介、许可证等最小必要信息
  2. 当 Claude 做出选择,才加载完整 SKILL.md
  3. 执行过程中,按需加载脚本、参考文档或资源文件

SKILL.md 的两段式结构

  1. YAML 元数据头(Frontmatter):声明权限、模型与元信息
  2. Markdown 正文:给 Claude 的具体指令、流程与示例

可以类比“信件”:信封是投递信息(元数据),信的内容才是操作指南(正文)。

1. YAML 元数据头(配置)

---
name: skill-name
description: 简要说明
allowed-tools: Bash, Read
version: 1.0.0
---

2. Markdown 正文(指令)

  • 用途说明
  • 详细指令
  • 示例与指南
  • 分步工作流程

Frontmatter 字段详解

以 skill-creator 为例:

---
name: skill-creator
description: Guide for creating effective skills. This skill should be used
  when users want to create a new skill (or update an existing skill) that
  extends Claude's capabilities with specialized knowledge, workflows, or
  tool integrations.
license: Complete terms in LICENSE.txt
---

必填字段

  • name:技能名称,会作为 Skill 工具的 command 参数(例如 command: skill-creator)。
  • description:一句到两句说明“做什么与何时用”。它是 Claude 判断是否调用该技能的主要依据,必须清晰、面向行动。

可能存在但不建议使用

  • when_to_use:代码库中常见,但官方文档未公开,可能已弃用或仍在实验。若存在,系统会把它拼接到 description 之后。更稳妥做法是直接把触发条件写入 description。

可选字段

  • license:许可证信息。
  • allowed-tools:技能可以无需额外确认即可使用的工具白名单(逗号分隔,将被解析为数组)。可使用通配符限制范围,例如 Bash(git:) 仅允许 git 命令,Bash(npm:) 仅允许 npm 操作。

示例(推荐与不推荐):

# 精准授权:只列必须工具
allowed-tools: Read,Write,Edit,Glob,Grep

# 精准授权:仅开放特定 git 命令
allowed-tools: Bash(git status:*),Bash(git diff:*),Read,Grep

# 不推荐:过宽的权限边界,存在安全风险
allowed-tools: Bash,Read,Write,Edit,Glob,Grep,WebSearch,Task,Agent
  • model:指定技能使用的模型,默认继承会话模型。复杂任务(如代码审查)可指定更强模型。
model: claude-opus-4-20250514  # 指定模型
model: inherit                  # 使用会话模型(默认)
  • version:版本号,便于追踪与文档管理。
  • disable-model-invocation:true 时禁止 Claude 自动调用,仅允许用户通过 /技能名 手动触发,适合高风险或需强控制的流程。
  • mode:true 时将该技能归为“模式命令”,在列表顶部独立呈现(如 debug-mode、expert-mode)。

正文写作:让技能真正“好用”

Frontmatter 下方即为 Markdown 正文——Claude 激活技能后实际接收到的指令。写作要点:聚焦核心,配合渐进式披露;把细节外置为文件,按需加载。

推荐结构

---
# Frontmatter
---
# 用途(1-2 句)

## 概述
用途、使用时机与能力边界

## 前置条件
所需工具、文件或上下文

## 操作步骤
### 步骤 1
指令与示例
### 步骤 2
指令与示例
### 步骤 3
指令与示例

## 输出格式
结果组织方式

## 错误处理
异常分支与回退策略

## 示例
具体场景演示

## 资源
引用 scripts/、references/、assets/ 的文件

以 skill-creator 为例,正文内包含以下工作流:

  • 步骤 1:理解技能与收集用例
  • 步骤 2:规划可复用内容
  • 步骤 3:初始化技能
  • 步骤 4:编辑技能
  • 步骤 5:打包技能

调用时,系统会在提示词前注入技能的安装目录路径,{baseDir} 自动解析为实际路径,方便用 Read 等工具读取内部文件(如 Read({baseDir}/scripts/init_skill.py))。

写作最佳实践

  • 整体控制在 5000 字以内(约 800 行),避免撑满上下文窗口。
  • 使用祈使句(例:“分析代码中的…”),避免“你应该…”。
  • 细节外置:把长文档和模板放入外部文件,由技能按需加载。
  • 路径统一使用 {baseDir},不要写死绝对路径。

资源目录结构与职责

my-skill/
├── SKILL.md               # 核心指令
├── scripts/               # Python/Bash 可执行脚本
├── references/            # 需要读入上下文的参考文档
└── assets/                # 模板与二进制,通常不读入上下文

为什么要拆到外部

为了让 SKILL.md 保持精简,避免浪费上下文容量;把复杂说明、自动化脚本与模板放外部,按需加载更高效。

scripts/ —— 可执行脚本

用于承载需要“精确控制”的逻辑:自动化、多步转换、API 交互或比自然语言更稳的机械性任务。例:初始化脚本 init_skill.py,在正文中指示执行:

python {baseDir}/scripts/init_skill.py

references/ —— 需要读入上下文的文档

适合 Markdown、JSON 模式定义、配置模板等;通过 Read 工具加载(例:Read({baseDir}/references/mcp_best_practices.md))。

assets/ —— 静态资源

放模板与二进制(HTML/CSS/图片/配置模板等)。Claude 知道路径,但一般不把内容读入上下文;可复制、替换占位符、或在输出中引用。

references/ 与 assets/ 的关键差异

  • references/:文本会读入上下文,占用 Token。
  • assets/:仅按路径引用,不消耗上下文。

为了通用性,路径一律使用 {baseDir},避免绝对路径。

常见技能设计模式

模式一:脚本自动化

场景:多步命令、精确逻辑。把计算交给 scripts/,技能负责“调用→解析输出→整理结果”。

模式二:读取-处理-写入

场景:文件转换、数据清洗、报告生成。读入→转换→写出,最直接的流水线。

模式三:搜索-分析-报告

场景:代码库模式检测或企业数据分析。借助 Grep 搜索→Read 获取上下文→分析→产出结构化报告。

模式四:命令链执行

场景:步骤有依赖的串行流程(如类 CI/CD)。每一步依赖上一步成功。

进阶设计模式

向导式多步工作流

场景:每一步都需用户确认的复杂流程(如安装/配置向导)。

模板生成

场景:基于 assets/ 的模板化输出:加载模板→解析需求→填充占位符→写出成品。

迭代优化

场景:多轮扫描与深入。

  • 第一轮:广域扫描,发现高层问题
  • 第二轮:逐项深挖,标注成因与严重度
  • 第三轮:结合最佳实践,给出修复建议

多源信息汇总

场景:整合多文件多工具的数据,形成全景式总结(如项目概况、依赖分析、影响评估)。

案例:PDF 技能的完整生命周期

阶段一:发现与加载(启动)

Claude Code 启动时并行扫描:

  1. 加载用户级命令(~/.claude/commands/)
  2. 加载技能与插件(.claude/skills/ 与插件目录)
  3. 加载插件定义的命令
  4. 加载内置命令

合并并过滤禁用项后,得到可用技能列表。PDF 技能的数据对象大致如下:

  • type: prompt
  • name: pdf
  • description: 从 PDF 文档中提取文字
  • allowedTools: [Bash(pdftotext:*), Read, Write]
  • isSkill: true

阶段二:用户请求与技能选择

用户请求:从 report.pdf 提取文字。系统将技能列表以文本形式提供给 Claude,但不是所有技能都会出现,需满足:

  • type 为 prompt
  • isSkill: true
  • 未禁用模型调用
  • 有用户可读的描述或 when_to_use

通过过滤的技能会被格式化为单行描述,例如:

pdf: 从 PDF 文档中提取文字 - 当用户想提取或处理 PDF 文件中的文字时使用

Claude 的推断过程大致是:任务是 PDF 文本提取→列表中有 pdf 技能→描述完全匹配→调用 Skill 工具并将 command 设为 pdf。

阶段三:Skill 工具执行

  1. 输入验证:检查空名称、是否存在、能否加载、是否禁用模型调用、类型是否为 prompt。
  2. 权限检查:先看“阻止规则”,再看“允许规则”;都未命中则询问用户是否执行。
  3. 加载并生成执行上下文修改器:
    • 读取完整 SKILL.md
    • 生成可视的加载元信息
    • 创建消息数组(元信息 + 隐藏技能提示词 + 附件/权限消息)
    • 提取配置(允许工具、模型覆盖等)
    • 生成 contextModifier:把 allowed-tools 加入预授权;若指定模型则切换

阶段四:发送 API 请求(第一轮完成)

系统组装并发送消息序列:

  1. 用户原始消息:Extract text from report.pdf
  2. Claude 的工具调用:调用 Skill 工具(command: pdf)
  3. 元数据消息(可见):pdf 技能正在加载
  4. 技能提示词(隐藏):你是一个 PDF 处理专家...
  5. 权限消息:预授权 Bash(pdftotext:*)、Read、Write

此时技能只“注入了上下文”,并未直接完成任务。系统需要带着这些上下文再次与 Claude 交互,才进入实操环节。

阶段五:在技能上下文中执行工具

Claude 收到响应后,已经具备:

  • PDF 专业指令(来自对话上下文)
  • 预授权工具(来自执行上下文)
  • 清晰工作流(来自对话上下文)

接着按工作流执行:

  1. 检查 report.pdf 是否存在
  2. 通过 Bash 执行 pdftotext 提取文字(无需再询问)
  3. 用 Read 读取输出文件
  4. 将结果返回给用户

可以看到,技能的核心在于“对话上下文注入 + 执行上下文授权”。

结语:为何这套设计足够“简单但有力”

很多人会问:为什么 Anthropic 把技能系统做得如此“朴素”?

答案是:当模型的阅读理解能力足够强,复杂路由与调度常常是负担。

一个 Markdown 文件,就能让 Claude 理解意图、执行工作流。

归纳起来,技能系统就是三件事:

  • 发现:扫描目录,汇总技能清单
  • 注入:把技能提示词插入对话上下文
  • 执行:预授权工具,让 Claude 依指令工作

没有魔法,没有黑盒,只有清晰的工程边界与对 LLM 能力的正确利用。

真正的 Agent 能力,不在于写多少 API 和框架,而在于用自然语言精心设计工作流。

这篇文章建议收藏、反复阅读,每次回看都会有新的理解与改进方向。

声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。
未经允许不得转载:新手入门:深入浅出 Agent Skills 底层原理全解析(附实战案例)
#Agent Skills #Skills #Claude 
收藏 1
讯飞星辰白嫖国产最新三大模型实操教程,让你的OpenClaw火力全开
Agent Reach:一句话让AI Agent免费上网的开源项目,赶紧集成到Skills
推荐阅读
  • Next.js 原生 MCP 来了:为什么 AI 编程在 Web 开发中需要这一层感知
  • Cursor 0.47 更新Claude 3.7 的 Max 模式,支持长达 200k 上下文,这钱花的值不值
  • 10个必装Skills,从新手小白到技能大神的进阶指南
  • OpenCode深度实测:Claude Code最强开源平替!真正工程友好的AI编程智能体
  • 从Cursor到Claude Code:避坑4大难题,我的高效开发迁移指南
评论 (0)
请登录后发表评论
分类精选
手把手教你用支付宝订阅 Cursor Pro:国内用户最全开通教程(附取消自动扣费)
22145 8月前
Claude Code Rules:claude.md文件配置完全指南
17604 7月前
Claude Code + MCP 实战教程:手把手教你如何在Claude Code里面使用MCP
13453 7月前
学生党0元白嫖!手把手教你解锁Cursor Pro年VIP,超详细申请教程(附避坑指南)
13228 9月前
Cursor 0.46更新,新增支持Claude 3.7 + GPT 4.5,Cursor Pro 无限续杯攻略,全自动化工具使用说明
12586 12月前
Claude Code 官方已支持Windows系统!手把手教你免费安装使用Claude Code
12484 7月前
Cursor代码生成器中文使用教程,Cursor新手入门完全指南,全网最全面详细的Cursor使用教程
11650 1年前
手把手教你在VS Code & Cline/RooCode 中使用Kimi K2 模型,配置实录+开发实战体验
10314 7月前
手把手教你在Claude Code 中使用Kimi K2 模型,超简单配置教程分享
9282 7月前
Cursor新手3分钟快速搞懂 Ask/Manual/Agent 三种模式及高级技巧
9259 9月前

文章目录

关注「苏米客」公众号

订阅推送更及时,手机查看更方便
分类排行
1 新手入门:深入浅出 Agent Skills 底层原理全解析(附实战案例)
2 用好 find-skills ,让你更高效的查找和使用 Skills
3 基于 OpenClaw + Codex + ClaudeCode 的智能体集群架构完整开源
4 Claude Code 推出远程控制:本地运行,随处接管
5 Subagent 和 Agent Team傻傻分不清?一文读懂 Claude Code 扩展的正确打开方式
6 OpenClaw 配置实战:10 个Skill让你的 AI 助手从聊天机器人到数字员工的进阶之路
7 两款Claude Code 聊天记录管理工具:保存Claude Code 完整的聊天记录
8 10个研发场景必备Agent Skills合集,从前端设计到文档维护
9 10款VSCode插件合集:代码开发效率提升工具库
10 从能用到会用,Skill 设计与开发的工程化实践指南
©2015-2024 苏米客XMSUMI 版权所有 · WWW.XMSUMI.COM 闽ICP备14005900号-6
微信文章助手 程序库 免费影视APP 免费字体下载 Axure RP 10 免费Axure模板 Axure元件库下载 申请友联