大家好,我是 Sunday。
最近不少同学在讨论 Skills。就连 Vue 也出了 Vue Skills 这样的一个库。
不光是 Vue,所有和 Skills 沾边的,star 都涨的飞快
那么 Skills 到底是个什么东西,为什么最近讨论的声音这么大呢?今天,Sunday 就通过这篇文章,一文带你彻底搞懂 Skills。
什么是 Skills
Skill 翻译过来是 技能 的意思。更直白的来说就是:“给 AI 赋予一种技能”。
这句话乍一看可能不太好理解。咱们举个例子。
咱们就以 训练营 所做的服务为例。
任何一个程序员都得找工作,或者说 找工作是程序员具备的一大堆能力中的一个能力。
但是,因为程序员是一个综合性的角色,他会 写代码、梳理需求、和产品扯皮、跟测试甩锅、被裁了找工作。他虽然会找工作,但是找工作只是他众多能力中的一个,能找,但是找不好。
那怎么办呢?
他就需要有一个独特的 找工作流程。比如:
- 应该如何梳理自己的技术亮点,哪些亮点是对找工作有价值的,哪些是没有价值的。
- 筛选出有价值的亮点之后,如何把有价值的亮点体现在简历上,让 HR 可以通过你的简历。
- 如何进行面试的准备,面试练习、模拟面试、面试回顾 应该怎么去做,在每个环节中自己应该如何进行反思。
当我们把这一套 “经过验证的、标准化的、专业的流程” 封装起来,教给这位程序员时,他就从一个“只会瞎找工作的人”,变成了一个“求职高手”。
对于 AI 来说,这个道理是一模一样的。
通用的大模型(比如 ChatGPT、Claude)就像那个什么都会一点的程序员,它很聪明,什么都能聊两句。但如果你没有给它具体的 流程和规范,它也就是泛泛而谈。
而 Skills,就是我们把上面那一套 专业的 方法、模板、规范 打包成一个 工作流程(Workflow) 塞给 AI。
当 AI 装备了这个 Skill,他就会成为一个 具备专业技能,并且有标准工作流程的 AI... 很像之前的 工作流 概念,但是没有工作流这么复杂。
所以,Skills 的本质,就是 流程性知识的封装与复用 方案。
如何构建 Skills
Skills 最初是 Claude 提出的概念,并且配置非常简单。
那具体到代码层面,这玩意儿到底长啥样呢?其实对于咱们程序员来说,它的结构 非常简单,甚至有点朴实无华。
一个标准的 Skill,在物理层面上,其实就是一个 文件夹。它的结构大概是这样的
skill-name/
├── SKILL.md (必需)
│ ├── YAML frontmatter 元数据 (必需)
│ │ ├── name: (必需)
│ │ └── description: (必需)
│ └── Markdown 指令 (必需)
└── Bundled Resources (可选)
├── scripts/ - 可执行代码(Python / Bash 等)
├── references/ - 用于按需加载到上下文中的文档
└── assets/ - 输出中使用的文件(模板、图标、字体等)
我们要构建一个 Skill,只需要两步走:
第一步:创建一个文件夹
首先,我们需要创建一个文件夹。这里有一个硬性规定:文件夹名称必须是小写字母 + 连字符。比如:lgd-sunday,不要使用驼峰标识。
如果,我们想做一个 “简历优化专家” 的 Skill,文件夹名字就得叫:resume-polisher(不能有空格,也不能大写)。
第二步:编写核心文件 SKILL.md
在这个文件夹里,必须包含一个核心文件,名字固定为 SKILL.md。
这就好比 package.json ,它是整个 Skill 的入口。
SKILL.md 的内容结构非常固定,分为两部分:YAML 头部 和 Markdown 主体。
我们直接来看一个 demo,假设我们要把刚才提到的“简历优化流程”写成代码:
---
name: resume-polisher
description: 专门用于程序员简历优化。分析用户提供的原始简历内容,提炼技术亮点,并按照 STAR 法则生成专业的简历描述。
---
# 简历优化专家 (Resume Polisher)
## 指令 (Instructions)
你是一位拥有 10 年经验的技术招聘专家。当用户提供简历内容或技术经历时,请按以下步骤执行:
1. **亮点挖掘**:分析用户描述,识别其中的高价值技术点(如性能优化、架构设计)。
2. **去伪存真**:剔除毫无价值的描述(如“负责日常开发”、“修复 bug”)。
3. **STAR 重构**:将保留的亮点,严格按照 STAR 法则(情境、任务、行动、结果)重写。
4. **数据量化**:强制要求用户补充量化数据(如“提升了 50% 的加载速度”),如果没有,请标注为【待补充数据】。
## 示例 (Examples)
**用户输入**:
“我在公司里做了一个长列表优化,用了虚拟滚动,效果挺好的。”
**你的输出**:
- **项目背景**:在处理海量数据展示场景下,传统列表渲染导致页面卡顿(FPS 低于 30)。
- **解决方案**:引入虚拟滚动技术,只渲染可视区域内的 DOM 节点,并配合节流函数处理滚动事件。
- **最终结果**:首屏加载速度提升 40%,长列表滑动帧率稳定在 60FPS,内存占用减少 60%。
看到这里,大家应该就懂了。所谓的构建 Skill,其实就是:
-
YAML 头部:相当于给这个 Skill 定义身份。
name:技能的名字。description:最关键的字段! 它是给 AI 系统看的,告诉系统“我是干嘛的,什么时候该调我”。注意:这里一定要用第三人称描述(比如“用于处理...”,而不要写“我可以帮你...”)。
-
Markdown 主体:相当于具体的“SOP 手册”。
Instructions:具体的执行步骤,越详细越好。Examples:给 AI 一个样板间,让它照葫芦画瓢。
当然,除了 SKILL.md,你还可以在这个文件夹里放各种脚本、参考文档、甚至 JSON 数据。Agent 在执行任务时,会根据需要自己去读取这些文件。
自动的 Skills 构建
虽然独立构建一个 Skills 并不复杂,但是很多之前没有接触过 Skills 的同学依然会觉得这玩意挺难的。
不过 没事! Claude 帮咱们想到了这一层。Claude 对外开源了多套 Skills,可以让我们直接拿过来用,对应的 Github 仓库叫做 skills
这个仓库里面有一个 skills 的文件夹,里面存放了 Anthropic 团队为 Claude Code 编写的各种官方 skill。
给大家用大致翻译了一下:
这里面不有一个必须要拿出来单独讲的,就是上图中最后一个 skill skill-creator。他的作用就是帮助我们直接创建属于自己的 skill 的
使用起来也非常简单。
大家可以直接把仓库的代码下载到本地,然后像我这样,直接通过 Claude 按安装这个 skill 整个过程全部使用自然语言就可以
安装成功之后,就可以直接跟 claude 说:“帮我创建一个新的 skill”
后续的整个过程都完全使用自然语言对话的方式进行即可。
怎么让 Skills 跑起来
Skill 创建好了,不管是手写的还是自动生成的,现在你都已经有了一个自己的 skill 了。那么我们要怎么让 AI 识别并使用它呢?
这就涉及到 配置 的问题了。
对于 Claude Code 来说,它需要知道去哪里“读取”这些技能。通常我们有两种方式来配置:
1. 全局配置(推荐)
默认情况下,安装好的 skill 会被放到 ~/.claude-code/skills(苹果电脑) 下
这样的 skill 相当于是全局配置的。可以在 Claude code 中直接使用。
2. 项目级配置
如果你开发的 Skill 只是针对当前项目的(比如当前项目的自动化测试脚本),你可以直接把 skill-name 文件夹放在项目根目录的 .claude/skills 下。相当于单独使用
当配置完成之后,怎么触发 skills 呢?
其实很简单。
你 不需要 显式地输入类似 /run skill-creator 这样的命令。
还记得我们在 SKILL.md 里写的 description 吗?
description: 专门用于创建 skill 的 skill
当你对 Claude 说:“创建一个新的 skill” 时,Claude 的“中枢大脑”会快速扫描所有已安装 Skill 的 description,然后瞬间判断出:“哦!这个问题归 skill-creator 管! ”
于是,它会自动加载这个 Skill 的上下文,按照你制定的 SOP,一步步完成任务。
这就是 Skills 最迷人的地方: 用户无感,但能力却被无限扩展了。
总结
到这里,Sunday 相信大家已经彻底搞懂了 Skills 到底是个什么东西。
回顾一下,其实它并没有那么神秘:
- 本质:它不是什么黑科技,它就是 Prompt + 知识库 + 执行脚本 的结构化封装。
- 核心:它的核心在于 SOP(标准作业流程) 。你把 expert(专家)的经验变成了流程,AI 就能表现得像个专家。
- 未来:随着 AI 能力的进化,未来的编程模式可能会从 “写代码” 变成 “写 Skills” 。我们不再是写具体的逻辑,而是去定义一个个 AI 的工作流。
就像 Vue Skills 的出现一样,未来或许每个人、每个框架、每个公司,都会维护一套属于自己的 Skills 库。
另外: 来都来了,点个三连再走呗~~~