最近,Claude Skills 在程序员圈子里变得很火。它是一种新的方法,能让大语言模型(LLM)学会完成特定任务,而不是只会泛泛地聊天。这篇文章会详细解释它背后的技术思路,并说明在真实项目里怎么用它来提高效率。
核心概念界定
Claude Skills 本质上是一套可以独立使用的智能工作流程包。它跟以前的插件不一样,也不是简单的函数调用,而是一个放在文件夹里的完整能力单元。这个单元通常包含三部分:
SKILL.md文件:这是最重要的部分,里面既有机器能读的配置信息(YAML格式),也有人写的操作说明。- 可选的辅助脚本:比如用 Python 或 Bash 写的小程序,用来干具体的活,像读文件、算数据等。
- 配套材料:比如模板、输入输出样例这些参考资料,帮助模型理解该怎么做。
这种设计用了“渐进式披露”的思路——就是说,Claude 不会一开始就加载所有技能,而是等到对话中明确需要某个功能时,才去读对应的文件。这样做既能省下宝贵的上下文空间,又能让回答更准。
解决的关键问题
过去用大模型时,开发者常常被几个问题困扰,而 Claude Skills 正好能对症下药。
| 老办法的麻烦 | 新办法怎么解决 |
|---|---|
| 每次都要复制粘贴一大段提示词 | 写一次存起来,以后自动用,不用重复写 |
| 团队里每个人输出的格式都不一样 | 用统一的流程,保证结果看起来一样 |
| 聊天框里塞满了不重要的内容 | 只在需要时加载相关技能,节省空间 |
| 模型不懂专业领域的规矩 | 给它专门教一遍,变成某个方向的“专家” |
常见的用途包括:
- 自动检查代码并给出符合团队标准的修改建议。
- 从 PDF、扫描件这类文档里把关键信息抽出来,整理成 Excel 表格或报告。
- 按照公司固定的格式写技术方案、接口文档。
- 扫描代码有没有安全漏洞,比如 SQL 注入、密码写死在代码里、没权限控制的接口等。
开发环境搭建
安装官方工具链
第一步是装 Anthropic 官方出的命令行工具 claude-code,它能让你在本地和 Claude 交互。
curl -fsSL https://claude.ai/install.sh | bash集成官方技能库
官方在 GitHub 上维护了一个高质量的技能集合(anthropics/skills),你可以直接通过内置的插件市场加进来。
/plugin marketplace add anthropic/skills或者,你也可以手动把它下载到本地的技能目录:
mkdir -p ~/.claude/skills
cd ~/.claude/skills
git clone https://github.com/anthropics/sskills.git official-skills注意:装完之后,记得关掉再重新打开 claude-code,不然新技能不会生效。实践案例:构建自定义安全审计技能
为了让大家看明白怎么做,我们一起来做一个叫“安全代码审查”的小工具。
目录结构初始化
先在本地创建一个文件夹放这个技能:
mkdir -p ~/.claude/skills/security-review
cd ~/.claude/skills/security-review编写技能定义文件 (SKILL.md)
在这个文件里,我们要告诉 Claude 具体该怎么做安全检查:
---
name: 安全代码审查
description: 对用户提交的源代码进行安全审计,重点关注SQL注入、硬编码凭证及未授权访问等高风险问题。
---
你现在是一位有多年经验的安全工程师,请按照下面的清单仔细检查用户给的代码:
✅ **检查清单**:
1. 有没有用字符串拼接的方式拼 SQL 语句?应该用参数化查询才安全。
2. 代码里是不是直接写了 API 密钥、密码或者其他敏感信息?
3. 像删除数据、导出用户信息这样的敏感操作,有没有做登录验证和权限判断?
4. 如果有文件上传功能,有没有限制只能传特定类型的文件,并且限制大小?
5. 日志里会不会不小心把用户的密码、身份证号之类的信息打出来?
📌 **输出要求**:
- 如果发现严重问题,用 🔴 标出来,并且告诉用户怎么改。
- 如果只是一般建议,用 🟡 标出来。
- 如果检查完没发现高危问题,就直接说“未检测到高危安全漏洞”。技能调用与效果验证
现在,我们在 claude-code 里发一段有问题的代码:
请对以下代码片段做安全审计:def user_login(request):
user = request.GET['username']
pwd = request.GET['password']
sql = f"SELECT * FROM accounts WHERE user='{user}' AND secret='{pwd}'"
# ... execute query ...Claude 看到这段代码后,会自动想到要用 security-review 这个技能,然后按我们定的规则输出:
🔴 高危漏洞:这里直接把用户输入拼进 SQL 语句里,攻击者可以轻易注入恶意代码。
修复建议:改成用参数化查询,比如cursor.execute("SELECT ... WHERE user=%s", (user,))。
🔴 高危漏洞:密码通过网址参数(GET)传过来,服务器日志可能会记下来,造成泄露。
修复建议:改成用 POST 方法提交,并且整个过程走 HTTPS 加密。
进阶应用:集成外部脚本
Claude Skills 不光能处理文字指令,还能调用外部的小程序,一起完成更复杂的任务。
举个例子,我们可以做一个“项目代码统计”技能,它的文件结构是这样的:
project-stats/
├── SKILL.md
└── scripts/
└── generate_report.py在 SKILL.md 里,我们这样写指令:
---
name: 项目代码统计
description: 分析当前项目根目录,生成代码行数和文件类型的统计报告。
tools: [bash, read, write]
---
请按下面步骤操作:
1. 运行 `scripts/generate_report.py` 这个脚本,让它数一数代码有多少行。
2. 把脚本打印出来的结果整理成一张好看的 Markdown 表格。对应的 Python 脚本 generate_report.py 长这样:
import os
from collections import Counter
def analyze_codebase(root_path='.'):
total_lines, file_types = 0, Counter()
for dirpath, _, filenames in os.walk(root_path):
for filename in filenames:
if filename.endswith(('.py', '.js', '.md')):
filepath = os.path.join(dirpath, filename)
try:
with open(filepath, 'r', encoding='utf-8') as f:
line_count = sum(1 for _ in f)
total_lines += line_count
ext = os.path.splitext(filename)[1]
file_types[ext] += line_count
except (OSError, UnicodeDecodeError):
continue
print(f"Total Lines: {total_lines}")
for extension, count in file_types.items():
print(f"{extension}: {count} lines")
if __name__ == "__main__":
analyze_codebase()当用户说“生成项目统计报告”时,Claude 会自己运行这个脚本,拿到原始数据后,再把它变成一张清晰易读的表格。
最佳实践建议
为了让技能更好用、更稳定,推荐大家注意这几点:
- 开头写清楚关键词:Claude 主要看技能描述的前 250 个字来决定要不要用它,所以要把最核心的功能词放前面。
- 一个技能只干一件事:如果任务太复杂,就拆成几个小技能,每个都简单明确,这样以后改起来也方便。
- 权限要写明白:在
SKILL.md的配置里,清楚写出这个技能需要哪些权限,比如能不能读文件、能不能执行命令。 - 用 Git 管理团队技能:大家共用的技能最好放到代码仓库里,这样谁改了都能看到,版本也好控制。
结论
Claude Skills 代表了人和 AI 协作方式的一次升级。它让我们从“每次都要教 AI 怎么做”变成“提前教会它一套固定流程”。通过把专业知识打包成一个个小模块,开发者可以把 Claude 从一个啥都知道一点但都不精的聊天机器人,变成一个在特定领域非常靠谱的助手。
接下来,还可以研究怎么让多个技能配合使用、怎么给技能写自动化测试,以及怎么把它嵌入到日常的开发流水线(CI/CD)里。