大模型工具调用能力之三——Skills:模型能力的模块化专家技能,实现专业能力复用与扩展
一、Claude Skills 介绍
1. 核心定义
Claude Skills 是 Anthropic 为 Claude 推出的「模块化、可复用、可落地的能力扩展工具」,本质是用「YAML配置+Markdown流程+可选脚本」,将复杂操作、系统调用、业务流程封装成“能力包”,导入Claude后,通过自然语言触发,无需重复输入指令,支持联动外部工具、存量业务系统,实现“一次封装、终身复用”。
2. 核心价值(为什么要用)
- 高效复用:避免重复写复杂Prompt,一次封装,所有对话可触发
- 降低门槛:无需懂代码开发,复制模板修改即可,新手也能上手
- 功能扩展:联动存量业务系统、外部工具,让Claude适配实际工作流
- 稳定可控:流程化配置,输出结果更规范,避免Prompt触发偏差
3. 适用人群
开发者、运营、产品、行政等所有使用Claude的职场人,尤其适合需要高频处理标准化任务、联动业务系统的人群。
二、核心对比分析(一眼看懂优势)
很多人混淆Claude Skills、传统Prompt、MCP(工具调用),用表格清晰对比,重点看“实操差异”,快速选对工具:
|
对比维度 |
Claude Skills |
传统Prompt |
MCP(工具调用) |
|
核心本质 |
可复用的能力包(流程+配置+脚本) |
单次性自然语言指令 |
外部工具/系统的接口调用 |
|
复用性 |
一次封装,全局复用、跨对话可用 |
单次有效,需重复复制输入 |
一次配置,全局调用(仅工具本身) |
|
落地难度 |
低(复制模板修改,无需开发) |
极低(直接输入指令) |
中(需配置API、工具权限) |
|
适用场景 |
高频标准化任务、业务系统联动、复杂流程执行 |
临时、简单、一次性任务 |
需要实时数据、外部系统交互的任务 |
|
核心优势 |
高效、稳定、可扩展,适配实际工作流 |
便捷、无需准备,快速测试 |
突破Claude自身限制,联动外部资源 |
一句话总结:传统Prompt解决“临时需求”,MCP解决“工具调用需求”,Claude Skills解决“高频、规范、可复用的实操需求”,三者可协同使用(Skills可调用MCP,内部可嵌入Prompt)。
三、Claude Skills 核心
本质:以SKILL.md为核心的“可复用能力包”,用自然语言+简单脚本,封装操作流程/系统调用,导入Claude即可触发,无需重复输入指令,支持联动外部工具、存量业务系统。
标准文件结构:
my-skill/ # 技能目录(与name一致,小写横杠)
├── SKILL.md # 必需:核心配置+流程(YAML+Markdown)
├── scripts/ # 可选:辅助脚本(Python/Bash,复杂操作用)
└── references/ # 可选:参考文档(非必需,简化版可省略)
核心逻辑:YAML配置(触发+权限)+ Markdown流程(执行步骤+示例),无需复杂开发,复制模板修改即可。
四、4个可直接落地案例
所有案例均为完整可导入版本,打包成zip上传Claude即可启用,重点标注修改点(替换成自己的信息即可)。
案例1:基础款 - Git Commit规范生成(新手首选)
文件结构(极简,无需脚本)
git-commit-generator/
└── SKILL.md
SKILL.md(直接复制,无需修改)
---
name: git-commit-generator
description: 生成符合Conventional Commits规范的Git提交信息,触发词:git提交、commit、代码变更、提交信息
version: 1.0.0
allowed-tools: [Read] # 仅读取用户输入,无需其他权限
---
# Git Commit规范生成技能
## 核心规则(必遵守)
1. 格式:<type>(<scope>): <subject> (#issue)
2. type仅限:feat(新功能)、fix(修复bug)、docs(文档)、style(格式)、refactor(重构)、test(测试)、chore(构建)
3. subject≤50字,动词开头,无句号
4. scope(可选):修改模块(如auth、api);issue(可选):关联需求ID
## 执行步骤
1. 解析用户提供的代码变更描述
2. 判定type和scope(无则省略)
3. 生成符合规范的commit信息
4. 输出最终结果(加粗显示)
## 示例(直接参考)
输入:修复登录接口bug,关联#123
输出:`fix(auth): 修复登录接口bug (#123)`
输入:添加用户注册功能
输出:`feat(user): 添加用户注册功能`
使用步骤
- 创建上述文件夹和文件,复制代码粘贴
- 打包为zip(文件夹名必须是git-commit-generator)
- Claude → 设置 → Skills → 上传zip,启用技能
- 对话输入触发词,如“帮我写commit:修复文档排版错误”,自动输出规范内容
案例2:进阶款 - 会议纪要→行动项提取(带脚本,更稳定)
文件结构
meeting-notes-extractor/
├── SKILL.md
└── scripts/
└── extract_action.py
SKILL.md(复制即改,标注处可微调)
---
name: meeting-notes-extractor
description: 从会议文本中提取行动项、责任人、截止时间,触发词:会议纪要、行动项、待办提取、会议总结
version: 1.0.0
allowed-tools: [Read, Write, Bash] # 允许读取文件、执行脚本
---
# 会议纪要行动项提取技能
## 工作流程
1. 读取用户上传的会议文本(txt/docx均可)
2. 调用scripts/extract_action.py脚本,解析文本并结构化
3. 按表格格式输出行动项,补充3条以内核心会议结论
4. 若未识别到责任人/截止时间,标注“待补充”
## 输出固定格式
### 会议核心结论
- 结论1
- 结论2(无则省略)
### 待执行行动项
| 行动项 | 责任人 | 截止时间 |
| :--- | :--- | :--- |
| | | |
## 示例
输入:(上传会议文本)“今天讨论用户留存方案,A负责优化注册流程,3天内完成;B负责整理用户反馈,周五前提交;结论:优先推进注册流程优化”
输出:
### 会议核心结论
- 优先推进注册流程优化
### 待执行行动项
| 行动项 | 责任人 | 截止时间 |
| :--- | :--- | :--- |
| 优化注册流程 | A | 3天内 |
| 整理用户反馈 | B | 周五前 |
scripts/extract_action.py(复制即能用,无需修改)
def extract_action_items(meeting_text):
"""提取行动项、责任人、截止时间"""
import re
action_items = []
# 匹配“责任人+行动项+截止时间”格式(可根据自己的会议习惯微调正则)
patterns = [
r'([A-Za-z0-9\u4e00-\u9fa5]+)负责([^,。;!?]+),([^,。;!?]+内|周[一二三四五六日]前)',
r'([A-Za-z0-9\u4e00-\u9fa5]+)牵头([^,。;!?]+),([^,。;!?]+内|周[一二三四五六日]前)',
r'([A-Za-z0-9\u4e00-\u9fa5]+)跟进([^,。;!?]+),([^,。;!?]+内|周[一二三四五六日]前)'
]
for pattern in patterns:
matches = re.findall(pattern, meeting_text, re.DOTALL)
for match in matches:
person = match[0].strip()
action = match[1].strip()
deadline = match[2].strip()
action_items.append({"行动项": action, "责任人": person, "截止时间": deadline})
# 提取核心结论(匹配“结论:”“重点:”开头的内容)
conclusions = []
conclusion_patterns = [r'结论:([^,。;!?]+)', r'重点:([^,。;!?]+)']
for cp in conclusion_patterns:
conc_matches = re.findall(cp, meeting_text)
conclusions.extend([c.strip() for c in conc_matches])
# 控制结论不超过3条
conclusions = conclusions[:3]
return {"action_items": action_items, "conclusions": conclusions}
# 测试代码(可删除,不影响Skill运行)
if __name__ == "__main__":
test_text = "今天讨论用户留存方案,A负责优化注册流程,3天内完成;B负责整理用户反馈,周五前提交;结论:优先推进注册流程优化"
result = extract_action_items(test_text)
print("核心结论:", result["conclusions"])
print("行动项:", result["action_items"])
使用步骤
- 创建上述文件夹和两个文件,复制对应代码粘贴
- 打包为zip(文件夹名必须是meeting-notes-extractor)
- Claude → 设置 → Skills → 上传zip,启用技能
- 对话上传会议文本,输入触发词(如“提取会议行动项”),自动输出结构化结果
案例3:实战款 - 调用存量业务系统(CRM)实现自然语言问答(重点)
核心:通过Claude Skills联动企业存量CRM系统(以常见的简道云CRM为例,其他CRM可替换API),实现“自然语言提问→Skill调用API→返回结构化结果”,无需手动登录CRM,无需写代码,非技术人员也能落地。
前置准备(必做)
- 获取CRM系统API密钥(简道云:登录后台→设置→API接口→获取API Key和Secret)
- 确认CRM接口地址(简道云客户查询接口:https://api.jiandaoyun.com/api/v1/form/data/list)
- 记录CRM表单ID(查询客户信息的表单ID,简道云后台可查)
文件结构
crm-query-skill/
├── SKILL.md
└── scripts/
└── crm_api_call.py
SKILL.md(复制后,替换标注的API信息即可)
---
name: crm-query-skill
description: 调用存量CRM系统,通过自然语言查询客户信息(姓名/手机号/公司),触发词:CRM查询、客户查询、查客户信息、CRM客户查询
version: 1.0.0
allowed-tools: [Read, Bash, Write] # 允许读取输入、执行脚本、输出结果
---
# 存量CRM系统自然语言查询技能
## 核心目的
通过自然语言提问,自动调用CRM系统API,查询客户基础信息(姓名、手机号、公司、跟进状态),无需手动登录CRM,快速获取结果。
## 前置配置(替换为自己的CRM信息)
1. CRM_API_KEY: 你的CRM API Key(简道云为例)
2. CRM_API_SECRET: 你的CRM API Secret
3. CRM_FORM_ID: 你的CRM客户表单ID
4. API_URL: 你的CRM查询接口地址(简道云:https://api.jiandaoyun.com/api/v1/form/data/list)
## 工作流程
1. 解析用户自然语言提问,提取查询关键词(客户姓名/手机号/公司名称)
2. 调用scripts/crm_api_call.py脚本,传入关键词和CRM配置信息
3. 脚本调用CRM API,获取客户信息并结构化
4. 按固定格式输出查询结果,若未查询到客户,提示“未找到该客户,请核对关键词”
## 输出固定格式
### CRM客户查询结果
| 客户姓名 | 手机号 | 公司名称 | 跟进状态 | 跟进人 |
| :--- | :--- | :--- | :--- | :--- |
| | | | | |
### 备注
- 若部分字段为空,标注“未填写”
- 可输入“查询客户XXX(姓名/手机号)”触发查询
## 示例
输入:查询客户张三的信息
输出:
### CRM客户查询结果
| 客户姓名 | 手机号 | 公司名称 | 跟进状态 | 跟进人 |
| :--- | :--- | :--- | :--- | :--- |
| 张三 | 138XXXX1234 | XX科技有限公司 | 已跟进,待签约 | 李四 |
输入:查询手机号139XXXX5678的客户
输出:
### CRM客户查询结果
| 客户姓名 | 手机号 | 公司名称 | 跟进状态 | 跟进人 |
| :--- | :--- | :--- | :--- | :--- |
| 王五 | 139XXXX5678 | XX贸易公司 | 新客户,未跟进 | 赵六 |
scripts/crm_api_call.py(复制后,替换标注的CRM信息即可)
import requests
import hashlib
import time
def query_crm_customer(query_keyword):
"""
调用CRM API查询客户信息
query_keyword: 查询关键词(姓名/手机号/公司名称)
返回:结构化客户信息列表
"""
# 替换为自己的CRM配置(必改!)
CRM_API_KEY = "你的CRM API Key"
CRM_API_SECRET = "你的CRM API Secret"
CRM_FORM_ID = "你的CRM客户表单ID"
API_URL = "https://api.jiandaoyun.com/api/v1/form/data/list"
# 简道云API签名生成(其他CRM可替换签名逻辑)
timestamp = str(int(time.time() * 1000))
signature = hashlib.md5((CRM_API_KEY + timestamp + CRM_API_SECRET).encode("utf-8")).hexdigest()
# 请求头
headers = {
"Content-Type": "application/json",
"ApiKey": CRM_API_KEY,
"Timestamp": timestamp,
"Signature": signature
}
# 请求参数(根据自己的CRM字段调整,简道云为例)
payload = {
"form_id": CRM_FORM_ID,
"fields": ["客户姓名", "手机号", "公司名称", "跟进状态", "跟进人"], # CRM表单字段名,需与后台一致
"filter": {
"rel": "or",
"conds": [
{"field": "客户姓名", "type": "contain", "value": query_keyword},
{"field": "手机号", "type": "contain", "value": query_keyword},
{"field": "公司名称", "type": "contain", "value": query_keyword}
]
},
"page_size": 10, # 最多返回10条结果
"page_index": 1
}
try:
# 调用CRM API
response = requests.post(API_URL, json=payload, headers=headers)
response.raise_for_status()
data = response.json()
# 解析返回结果,结构化客户信息
customer_list = []
if data.get("data") and data["data"]["items"]:
for item in data["data"]["items"]:
customer = {
"客户姓名": item["fields"].get("客户姓名", "未填写"),
"手机号": item["fields"].get("手机号", "未填写"),
"公司名称": item["fields"].get("公司名称", "未填写"),
"跟进状态": item["fields"].get("跟进状态", "未填写"),
"跟进人": item["fields"].get("跟进人", "未填写")
}
customer_list.append(customer)
return customer_list
except Exception as e:
return f"CRM查询失败:{str(e)}"
# 测试代码(可删除,不影响Skill运行)
if __name__ == "__main__":
# 测试查询
result = query_crm_customer("张三")
print("CRM查询结果:", result)
使用步骤
- 创建上述文件夹和两个文件,复制代码后,替换crm_api_call.py和SKILL.md中“你的CRM信息”(API Key、Secret等)
- 确认CRM表单字段名与脚本中“fields”列表一致(不一致会导致查询失败)
- 打包为zip(文件夹名必须是crm-query-skill)
- Claude → 设置 → Skills → 上传zip,启用技能
- 对话输入触发词+查询关键词,如“查询客户张三”“查手机号138XXXX1234的客户”,自动调用CRM并返回结构化结果
备注:其他CRM(如Salesforce、企业自建CRM),只需替换脚本中的API地址、请求参数和签名逻辑,SKILL.md流程无需修改,适配所有存量业务系统。
五、实操避坑小结
- 1. 文件夹名必须与SKILL.md中“name”一致(小写横杠),否则上传失败
- 2. allowed-tools权限按需添加,无需多余权限(如仅读取输入,只写[Read])
- 3. 脚本中涉及API、密钥等敏感信息,可单独保存,避免泄露
- 4. 若Skill触发失败,优先检查:触发词是否匹配、文件夹结构是否正确、脚本无语法错误
更多推荐


所有评论(0)