去年我开始使用 Claude Code 进行代码审查,一个深刻的体会是:每次都要手动输入相同的检查项——错误处理、日志格式、注释完整性——一天下来,同样的流程重复几十遍。后来我接触到 Skills,将整套检查流程打包进去,现在只需说一句“审查这个分支”,Claude 就会自动按照标准执行。本文的核心目的就是详细介绍这一机制。
快速上手(3 分钟)
先从官方插件开始体验:
claude plugin install document-skills@anthropic-agent-skills
安装完成后,直接向 Claude 提问:
What skills are available?
接着就能用日常用语提出需求了,例如:
"帮我看看这个 PDF 里的表格"
无需记忆命令,更不用查阅文档,使用自然语言即可。
Skills 有什么用?
从实际应用来看,Skills 的价值体现在以下几个方面:
代码审查:以往需要手动逐一检查十几个项目,现在只需描述需求就能自动完成整个检查流程。
部署前检查:将环境变量、API Key、配置文件等必须核查的项封装成 Skill,几乎不会遗漏。
问题排查:团队的排查流程被固化下来,新人接手也不会毫无头绪。
团队协作:资深员工的经验不会因离职而流失,Skills 成为可重复利用的资产。
简而言之,就是把重复性工作流程转化为可调用的资产,需要时直接调用。
痛点
在没有 Skills 之前,以下问题想必屡见不鲜:
- 每次代码审查重复相同的检查,既耗时又易遗漏
- 部署前总是担心“是否遗漏了什么”
- 团队中每人有自己的检查清单,质量参差不齐
- 老员工离职,他们积累的经验也随之带走
借助 Skills,至少可以将这些重复劳动自动化。
什么是 Skill?
Skill 是 Claude Code 的扩展机制,可以理解为一个技能目录,其中包含一组指令,以及可选的模板、示例和脚本。它遵循 Agent Skills 标准。对于 Claude Code 而言,一个 Skill 至少需要包含一个 SKILL.md 文件;Claude 会根据 Skill 的名称和描述决定是否加载它。
Skill vs Slash Commands
Claude Code 内置了一些 Slash Commands,例如 /help、/compact,它们是固定入口。Skill 则不是命令,而是一组可被 Claude 自动发现和加载的规则。两者的区别简要如下:
- Slash Commands:手动输入后执行。
- Skills:Claude 根据上下文自动判断是否调用。
- 两者都能扩展 Claude Code,但属于不同机制。
Skill 的核心特点
按需加载(渐进式加载)
Claude Code 不会一次性加载所有 Skills,而是采用渐进式加载策略:
- 仅加载与当前请求相关的 Skills
- 通过匹配
description字段判断相关性 - 避免将不相关的 Skill 内容加载到上下文中
这种设计的优势显而易见:节省上下文预算、提高响应速度、减少无关信息干扰。
自动热重载
Skills 被修改后自动生效,无需重启会话:
- 个人 Skills(
~/.claude/skills/)修改后立即可用 - 项目 Skills(
.claude/skills/)修改后立即可用 - 插件 Skills 安装或更新后自动加载
命名空间隔离
- 手动安装的 Skills 直接使用名称,如
my-skill - 插件提供的 Skills 使用命名空间前缀,如
document-skills:pdf - 避免不同来源的 Skills 产生命名冲突
标准化格式
遵循 Agent Skills 标准:
- 至少需要一个
SKILL.md文件 - 可选的模板、示例和脚本
- 统一的 frontmatter 格式(
name、description)
Skill 的存放位置
Skill 共有三种存放位置:
| 位置 | 路径 | 适用范围 | 获取方式 |
|---|---|---|---|
| 个人 | ~/.claude/skills/ | 所有项目 | 手动创建 |
| 项目 | .claude/skills/ | 当前项目 | 手动创建 |
| 插件 | ~/.claude/plugins/cache/ | 所有项目 | 插件市场安装 |
核心原则很简单:无论哪种位置,每个 Skill 都要有自己的文件夹,而不是将 SKILL.md 直接扔进 skills/ 根目录。
关于插件 Skills
插件 Skills 是通过 Claude Code 插件市场安装的 Skill 集合。它们存储在 ~/.claude/plugins/cache/ 目录下,按市场和插件名组织。
插件 Skills 的特点:
- 命名空间:插件内的 Skills 使用命名空间前缀,例如
document-skills:pdf - 版本管理:每个插件安装后带有版本哈希,便于更新和回滚
- 批量安装:一个插件可以包含多个相关 Skills
- 自动发现:安装后自动被 Claude Code 识别和加载
示例路径结构:
~/.claude/plugins/cache/
└── anthropic-agent-skills/
└── document-skills/
└── /
└── skills/
├── xlsx/
├── docx/
├── pptx/
└── pdf/
插件 vs 手动 Skills 的对比:
| 特性 | 手动 Skills | 插件 Skills |
|---|---|---|
| 安装方式 | 手动复制/克隆 | 插件市场一键安装 |
| 版本管理 | 手动维护 Git | 自动版本控制 |
| 更新方式 | 手动 git pull | 插件更新机制 |
| 命名冲突 | 需自行避免 | 命名空间隔离 |
Skill 目录结构
一个完整的 Skill 目录结构如下:
my-skill/
├── SKILL.md # 主指令文件(必需)
├── template.md # Claude 填写的模板
├── examples/
│ └── sample.md # 示例输出
└── scripts/
└── validate.sh # Claude 可执行的脚本
SKILL.md 是入口文件,其他内容都可以按需添加,用来存放模板、示例或辅助脚本。
安装 Skill
安装他人的 Skill
Skill 本质上就是一个目录,“安装”的核心就是把完整的 Skill 目录放到 Claude Code 会扫描的位置。做法不止一种。
安装到个人技能库(所有项目可用):
mkdir -p ~/.claude/skills/
# 将 SKILL.md 和相关文件复制进去
安装到当前项目(仅当前项目可用):
mkdir -p .claude/skills/
# 将 SKILL.md 和相关文件复制进去
常见安装方式
除了手动复制,也可以直接参照社区仓库的方式安装。常见方式有以下几种:
方式 1:直接克隆整个仓库到技能目录
适合像 marketingskills 这类“一个仓库维护一组 Skill”的项目。
git clone https://github.com/coreyhaines31/marketingskills.git ~/.claude/skills/marketingskills
克隆完成后,按仓库说明直接使用,或者将其中需要的 Skill 单独整理到自己的目录里。
方式 2:复制仓库中的单个 Skill 目录
如果只需要其中一个 Skill,直接复制对应目录即可:
mkdir -p ~/.claude/skills/my-skill
# 将仓库中的某个 Skill 目录内容复制进来
方式 3:在项目内安装
如果这个 Skill 只服务于当前项目,放到项目目录更为合适:
mkdir -p .claude/skills/my-skill
方式 4:通过插件市场安装
对于官方或社区发布的插件包,可以通过插件市场安装:
# 安装插件(包含多个 Skills)
claude plugin install @
# 示例
claude plugin install document-skills@anthropic-agent-skills
插件安装后,Skills 会出现在 ~/.claude/plugins/cache/ 目录下,并被 Claude Code 自动识别。实际使用时,直接在提示中指名 Skill 即可,例如 “Use the PDF skill...”。
查看已安装的插件:
claude plugin list
关于“市场安装”
Claude Code 目前支持两种“市场”安装方式:
1. 插件市场(官方)
通过 claude plugin install 安装官方或社区认证的插件包,插件会自动管理版本和更新。
2. 第三方目录网站
社区里存在不少 Skill 仓库、集合仓库和第三方目录网站:
- 在 GitHub 搜索公开 Skill 仓库
- 在 skills.sh 这类第三方 Skill 目录站里搜索
- 使用像
marketingskills这样的 Skill 集合仓库 - 将常用 Skill 整理到自己的
~/.claude/skills/或项目内的.claude/skills/
对于第三方网站找到的 Skills,通常需要手动克隆或复制到 skills/ 目录。
创建自己的 Skill
自己编写一个 Skill 并不复杂,最小可用版本只需两步:
1. 创建 Skill 目录
mkdir -p ~/.claude/skills/my-skill
2. 编写 SKILL.md 文件
---
name: my-skill
description: 技能的描述,说明什么时候使用
---
你的技能指令...
SKILL.md 格式
一个 SKILL.md 通常包含两部分:
- YAML frontmatter:定义名称和描述
- Markdown 内容:Skill 的具体指令
Frontmatter 常用字段:
| 字段 | 说明 |
|---|---|
name | Skill 名称 |
description | 描述,帮助 Claude 判断何时使用 |
示例:
---
name: deploy
description: 部署应用到生产环境时使用
---
部署步骤:
1. 运行测试
2. 构建应用
3. 推送到部署目标
使用 Skill
自动触发
Skill 的主要价值在于自动触发。Claude 会根据请求和 Skill 的 description 自动匹配。
触发原理
当请求与某个 Skill 的描述相符时,Claude 会自动加载该 Skill。例如,如果一个 Skill 的描述是“解释代码工作原理”,当你问“这段代码是怎么工作的?”时,Claude 就可能调用这个 Skill 来完成任务。
提高触发率
- 在
description中包含用户可能提到的关键词 - 描述要具体,避免过于宽泛
- 清晰说明使用场景
手动触发
除了自动触发,也可以在提示中直接点名某个 Skill。例如:
Use the PDF skill to extract the form fields from this file.
这种方式适合以下场景:
- 明确知道要使用哪个 Skill
- 想降低自动匹配带来的歧义
- 需要更明确地约束执行流程
如果需要固定的 /xxx 入口,应该创建自定义 Slash Commands,而不是依赖 Skill 的自动触发。
更新 Skill
手动更新
直接编辑 Skill 文件是最直接的更新方式。
编辑个人 Skill:
# 使用你喜欢的编辑器
code ~/.claude/skills/my-skill/SKILL.md
# 或
vim ~/.claude/skills/my-skill/SKILL.md
编辑项目 Skill:
# 编辑项目内 Skill
code .claude/skills/my-skill/SKILL.md
手动更新的场景包括修复错误、调整 description 以提高触发率、优化指令内容、添加新的模板或示例等。
命令更新
如果 Skill 是从 GitHub 仓库克隆的,可以使用 Git 命令更新。
更新单个克隆的 Skill:
# 进入 Skill 目录
cd ~/.claude/skills/marketingskills
# 拉取最新代码
git pull origin main
批量更新所有克隆的 Skill:
# 在 skills 目录下遍历所有子目录
for dir in ~/.claude/skills/*/.git; do
repo=$(dirname "$dir")
echo "Updating $repo..."
cd "$repo" && git pull
done
更新 Fork 的 Skill:
cd ~/.claude/skills/my-forked-skill
# 添加上游仓库(如果还没添加)
git remote add upstream https://github.com/original-owner/skill-repo.git
# 拉取上游更新
git fetch upstream
git merge upstream/main
插件更新
通过插件市场安装的插件可以使用插件管理命令更新:
# 更新指定插件
claude plugin update @
# 示例
claude plugin update document-skills@anthropic-agent-skills
插件更新会下载最新版本并替换缓存中的旧版本,但更新后通常需要重启 Claude Code 才会生效。
更新生效
关于自动热重载:
- 个人 Skills(
~/.claude/skills/)修改后通常很快可用 - 项目 Skills(
.claude/skills/)修改后通常很快可用 - 插件 Skills 更新后建议重启 Claude Code
极少数情况下,如果修改没有自动重载,可以尝试退出当前会话重新启动:
# 按 Ctrl+D 退出当前会话,然后重新启动
claude
验证更新:
What skills are available?
确认 Skill 已出现在列表中,并且描述内容是最新的。
卸载 Skill
卸载手动安装的 Skill
直接删除对应目录:
# 删除个人 Skill
rm -rf ~/.claude/skills/
# 删除项目 Skill
rm -rf .claude/skills/
卸载插件
使用插件管理命令卸载:
# 卸载插件
claude plugin uninstall @
# 示例
claude plugin uninstall document-skills@anthropic-agent-skills
卸载插件会自动清理 ~/.claude/plugins/cache/ 下的相关文件。
查找 Skill
查看所有可用 Skill
最稳妥的办法是先查看已安装插件,再在会话中直接询问 Claude:
claude plugin list
然后在 Claude Code 里问一句:
What skills are available?
从哪里找社区 Skill
现在比较常见的来源有:
- 在 GitHub 搜索公开 Skill 仓库
- 在 skills.sh 这类第三方 Skill 目录站里搜索
- 使用像
marketingskills这样的 Skill 集合仓库 - 将常用 Skill 整理到自己的
~/.claude/skills/或项目内.claude/skills/
用第三方目录网站找 Skill
如果不想直接在 GitHub 里翻仓库,skills.sh 这类第三方目录站会更省事。它的好处是:可以直接按关键词搜索 Skill、能看到 Skill 的来源仓库和详情页、通常会直接给出安装命令。这类网站本身不是 Claude Code 官方内置功能,但在开源 Skill 生态中已经很常见,作为发现入口非常合适。
用元 Skill 先搜,再安装
除了自己去网站搜索,另一种更顺手的方式,是先安装一个专门“帮你找 Skill”的元 Skill。例如放置一个类似 find-skills 的 Skill,让 Claude 先根据你的需求去搜索相关 Skill,再把安装命令返回给你。一个典型流程是:先描述需求,比如“帮我找一个适合做 SEO 审计的 Skill”;让这个元 Skill 去搜索 skills.sh 或其他 Skill 来源;根据返回结果执行安装。
如果希望直接让 Claude 帮你完成整个过程,可以把这类元 Skill 设计成“两步走”:第一步搜索并列出候选 Skill,第二步确认后自动执行安装。需要注意的是,这种工作流通常是社区实践,不是 Claude Code 默认自带的官方命令。
管理 Skill
限制 Claude 使用 Skill
如果想完全禁用 Slash Commands,当前 CLI 提供的是 --disable-slash-commands。至于 Skill,本质上还是两件事:目录里有没有这个 Skill,以及 Claude 会不会在当前上下文里选中它。
高级使用建议
Skill 目录里除了 SKILL.md,还可以放置示例、模板、脚本和参考资料。任务稍微复杂一点时,这样组织会更加顺手:
- 在
SKILL.md里写清触发条件和步骤 - 把长模板拆到单独文件
- 把校验或辅助逻辑放到
scripts/目录
安全使用第三方 Skills
第三方 Skills 可以大幅提升效率,但也存在安全风险。安装前务必进行安全审查。
理解风险类型
| 风险类型 | 潜在危害 | 示例场景 |
|---|---|---|
| 数据泄露 | Skill 脚本读取并上传敏感文件、API Key、环境变量 | 脚本扫描 ~/.ssh/ 并发送到外部服务器 |
| 命令注入 | 恶意脚本执行破坏性系统命令 | rm -rf 删除项目文件、修改系统配置 |
| 供应链攻击 | 第三方仓库被植入恶意代码 | 流行 Skill 的维护者账号被盗 |
| 隐私追踪 | Skill 记录用户使用习惯和 Prompt 内容 | 将用户请求发送到分析服务 |
| 依赖混淆 | Skill 依赖的外部资源被劫持 | 模板中引用的外部 URL 被替换 |
安装前检查清单
在安装任何第三方 Skill 之前,按以下步骤逐一检查:
1. 验证来源可信度
# 检查仓库的 stars 数和维护者信誉
# 查看 GitHub 仓库的 stars、forks、最近活跃度
# 确认维护者是否有其他被认可的项目
评估标准:
- ✅ stars 数 > 100,有持续更新
- ✅ 维护者有其他高质量项目
- ⚠️ stars 数 < 10,需额外谨慎
- ❌ 长期未更新(超过 6 个月)
2. 阅读 SKILL.md 全文
- 理解 Skill 的功能描述
- 检查是否有可疑的外部链接
- 注意是否要求敏感权限
3. 审查 scripts/ 目录
# 查看 Skill 中的脚本内容
cat ~/.claude/skills//scripts/*.sh
cat ~/.claude/skills//scripts/*.py
危险信号:
- ❌ 包含
curl或wget下载外部文件 - ❌ 包含
rm、delete等删除操作 - ❌ 尝试访问
~/.ssh/、~/.aws/等敏感目录 - ❌ 尝试上传数据到外部服务器
4. 检查社区反馈
# 查看 GitHub Issues 和 Discussions
# 搜索 " security" 或 " malicious"
5. 验证插件来源
# 查看已安装插件的来源
claude plugin list
# 确认插件来自可信的市场
# 官方市场: anthropic-agent-skills
官方插件 vs 第三方 Skills
| 特性 | 官方插件 | 第三方 Skills |
|---|---|---|
| 安全审查 | ✅ 经过官方审核 | ❌ 无审查机制 |
| 信任度 | 高 | 需自行评估 |
| 版本控制 | 严格版本管理 | 依赖维护者 |
| 问责机制 | 明确的支持渠道 | 缺失 |
| 更新频率 | 定期安全更新 | 不确定 |
| 命名空间 | 使用前缀隔离 | 可能冲突 |
建议:优先使用官方插件,第三方 Skills 仅在充分验证后使用。
沙箱隔离策略
对于来源不明的 Skills,采用隔离策略降低风险:
1. 使用专用测试环境
# 在 Docker 容器中测试可疑 Skills
docker run -it --rm node:18 bash
# 在容器内安装并测试 Skill
2. 限制文件系统访问
# 为 Claude Code 创建专用的受限目录
mkdir -p ~/claude-sandbox
# 在该目录内运行 Claude Code
cd ~/claude-sandbox && claude
3. 定期审查已安装 Skills
# 列出所有已安装 Skills
ls -la ~/.claude/skills/
ls -la .claude/skills/
# 定期清理不用的 Skills
企业/团队安全策略
在企业环境或团队中使用 Skills 时:
1. 建立 Skill 审批流程
成员发现 Skill → 填写评估表 → 安全部审查 → 批准安装 → 定期审计
2. 维护团队 Skill 白名单
# 将团队认可的 Skills 放在共享仓库
# 团队成员从白名单安装,禁止自行安装第三方 Skills
3. 使用私有 Skill 注册表
# 搭建内部的 Skill 市场
# 所有 Skills 需通过安全审查才能上架
4. 监控 Skill 使用
# 记录 Skill 的安装、更新、卸载操作
# 定期审计 Skills 的使用情况
发现恶意 Skill 后的处理
如果怀疑某个 Skill 是恶意的:
1. 立即卸载
# 卸载插件
claude plugin uninstall @
# 删除手动安装的 Skill
rm -rf ~/.claude/skills/
rm -rf .claude/skills/
2. 检查系统痕迹
# 检查最近的文件修改
find ~/ -type f -mtime -1 -name "*"
# 检查网络连接
lsof -i -n -P | grep ESTABLISHED
3. 旋转敏感凭证
# 如果怀疑 API Key 或 Token 泄露,立即更换
# 旋转 SSH 密钥
# 更改密码
4. 报告问题
# 向 Skill 仓库提交 Issue
# 向 Claude Code 官方报告
# 通知社区
安全最佳实践
DO ✅:
- 优先使用官方插件
- 安装前完整阅读 SKILL.md
- 审查 scripts/ 目录的所有脚本
- 定期更新 Skills
- 在隔离环境测试可疑 Skills
- 建立团队的 Skill 管理规范
DON'T ❌:
- 不要安装来源不明的 Skills
- 不要跳过 scripts/ 审查
- 不要在生产环境直接使用未测试的 Skills
- 不要授予 Skills 不必要的权限
- 不要使用长期未维护的 Skills
快速安全检查命令
# 一键检查 Skill 的安全性
check-skill-security() {
local skill_path="$1"
echo "