🧠 别再让 AI 裸奔了!用 Skills 让 AI 秒变专属员工

0 阅读18分钟

🧠 别再让 AI 裸奔了!用 Skills 让 AI 秒变专属员工

摘要:你是不是每次打开 AI 对话框,第一句都在重复"我是谁、我在做什么、这次要做什么"?2026 年了,聪明人已经把重复的 Prompt 固化成了 Skills——一个 /skill-name 就能让 AI 秒变你的专属员工。本文从概念到实战,带你彻底搞懂 Skills 技能系统。

适用范围:本文以 Claude Code 为主要示例平台,Skills 概念遵循 Anthropic 官方文档 定义的规范。部分高级特性(如动态上下文注入、子代理隔离)为 Claude Code 特有能力,其他 AI 平台的 Skill 实现可能有所不同。


📌 前言:AI 使用的三个阶段,你在哪一层?

先问一个问题:你每天是怎么用 AI 的?

阶段行为本质
第一阶段打开对话框,问一个问题,得到答案,关掉把 AI 当百度用
第二阶段研究 Prompt Engineering,写复杂的提示词开始"驯服" AI
第三阶段把 Prompt 固化成 Skills,打开就能干活让 AI 成为你的员工

大多数人都卡在第二阶段——每次都要写一遍 Prompt,换个电脑又要重来,团队其他人更是无从复用。

而第三阶段的核心思想是:把你的专业能力"蒸馏"成一个 SKILL.md 文件,让 AI 在需要的时候自动加载,就像给 AI 装了一个个"技能包"。

💡 一句话理解 Skills:Skills 就是你把"我是谁、我擅长什么、我怎么做"这些信息,从临时的对话 Prompt 变成了永久的、可复用的、可组合的技能模块。


🎯 什么是 Skills?为什么你需要它?

定义

Skills(技能)是模块化的指令集。一个 Skill 就是一个文件夹,里面有一个 SKILL.md 入口文件,告诉 AI:

  • 我是谁(name)
  • 我什么时候该被调用(description)
  • 我具体怎么做(Markdown 正文的指令)

为什么需要 Skills?

想象一个场景:

你是一个团队 leader,每周要开 3-4 次会。每次开完会,你要手动整理会议纪要:谁说了什么、要做什么、截止时间是什么。这个过程每次要花 30 分钟。

没有 Skills 的日子

  1. 打开 AI
  2. 复制粘贴会议录音文本
  3. 写一段 Prompt:"请帮我整理会议纪要,提取主题、负责人、截止时间..."
  4. AI 输出的格式每次都不一样
  5. 下次再开会,重复以上所有步骤

有了 Skills 之后

  1. 打开 AI
  2. 输入 /meeting-minutes
  3. 粘贴会议文本
  4. 完成。格式一致,结构专业,3 分钟搞定

这就是 Skills 的价值——把重复的、专业的、高频的操作固化下来。

我的实际体验

说实话,我一开始觉得 Skills "没必要"——不就是把 Prompt 存成文件吗?直到有一天我发现:

  • 我每天要写 3 遍几乎相同的 Prompt(代码审查、会议纪要、日报生成)
  • 换个项目又要重新写,因为 Prompt 存在聊天记录里找不到
  • 团队其他人不知道我有一套好用的 Prompt,各写各的

封装成 Skill 之后的变化:代码审查从 15 分钟写 Prompt 变成了 3 秒输入 /code-review,输出格式统一,团队共用一套标准。


📁 Skills 的文件结构与存放位置

目录结构

.claude/skills/
└── meeting-minutes/          # 技能文件夹
    ├── SKILL.md              # ⭐ 入口文件(必须)
    ├── README.md             # 说明文档(可选)
    ├── templates/            # 模板文件(可选)
    │   └── template.html
    ├── scripts/              # 可执行脚本(可选)
    │   └── generate.py
    └── evals/                # 测试用例(可选)
        └── evals.json

核心规则

  • SKILL.md 是入口,必须有
  • 其他文件都是可选的,用于增强 Skill 的能力
  • 通过在 SKILL.md 中引用这些文件,AI 会在需要时加载它们

存放位置与优先级

Skills 可以放在多个位置,覆盖优先级如下:

位置路径作用域优先级
企业级通过 managed settings 分发全组织最高
个人级~/.claude/skills/你的所有项目
项目级项目/.claude/skills/当前项目
嵌套级子目录/.claude/skills/特定子模块
插件级插件自带 skills插件作用域独立命名空间

同名覆盖规则:企业 > 个人 > 项目 > 内置

Monorepo 支持

monorepo/
├── .claude/skills/deploy/          # 项目级 deploy skill
└── apps/web/.claude/skills/deploy/ # 嵌套级 deploy skill
  • 输入 /deploy → 调用项目级
  • 输入 /apps/web:deploy → 调用嵌套级
  • AI 自动选择与当前工作目录匹配的版本

SKILL.md 的标准模板

---
name: my-skill
description: 当用户需要 XXX 时使用此技能。适用于 YYY 场景。
---

# 技能标题

## 输入

用户会提供 [描述输入格式]

## 处理步骤

1. **第一步**:做什么
2. **第二步**:做什么
3. **第三步**:做什么

## 输出格式

[定义期望的输出结构]

## 注意事项

- [约束条件 1]
- [约束条件 2]

⚠️ 关键点--- 之间的部分是 YAML frontmatter,用于声明元数据;--- 之后是 Markdown 正文,用于写具体指令。


🔧 Frontmatter 详解:Skill 的"身份证"

Frontmatter 是 Skill 的配置中心,决定了 AI 什么时候调用、怎么调用你的 Skill。

核心字段一览

---
name: meeting-minutes                    # 技能名称(显示用,非调用名)
description: 生成结构化会议纪要。当用户提供会议录音文本、讨论记录时使用。
disable-model-invocation: false          # 是否禁止 AI 自动调用
user-invocable: true                     # 是否允许用户通过 /skill-name 调用
context: inline                          # 执行上下文:inline 或 fork
allowed-tools:                           # 预授权的工具列表
  - "Bash(git *)"
  - "WebFetch"
disallowed-tools:                        # 禁用的工具列表
  - "Bash(rm *)"
arguments:                               # 参数定义
  - name: format
    description: 输出格式(detailed  brief)
    required: false
---

各字段详解

字段类型说明示例
namestring技能显示名称meeting-minutes
descriptionstring最重要的字段! AI 靠它判断是否调用生成结构化会议纪要
disable-model-invocationbooltrue = 只能用户手动调用用于部署、发布等有副作用的操作
user-invocableboolfalse = 只有 AI 能调用用于背景知识,不适合当命令
contextstringfork = 在隔离的子代理中运行需要独立上下文的任务
allowed-toolslist调用时自动授权的工具["Bash(git *)"]
argumentslist参数定义见上表

description 的重要性

description 字段是 AI 判断"要不要用这个 Skill"的唯一依据。

好的 description

description: 生成结构化会议纪要。当用户提供会议录音文本、讨论记录时使用。
适用于项目会议、团队讨论、客户电话、规划评审等场景。

差的 description

description: 会议相关

💡 踩坑经验:description 要包含用户会怎么说的关键词。我一开始写 description: 会议工具,结果 AI 从来不自动触发——因为用户说的是"帮我整理会议纪要",而不是"帮我用会议工具"。改成 生成结构化会议纪要 之后,触发率直接从 0 到 90%。


📝 实战案例 1:会议纪要 Skill

这是一个真实在用的 Skill,解决"每次开完会都要手动整理纪要"的痛点。

SKILL.md(完整版)

---
name: meeting-minutes
description: 生成结构化会议纪要。当用户提供会议录音文本、讨论记录时使用。
  适用于项目会议、团队讨论、客户电话、规划评审等场景。
---

# 会议纪要生成器

从原始会议文本中提取结构化纪要。

## 输入

用户提供会议录音转写文本或讨论记录文件。

## 处理步骤

1. **通读全文**:理解整体上下文后再提取
2. **过滤噪音**:剔除闲聊、跑题、重复内容
3. **结构化提取**:按下方模板组织信息

## 输出结构

# 会议纪要

## 一、会议基本信息
- **会议时间**:[从文本提取或留空]
- **参会人员**:[列出所有提到的参会人]
- **会议时长**:[如可判断]

## 二、会议目标
- **会议目的**:[为什么开这个会]
- **背景信息**:[相关上下文]

## 三、会议内容

### [议题 1 名称]
**讨论内容**:[要点]
**主要观点**- [观点 A - 某人]
- [观点 B - 某人]
**结论/决议**:[如有]

### [议题 2 名称]
...

## 四、行动项
| 序号 | 任务内容 | 负责人 | 截止时间 | 备注 |
|------|----------|--------|----------|------|
| 1 | [任务] | [人名] | [日期] | [备注] |

## 五、待确认事项
- [未解决的问题]

## 准则

- **准确性优先**:只提取文本中明确提到的信息
- **不确定就留空**:不要猜测或推断
- **保留原意**:忠实总结,不加个人解读
- **按主题组织**:按议题分类,而非按时间顺序
- **行动项要具体**:包含谁、做什么、什么时候

使用效果

输入(会议录音转写文本,约 2000 字):

发言人1: 今天咱们碰个头,主要是团建的事。公司小部门好久没团建了,二月份上班到现在八个月了...
发言人2: 我觉得有必要团建。应该去郊区,体验农家生活,爬山、篝火晚会...
发言人3: 我同意去郊区,有山有水的地方,多做一些对抗性活动增加凝聚力...
发言人4: 同意郊区方案。路程合适,一两天时间,参与性强,不像K歌有的人只能当旁观者...

输出(结构化纪要,完整输出):

# 会议纪要

## 一、会议基本信息
- **参会人员**:发言人1、发言人2、发言人3、发言人4
- **会议时长**:约 6 分钟

## 二、会议目标
- **会议目的**:讨论部门团建方案
- **背景信息**:部门自二月份以来八个月未团建,现疫情管控放松

## 三、会议内容

### 团建必要性
**讨论内容**:讨论是否需要组织团建
**主要观点**- 发言人2:有必要,能增加同事间友谊和信任
- 发言人3:工作压力大,需要劳逸结合
- 发言人4:同意,需要放松
**结论/决议**:全员同意组织团建

### 团建方案
**讨论内容**:讨论具体团建形式和地点
**主要观点**- 发言人2:反对K歌吃饭(太俗),建议去郊区农家体验
- 发言人3:同意郊区,要有山有水,做对抗性活动
- 发言人4:郊区参与性强,一两天时间合适
**结论/决议**:去北京郊区(门头沟/延庆/房山等),一两天行程

## 四、行动项
| 序号 | 任务内容 | 负责人 | 截止时间 | 备注 |
|------|----------|--------|----------|------|
| 1 | 向领导申请团建经费 | 发言人1 | 待定 | 公司报销 |
| 2 | 调研郊区团建场地 | 发言人2 | 待定 | 含农家、CS、水上乐园 |

## 五、待确认事项
- 具体出行日期待定
- 团建预算待领导审批

踩坑提醒

  • 输入文本质量很重要:录音转写如果有大量错别字或噪音,输出质量会下降。建议先用 ASR 工具做一次清洗。
  • 多人发言识别:如果录音转写没有标注发言人,Skill 会尽力推断,但准确率会降低。
  • 长会议分段处理:超过 30 分钟的会议文本建议分段输入,避免上下文过长导致遗漏。

📰 实战案例 2:AI 日报 Skill

这个 Skill 更有意思——它不只是处理文本,还能自动抓取网页、智能摘要、生成 HTML 页面

核心思路

抓取新闻源 → 智能过滤 → 生成中文摘要 → 渲染为精美 HTML 页面

SKILL.md 关键部分

---
name: tian-ai-daily
description: 甜甜每日AI新闻概览。当用户想要获取AI新闻、行业动态、
  科技资讯时使用此技能。
---

# 甜甜AI日报

## 资讯源
- TechCrunch: https://techcrunch.com/category/artificial-intelligence/
- The Verge: https://www.theverge.com/ai-artificial-intelligence
- Hacker News: https://news.ycombinator.com/

## 工作流程

### 步骤1: 资讯抓取
使用 WebFetch 工具抓取各媒体网站

### 步骤2: 内容筛选
- 提取标题、链接、发布时间
- 评估文章质量(评论数、热度)
- 过滤非 AI 相关内容

### 步骤3: 摘要生成
- 每条资讯提炼 50-100 字核心要点
- 使用简洁的中文表达
- 标注关键词标签(#大模型 #融资 #开源 等)

### 步骤4: HTML 生成
运行脚本生成精美页面:
!`python ${CLAUDE_SKILL_DIR}/scripts/generate_html.py`

亮点解析

  1. 动态上下文注入!command`` 语法在 Skill 加载前执行 shell 命令,将输出注入 prompt(⚠️ 这是 Claude Code 特有功能)
  2. 脚本集成:Skill 不只是 Prompt,还能跑 Python 脚本生成可视化输出
  3. 路径变量${CLAUDE_SKILL_DIR} 自动解析为当前 Skill 的目录路径(⚠️ Claude Code 特有变量)

关于 HTML 生成脚本

HTML 生成的核心逻辑是:用 Python 读取新闻数据 → 渲染卡片式 HTML → 输出为独立文件。脚本使用 Python 内置库(jsonosdatetime),无需额外安装依赖。

💡 由于篇幅限制,完整的 generate_html.py 脚本和 HTML 模板代码较长,建议直接参考项目仓库中的实际文件。核心思路是:定义卡片模板 → 遍历新闻数据填充 → 写入 HTML 文件。


🚀 高级技巧:让 Skill 更强大

技巧 1:动态上下文注入(Claude Code 特有)

在 Skill 加载前执行 shell 命令,把实时数据注入 prompt:

## 当前代码变更

以下是未提交的 git diff:

!`git diff HEAD`

请分析这些变更的风险点。

原理!`command` 在 Skill 发送给 AI 之前执行,AI 看到的是命令的输出,而不是命令本身。

实际应用场景

  • 代码审查:自动注入 git diff,AI 直接分析变更
  • PR 总结:自动注入 gh pr diff,AI 生成 PR 描述
  • 环境检查:自动注入 node --versionpython --version

技巧 2:参数传递(Claude Code 特有)

让 Skill 接受参数,变成通用工具:

---
name: fix-issue
description: 修复 GitHub Issue
---

修复 GitHub Issue #$ARGUMENTS,遵循我们的编码规范。

检查要点:
1. 问题根因分析
2. 最小化修复方案
3. 添加测试用例

使用/fix-issue 123 → AI 收到 "修复 GitHub Issue #123..."

索引参数$0$1$2 可以获取各个位置的参数。

技巧 3:控制调用方

有些 Skill 不应该让 AI 自动触发:

---
name: deploy
description: 部署应用到生产环境
disable-model-invocation: true   # 只能用户手动调用
allowed-tools:
  - "Bash(kubectl *)"
  - "Bash(docker *)"
---

场景:部署、发布、删除数据等有副作用的操作,必须由人类显式触发。

💡 踩坑经验:我曾经把一个数据迁移的 Skill 没加 disable-model-invocation: true,结果 AI 在我讨论数据库方案的时候自动触发了它。幸好只是 dry-run 模式,但这个教训让我记住了:有副作用的 Skill 一定要加这个字段

技巧 4:子代理隔离执行(Claude Code 特有)

---
name: research
description: 深度研究某个技术主题
context: fork          # 在隔离的子代理中运行
agent: Explore         # 使用内置的 Explore 代理
---

优势

  • 不污染主对话上下文
  • 使用专门优化过的代理(如 Explore 只读代理)
  • 结果会被总结后返回主对话

技巧 5:支持文件组织复杂 Skill

---
name: code-review
description: 代码审查
---

# 代码审查

审查代码变更,关注以下维度:

1. **安全性** - 参考 ${CLAUDE_SKILL_DIR}/rules/security.md
2. **性能** - 参考 ${CLAUDE_SKILL_DIR}/rules/performance.md
3. **可维护性** - 参考 ${CLAUDE_SKILL_DIR}/rules/maintainability.md

输出格式参考:${CLAUDE_SKILL_DIR}/templates/report.md

好处:主文件保持简洁,详细规则放在支持文件中,AI 只在需要时加载。


💡 设计模式:如何设计一个好的 Skill?

模式 1:单一职责原则

好的拆分

  • meeting-minutes/ → 生成会议纪要
  • code-review/ → 代码审查
  • deploy/ → 部署
  • changelog/ → 生成变更日志

坏的设计

  • all-in-one-assistant/ → 会议 + 代码 + 部署 + 日报...

一个 Skill 只做一件事。如果你发现 description 里写了"当用户需要 A 或 B 或 C 时",说明这个 Skill 需要拆分。

模式 2:参考内容 vs 任务内容

类型特征适合场景调用方式
参考内容添加知识,增强上下文编码规范、架构文档、领域知识AI 自动加载
任务内容执行具体操作的步骤部署流程、发布检查、代码生成用户手动 /skill

参考内容示例

---
name: coding-standards
description: 团队编码规范
user-invocable: false    # 用户不需要手动调用
---

# 编码规范
- 使用 TypeScript strict 模式
- 函数命名使用 camelCase
- 组件命名使用 PascalCase

任务内容示例

---
name: deploy
description: 部署应用
disable-model-invocation: true   # 必须手动触发
context: fork                    # 隔离执行
---

# 部署流程
1. 运行测试
2. 构建镜像
3. 推送 registry
4. 更新 k8s 部署

模式 3:Skill 组合(乐高模式)

Skills 可以像乐高一样组合使用(Claude Code 支持同时加载多个 Skill):

/code-review /fix-issue 123

这会同时加载 code-reviewfix-issue 两个 Skill,123 作为参数传递给最后一个。

组合场景

  • /summarize-changes + /code-review → 先总结变更,再审查代码
  • /research + /implement → 先研究方案,再实现代码

🎯 Token 消耗与优化

这是一个容易被忽视但非常重要的知识点。

Skill 的生命周期

用户调用 /skill-name
       ↓
SKILL.md 内容渲染(变量替换、命令执行)
       ↓
渲染后的内容作为一条消息进入对话上下文
       ↓
在后续所有对话轮次中持续存在
       ↓
上下文压缩时,每个 Skill 保留前 5000 tokens
       ↓
多个 Skill 共享 25000 tokens 的预算(优先保留最近使用的)

⚠️ 以上数字基于 Claude Code 2026 年 7 月的文档,具体数值可能因版本更新而变化,请以官方文档为准。

这意味着

  • Skill 的每一行都是持续的 token 成本
  • 要像写 CLAUDE.md 一样保持简洁
  • 说"做什么",而不是"为什么这么做"
  • 大量参考资料放在支持文件中,按需加载

优化建议

策略做法效果
精简正文删除冗余解释,只保留指令减少 token 消耗
外置参考大段参考内容放到支持文件按需加载,不占常驻 token
合理描述description 控制在 200 字以内避免 Skill 列表被截断
控制数量不常用 Skill 设为手动触发减少自动加载的开销

🧪 评估与迭代:怎么知道 Skill 好不好用?

评估维度

维度检查点
触发准确性AI 在该用的时候用了?不该用的时候没用?
输出质量输出符合预期?格式正确?
Token 效率Skill 加载后消耗的 token 是否合理?

手动评估方法

  1. 收集几个真实 prompt
  2. 在有 Skill 和无 Skill 的情况下分别运行
  3. 对比输出质量
  4. 用新会话测试(避免上下文干扰)

使用 skill-creator 插件(Claude Code)

Anthropic 官方提供了 skill-creator 插件,可自动化评估流程。安装后运行 evaluate my skill with skill-creator,它会:

  1. 编写测试用例:存储在 evals/evals.json
  2. 隔离运行:每个用例在独立子代理中执行
  3. 自动评分:检查输出是否符合断言
  4. 基准对比:有 Skill vs 无 Skill 的效果对比
  5. 版本对比:A/B 测试两个版本

💡 插件的具体安装命令可能随版本更新,请参考 Anthropic 官方插件文档 获取最新安装方式。

常见问题排查

问题可能原因解决方案
Skill 不触发description 缺少关键词补充用户会说的关键词
触发太频繁description 太宽泛使描述更精确,或加 disable-model-invocation: true
输出不稳定指令不够具体添加更多约束和示例
描述被截断Skill 太多,超出预算提升 skillListingBudgetFraction 设置

🔗 与 MCP、Memory 的关系

2026 年的 AI 工具生态中,有三个核心概念经常被混淆:

概念定义类比
MCP (Model Context Protocol)Anthropic 推出的开放协议,标准化 AI 与外部工具/数据源的连接方式AI 的"USB 接口"
Memory持久化记忆,跨会话记住你的偏好和上下文AI 的"长期记忆"
Skills可复用的指令集,封装专业能力AI 的"技能包"

三者协同

  • MCP 让 AI 能访问数据库、API、文件系统(通过标准化的 Server/Client 架构)
  • Memory 让 AI 记住你的项目背景、编码偏好
  • Skills 让 AI 知道如何专业地完成特定任务

💡 一个完整的 AI 工作流:Memory 提供上下文 → Skills 提供方法论 → MCP 提供工具能力。


📊 总结:Skills 精华速查表

主题核心要点
是什么可复用的模块化指令集,SKILL.md 是入口
为什么把重复 Prompt 固化,提升效率和一致性
怎么写YAML frontmatter(元数据)+ Markdown 正文(指令)
关键字段description(触发依据)、disable-model-invocation(调用控制)
高级技巧动态注入、参数传递、子代理隔离(均为 Claude Code 特有)
设计原则单一职责、参考 vs 任务分离、乐高式组合
存放位置企业级 > 个人级 > 项目级 > 嵌套级
优化要点精简正文、外置参考、控制数量

🎬 最后的话

2026 年,用 AI 的人分成了两批:

  • 第一批:每次打开对话框,第一句都在解释"我是谁、我在做什么"。AI 每次都像一个新来的实习生,什么都不知道。
  • 第二批:打开就能干活。AI 知道你是谁,有你的工作技能(Skills),有你的记忆(Memory),有你的工具(MCP)。

Skills 就是从第一批人进化到第二批人的关键一步。

从今天开始,把你最常重复的那件事,封装成第一个 Skill 吧。


🔗 参考资料


如果觉得有帮助,欢迎点赞收藏,后续会分享更多 AI Agent 实战内容。

💬 你在工作中最想把哪件事封装成 Skill?评论区聊聊,说不定下一篇就写你的需求!