C3-07 skills
演示:skills安装和配置,有skills和无skills的区别,使用skills生成信息图
📚 skills的差异化竞争:在进行工具调用时,一张数据表的增、删、改、查需要对外暴露多个工具,导致agent加载的工具数量呈指数级增长,影响agent稳定性且费token。可以用一个skill对多个工具的使用进行封装说明。
一、什么是 Skills:可复用的"操作手册" 📋
类比:Skills 就像公司里的标准作业流程(SOP)——不是每天都用,但需要的时候按步骤执行就对了。
Skills 的特点
- 放在 .claude/skills/或者.codex/skills 目录下
- 只加载名称和描述(不占用上下文)
- 调用时才加载完整内容
- 可以用斜杠命令触发:如 /deploy、/fix-issue
创建一个 Skill 示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
使用方式:输入 /fix-issue 1234 即可让 agent 按流程修复 GitHub Issue #1234。
二、SKILL.md 的结构与关键字段 🧩
一个 skill 本质就是一个目录,核心是里面的 SKILL.md;目录里还能放脚本、参考文档、模板等资源。
1 2 3 4 5 | |
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(约几十字)
- 激活:请求匹配到某个 description → 才把该 SKILL.md 正文读进上下文
- 执行:需要时才读取引用的参考文件 / 运行脚本
所以装 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
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文档" | |
| 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"
- 不用 skill,直接让 agent 读一篇飞书文档,观察它能否操作
- 再触发 lark-doc,对比结果差异
练习 2:创建你的第一个 skill
- 在
.claude/skills/下新建hello/SKILL.md
- 写好 frontmatter(name + description)和几步指令
- 输入
/hello触发,验证效果
- 也可直接说"帮我创建一个 skill",让 skill-creator 带你走完流程
演示:创建一个hello skill演示,进入之后写一段诗句,飞书文档写入/多维表格分析演示,信息图生成演示