返回 AI大模型从0到1——理论与实操

C3-07 skills


演示:skills安装和配置,有skills和无skills的区别,使用skills生成信息图

📚 skills的差异化竞争:在进行工具调用时,一张数据表的增、删、改、查需要对外暴露多个工具,导致agent加载的工具数量呈指数级增长,影响agent稳定性且费token。可以用一个skill对多个工具的使用进行封装说明。

一、什么是 Skills:可复用的"操作手册" 📋

类比:Skills 就像公司里的标准作业流程(SOP)——不是每天都用,但需要的时候按步骤执行就对了。

Skills 的特点

  • 放在 .claude/skills/或者.codex/skills 目录下
  • 只加载名称和描述(不占用上下文)
  • 调用时才加载完整内容
  • 可以用斜杠命令触发:如 /deploy、/fix-issue

创建一个 Skill 示例

Markdown
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
---
name: fix-issue
description: Fix a GitHub issue
disable-model-invocation: true
---
Analyze and fix the GitHub issue: $ARGUMENTS.

1. Use gh issue view to get the issue details
2. Understand the problem described
3. Search the codebase for relevant files
4. Implement the fix
5. Write and run tests to verify
6. Create a descriptive commit
7. Push and create a PR

使用方式:输入 /fix-issue 1234 即可让 agent 按流程修复 GitHub Issue #1234。

二、SKILL.md 的结构与关键字段 🧩

一个 skill 本质就是一个目录,核心是里面的 SKILL.md;目录里还能放脚本、参考文档、模板等资源。

Plain Text
1
2
3
4
5
my-skill/
├── SKILL.md          # 必填:入口,含 YAML frontmatter + 正文
├── references/       # 可选:按需加载的参考文档(API、schema、规范)
├── scripts/          # 可选:可执行脚本(agent 直接运行,不占上下文)
└── assets/           # 可选:输出用资源(模板、图标、字体等)

SKILL.md = frontmatter + 正文

  • frontmatter(YAML 头):会被"始终加载",agent 靠它判断何时使用这个 skill,最关键的是 description
  • 正文(Markdown):只有 skill 被触发后才加载,写具体的操作步骤和指令。

frontmatter 字段速查表

开放标准只要求 name + description;其余为扩展字段,均可选。

字段 必填 作用
description skill 做什么 + 何时用,是自动触发的唯一依据,务必写清触发场景
name 显示名,默认取目录名
disable-model-invocation true = 只允许用户用 /命令 手动调,模型不自动调(适合有副作用的操作)
user-invocable false = 从 / 菜单隐藏,只让 agent 调(背景知识类)
allowed-tools skill 激活时可免确认使用的工具白名单
argument-hint 补全时显示的参数提示,如 [issue-number]
model / effort skill 激活期间临时切换的模型 / 推理强度
context: fork 在隔离的子代理中运行该 skill

给 skill 传参

  • $ARGUMENTS:用户输入的整段参数
  • $1$2(或 $ARGUMENTS[0]…):按位置取参数
  • 命名参数:frontmatter 里声明 arguments: [issue, branch] 后,可用 $issue$branch

三、渐进式加载 与 三种调用方式 ⚙️

为什么装很多 skill 也不占上下文?因为它渐进式加载(progressive disclosure)——分三步,用到哪层才加载哪层:

📶 1. 发现:会话开始,只加载所有 skill 的 name + description(约几十字)

  1. 激活:请求匹配到某个 description → 才把该 SKILL.md 正文读进上下文
  1. 执行:需要时才读取引用的参考文件 / 运行脚本

所以装 100 个 skill 也几乎不占上下文,只有被用到的那一个才会"展开"。

三种调用方式

方式 谁触发 例子
模型自动调用 agent 按 description 匹配 "帮我读一下这篇飞书文档" → 自动用 lark-doc
用户手动调用 用户输入斜杠命令 /fix-issue 1234
多个叠加 用户串联多个 /skill-a /skill-b 参数

💡 disable-model-invocation: true 让 skill 变成"只能手动调"——模型不会自动执行,description 也不进上下文。凡是有副作用的操作(部署、提交、发消息)都建议加上它,避免 agent 擅自触发。

四、常用 skills

Skills 可以来自官方插件市场、社区,或你自己 / 团队编写。下面按场景分类,列出常见 skill 及其用途。

官方地址:https://github.com/anthropics/skills

社区:https://clawhub.ai/skills

skill本身类

Skill 用途 典型触发
find-skill 查找skill /find-skill
skill-creator 生成skill /skill-creator
skill-vetter 检查skill安全性 /skill-vetter

文档处理类skills

Skill 用途 典型触发
docx doc文档处理 "修改这个doc文件"
pptx ppt文档处理 “帮我生成一个ppt”
xlsx excel文档处理 "帮我分析这个excel表格"
pdf pdf文档处理 "读取此pdf文档"
lark-cli 飞书文档/多维表格/知识库/消息/云盘大礼包 “写入飞书文档”

通用开发实用 skills

Skill 用途 典型触发
code-review 审查当前改动的正确性与可简化点 /code-review
security-review 安全审计,找漏洞与风险 /security-review
debug-pro 系统化定位并修复 bug "帮我调试这个报错"
test-runner 运行测试并解读结果 "跑一下测试"
git-essentials 常用 Git 操作与规范 "帮我提交 / 建分支"
frontend-design 生成高质量前端界面 "做一个落地页"
skill-creator 手把手创建 / 打包新 skill "帮我创建一个 skill"
memory 跨会话记忆项目关键信息 自动

Lark(飞书)系列 skills

这套 skill 把飞书开放能力封装成"操作手册",让 agent 直接读写飞书资源。核心是 lark-shared(认证与通用规则),其余按业务域拆分:

<grid>
<column width-ratio="0.500000">
📄 文档 / 知识
- lark-doc:飞书云文档读写
- lark-sheets:电子表格
- lark-base:多维表格
- lark-wiki:知识库
- lark-slides / lark-whiteboard:幻灯片 / 画板
- lark-minutes:妙记
</column>
<column width-ratio="0.500000">
💬 协同 / 办公
- lark-im:消息
- lark-calendar / lark-vc:日历 / 视频会议
- lark-task / lark-okr:任务 / OKR
- lark-approval / lark-attendance:审批 / 考勤
- lark-mail / lark-contact:邮箱 / 通讯录
- lark-drive:云盘(评论、reaction)
</column>
</grid>

📌 用法示例:直接说"帮我把这篇飞书文档总结成表格发到群里",Claude 会自动串起 lark-doc(读文档)→ lark-base/lark-sheets(做表)→ lark-im(发群)。这正是 skill 的价值:把多步专业操作沉淀成可复用的流程

演示:skills的具体内容

五、编写 Skill 的最佳实践——让AI写就好啦

不过你需要知道如何调优:

  • description 是灵魂:写清"做什么 + 什么时候用",触发全靠它
  • 精简为王:上下文是公共资源,只写 agent 不知道的;SKILL.md 正文尽量 < 500 行
  • 渐进式拆分:大段参考 / 示例挪到 references/,正文里用链接引导"何时读"
  • 脚本沉淀确定性:反复重写的代码固化成 scripts/,省 token 又稳定
  • 副作用加护栏:deploy / commit 类加 disable-model-invocation: true
  • 先跑再改:真实任务里先用一次,发现卡点再迭代 SKILL.md
  • 不要塞垃圾:别放 README、CHANGELOG 等;skill 只放"干活需要"的东西

❤️ 提示:在claude code中,skills是可以调用sub agent执行任务的,所以对skill的理解过程中,思路要打开,它是完成一项任务的SOP,prompt, function, subagent都可以是完成任务中的一环。

六、动手练习

练习 1:对比"有无 skill"

  1. 不用 skill,直接让 agent 读一篇飞书文档,观察它能否操作
  1. 再触发 lark-doc,对比结果差异

练习 2:创建你的第一个 skill

  1. .claude/skills/ 下新建 hello/SKILL.md
  1. 写好 frontmatter(name + description)和几步指令
  1. 输入 /hello 触发,验证效果
  1. 也可直接说"帮我创建一个 skill",让 skill-creator 带你走完流程

演示:创建一个hello skill演示,进入之后写一段诗句,飞书文档写入/多维表格分析演示,信息图生成演示