06b - Claude Code Skills 创建教程
本文是《AI Agent 实战手册》第 6 章第 2 节。 上一节:工具到 Skills 的概念层次 | 下一节:Kiro Skills 创建教程
概述
Claude Code Skills 是 Anthropic 推出的可复用能力扩展机制,允许开发者将指令、脚本和资源文件打包为一个文件夹,Claude 在遇到相关任务时自动发现并加载。Skills 遵循开放的 Agent Skills 标准(agentskills.io),可跨平台使用。本节将从零开始,手把手教你创建、配置、测试和分发 Claude Code Skills,并提供多个完整可用的实战示例。
1. Skills 核心概念
什么是 Skill
一个 Skill 本质上是一个文件夹,其中包含一个必需的 SKILL.md 文件和可选的辅助资源。SKILL.md 顶部使用 YAML frontmatter 定义元数据,正文用 Markdown 编写指令。Claude 通过语义匹配自动判断何时加载某个 Skill——你只需描述清楚 Skill 的用途,Claude 就能在合适的时机自动激活它。
Skill vs Slash Command vs CLAUDE.md
| 维度 | CLAUDE.md | Slash Command(旧) | Skill |
|---|---|---|---|
| 加载时机 | 始终加载到上下文 | 手动 /command 触发 | 自动发现 + 手动 /skill-name |
| 上下文占用 | 始终占用 | 调用时占用 | 渐进式加载(元数据 ~100 tokens) |
| 文件格式 | 纯 Markdown | 纯 Markdown | YAML frontmatter + Markdown |
| 辅助文件 | 不支持 | 不支持 | 支持(脚本、模板、参考文档) |
| 子代理执行 | 不支持 | 不支持 | 支持(context: fork) |
| 工具权限控制 | 不支持 | 不支持 | 支持(allowed-tools) |
| 参数传递 | 不支持 | 支持 $ARGUMENTS | 支持 $ARGUMENTS、$0、$1 等 |
| 团队共享 | Git 提交 | Git 提交 | Git 提交 + 插件分发 |
注意:截至 2026 年,Claude Code 已将 Slash Commands 统一到 Skills 体系中。如果一个 Skill 和一个旧 Command 同名,Skill 优先。旧的
.claude/commands/目录仍然兼容,但推荐迁移到 Skills。
渐进式加载机制
Skills 采用三级渐进式加载,高效管理上下文窗口:
第 1 级:元数据(~100 tokens)
└── name + description → Claude 判断是否相关
第 2 级:完整指令(SKILL.md 正文)
└── 相关时加载详细指令
第 3 级:辅助资源(按需)
└── 模板、脚本、参考文档等上下文预算默认为上下文窗口的 2%(回退值 16,000 字符)。如果 Skill 数量过多导致超出预算,可通过环境变量 SLASH_COMMAND_TOOL_CHAR_BUDGET 调整。
工具推荐
| 工具 | 用途 | 价格 | 适用场景 |
|---|---|---|---|
| Claude Code | Skills 的原生运行环境 | Pro $20/月,Max $100-200/月 | 创建和使用 Skills |
| Claude.ai(Web/App) | 上传自定义 Skill 到云端 | Pro $20/月起(需启用代码执行) | 非终端用户使用 Skills |
| Agent Skills 标准 | 跨平台 Skill 规范 | 免费(开放标准) | 编写可移植的 Skills |
| Claude Plugin Hub | 社区 Skill 分享平台 | 免费 | 发现和分享 Skills |
2. 文件结构与存放位置
Skill 目录结构
每个 Skill 是一个独立文件夹,SKILL.md 是唯一必需文件:
my-skill/
├── SKILL.md # 核心文件(必需):元数据 + 指令
├── template.md # 可选:Claude 填充的模板
├── examples/
│ └── sample.md # 可选:期望输出的示例
├── scripts/
│ └── validate.sh # 可选:Claude 可执行的脚本
└── reference.md # 可选:详细参考文档在 SKILL.md 中引用辅助文件,让 Claude 知道它们的用途:
## 附加资源
- 完整 API 文档见 [reference.md](reference.md)
- 使用示例见 [examples/sample.md](examples/sample.md)
- 验证脚本:`scripts/validate.sh`存放位置与作用域
| 级别 | 路径 | 作用域 | 优先级 |
|---|---|---|---|
| 企业级 | 通过 Managed Settings 配置 | 组织内所有用户 | 最高 |
| 个人级 | ~/.claude/skills/<skill-name>/SKILL.md | 你的所有项目 | 高 |
| 项目级 | .claude/skills/<skill-name>/SKILL.md | 仅当前项目 | 中 |
| 插件级 | <plugin>/skills/<skill-name>/SKILL.md | 插件启用的项目 | 命名空间隔离 |
优先级规则:同名 Skill 按 企业 > 个人 > 项目 的优先级覆盖。插件 Skill 使用 plugin-name:skill-name 命名空间,不会与其他级别冲突。
Monorepo 自动发现
Claude Code 支持从嵌套目录自动发现 Skills。例如,当你编辑 packages/frontend/ 下的文件时,Claude 也会查找 packages/frontend/.claude/skills/ 中的 Skills。这对 monorepo 项目非常友好。
通过 --add-dir 添加的目录中的 Skills 也会被自动加载,并支持实时变更检测——编辑 Skill 文件后无需重启会话。
3. SKILL.md 语法详解
YAML Frontmatter
SKILL.md 顶部使用 --- 包裹的 YAML 块定义元数据:
---
name: my-skill
description: What this skill does and when to use it
argument-hint: "[issue-number]"
disable-model-invocation: false
user-invocable: true
allowed-tools: Read, Grep, Bash(npm *)
model: sonnet
context: fork
agent: Explore
hooks:
# Skill 生命周期 hooks
---Frontmatter 字段参考
| 字段 | 必需 | 说明 | 默认值 |
|---|---|---|---|
name | 否 | Skill 显示名称。省略时使用目录名。仅允许小写字母、数字和连字符,最长 64 字符 | 目录名 |
description | 推荐 | Skill 的用途和触发条件。Claude 用此判断何时加载。省略时使用正文第一段 | — |
argument-hint | 否 | 自动补全时显示的参数提示,如 [filename] [format] | — |
disable-model-invocation | 否 | 设为 true 阻止 Claude 自动触发,仅允许手动 /name 调用 | false |
user-invocable | 否 | 设为 false 从 / 菜单隐藏,仅 Claude 可自动调用 | true |
allowed-tools | 否 | Skill 激活时 Claude 可免确认使用的工具列表 | — |
model | 否 | Skill 激活时使用的模型 | 当前模型 |
context | 否 | 设为 fork 在独立子代理上下文中运行 | 内联 |
agent | 否 | context: fork 时使用的子代理类型(Explore、Plan 或自定义) | 通用 |
hooks | 否 | Skill 生命周期 hooks 配置 | — |
Markdown 正文
Frontmatter 之后是 Markdown 正文,包含 Claude 执行 Skill 时遵循的详细指令。正文内容在 Skill 被触发时加载到上下文中。
两种典型内容模式:
参考型内容——添加 Claude 应用到当前工作的知识(编码规范、设计模式、领域知识):
---
name: api-conventions
description: API design patterns for this codebase
---
编写 API 端点时:
- 使用 RESTful 命名规范
- 返回一致的错误格式
- 包含请求验证任务型内容——给 Claude 逐步执行的指令(部署、提交、代码生成):
---
name: deploy
description: Deploy the application to production
context: fork
disable-model-invocation: true
---
部署应用到生产环境:
1. 运行测试套件
2. 构建应用
3. 推送到部署目标字符串替换变量
Skills 支持动态值替换:
| 变量 | 说明 | 示例 |
|---|---|---|
$ARGUMENTS | 调用时传入的所有参数 | /fix-issue 123 → $ARGUMENTS = 123 |
$ARGUMENTS[N] | 按索引访问参数(0-based) | $ARGUMENTS[0] = 第一个参数 |
$N | $ARGUMENTS[N] 的简写 | $0 = 第一个参数 |
${CLAUDE_SESSION_ID} | 当前会话 ID | 用于日志、会话关联 |
动态上下文注入
使用 !command“ 语法在 Skill 内容发送给 Claude 之前执行 shell 命令,输出替换占位符:
---
name: pr-summary
description: Summarize changes in a pull request
context: fork
agent: Explore
allowed-tools: Bash(gh *)
---
## PR 上下文
- PR diff: !`gh pr diff`
- PR 评论: !`gh pr view --comments`
- 变更文件: !`gh pr diff --name-only`
## 你的任务
总结这个 PR 的变更...这是预处理——命令在 Claude 看到内容之前执行,Claude 只看到最终结果。
4. 激活触发器与调用控制
三种触发模式
Skills 的触发由两个 frontmatter 字段控制:
| Frontmatter 配置 | 用户可调用 | Claude 可自动调用 | 上下文加载行为 |
|---|---|---|---|
| (默认) | ✅ /skill-name | ✅ 自动 | description 始终在上下文中,触发时加载完整内容 |
disable-model-invocation: true | ✅ /skill-name | ❌ | description 不在上下文中,手动调用时加载 |
user-invocable: false | ❌ | ✅ 自动 | description 始终在上下文中,触发时加载完整内容 |
何时使用哪种模式
默认模式(双向触发)——适合大多数 Skill:
---
name: code-reviewer
description: Review code for best practices and security issues
---仅手动触发——适合有副作用的操作(部署、发消息、提交):
---
name: deploy
description: Deploy the application to production
disable-model-invocation: true
---你不希望 Claude 因为”代码看起来准备好了”就自动部署。
仅 Claude 触发——适合背景知识(不是用户可执行的动作):
---
name: legacy-system-context
description: Context about the legacy billing system architecture
user-invocable: false
---
/legacy-system-context对用户来说不是一个有意义的操作,但 Claude 在处理相关代码时需要这些知识。
工具权限控制
使用 allowed-tools 限制 Skill 激活时 Claude 可使用的工具:
---
name: safe-reader
description: Read files without making changes
allowed-tools: Read, Grep, Glob
---支持通配符匹配:
Bash(npm *)— 只允许 npm 相关命令Bash(gh *)— 只允许 GitHub CLI 命令
Skill 权限管理
三种方式控制 Claude 对 Skills 的访问:
- 全局禁用:在
/permissions的 deny 规则中添加Skill - 按名称允许/拒绝:
# 只允许特定 Skills Skill(commit) Skill(review-pr *) # 拒绝特定 Skills Skill(deploy *) - 单个 Skill 隐藏:在 frontmatter 中设置
disable-model-invocation: true
5. 子代理执行模式
context: fork
添加 context: fork 让 Skill 在独立的子代理上下文中运行。Skill 内容成为驱动子代理的 prompt,子代理无法访问你的对话历史。
---
name: deep-research
description: Research a topic thoroughly
context: fork
agent: Explore
---
深入研究 $ARGUMENTS:
1. 使用 Glob 和 Grep 查找相关文件
2. 阅读并分析代码
3. 总结发现,附带具体文件引用执行流程:
- 创建新的隔离上下文
- 子代理接收 Skill 内容作为 prompt
agent字段决定执行环境(模型、工具、权限)- 结果汇总后返回主对话
agent 字段选项
| 值 | 说明 |
|---|---|
Explore | 只读探索代理,适合代码分析和研究 |
Plan | 规划代理,适合任务分解和方案设计 |
| 通用(默认) | 完整权限的通用代理 |
| 自定义名称 | 使用 .claude/agents/ 中定义的自定义子代理 |
6. 测试与调试方法
操作步骤
步骤 1:创建 Skill 目录
# 项目级 Skill
mkdir -p .claude/skills/my-skill
# 个人级 Skill
mkdir -p ~/.claude/skills/my-skill步骤 2:编写 SKILL.md
cat > .claude/skills/my-skill/SKILL.md << 'EOF'
---
name: my-skill
description: Description of what this skill does
---
# 指令内容
...
EOF步骤 3:验证 Skill 被发现
在 Claude Code 中运行:
> 有哪些可用的 skills?或使用 /context 命令检查上下文中是否包含你的 Skill。
步骤 4:测试触发
- 手动触发:输入
/my-skill或/my-skill 参数 - 自动触发:输入与 description 语义匹配的请求,观察 Claude 是否自动加载
- 检查思考过程:在 Claude 的 thinking 中确认 Skill 是否被正确加载
步骤 5:迭代优化
- 如果 Skill 未触发:检查 description 是否包含用户自然会说的关键词
- 如果 Skill 触发过于频繁:让 description 更具体,或添加
disable-model-invocation: true - 如果 Skill 数量过多导致部分被排除:运行
/context检查警告,调整SLASH_COMMAND_TOOL_CHAR_BUDGET
提示词模板
请帮我调试 Skill [skill-name]:
1. 检查 SKILL.md 的 frontmatter 格式是否正确
2. 验证 description 是否清晰描述了触发条件
3. 确认所有引用的辅助文件路径正确
4. 用 [测试 prompt] 测试是否能正确触发7. 完整示例一:代码审查 Skill
场景
团队使用 Next.js + TypeScript + Prisma 技术栈,需要统一代码审查标准。每次审查都应检查类型安全、API 路由安全、数据库查询性能和测试覆盖。
文件结构
.claude/skills/code-reviewer/
├── SKILL.md
├── checklist.md
└── report-template.mdSKILL.md
---
name: code-reviewer
description: Review code for best practices, security issues, and performance in our Next.js + TypeScript + Prisma project. Use when reviewing PRs, analyzing code quality, or before merging.
allowed-tools: Read, Grep, Glob, Bash(git diff *)
---
# 代码审查指令
## 技术栈上下文
- Next.js 14 App Router
- TypeScript strict mode
- Prisma ORM + PostgreSQL
- Tailwind CSS
- Vitest + Playwright 测试
## 审查流程
1. **获取变更范围**:使用 `git diff` 或 Grep 确定变更文件
2. **逐文件审查**:按 [checklist.md](checklist.md) 逐项检查
3. **生成报告**:按 [report-template.md](report-template.md) 格式输出
## 审查重点
### 类型安全
- 禁止 `any` 类型(除非有充分理由并注释)
- 所有函数参数和返回值必须有类型注解
- 使用 Zod 进行运行时验证
### API 路由安全
- 所有 API 路由必须有输入验证
- 检查认证和授权中间件
- 错误响应不泄露内部信息
### 数据库查询
- 检查 N+1 查询(使用 `include` 而非循环查询)
- 事务操作使用 `$transaction`
- 大数据量查询使用分页
### 测试覆盖
- 新功能必须有对应单元测试
- API 路由必须有集成测试
- 关键路径必须有 E2E 测试
## 输出格式
按严重程度分类:
- 🔴 **必须修复**:安全漏洞、数据丢失风险、类型错误
- 🟡 **建议修复**:性能问题、代码规范违反
- 🟢 **可选优化**:代码风格、可读性改进
- ✅ **做得好的地方**:值得肯定的实践checklist.md
# 代码审查清单
## 必查项
- [ ] 无 `any` 类型
- [ ] API 路由有输入验证
- [ ] 敏感操作有认证检查
- [ ] 无硬编码密钥或凭证
- [ ] 错误处理完整(try-catch + 用户友好错误信息)
## 性能项
- [ ] 无 N+1 数据库查询
- [ ] 大列表使用虚拟滚动或分页
- [ ] 图片使用 next/image 优化
- [ ] 无不必要的客户端状态
## 测试项
- [ ] 新功能有单元测试
- [ ] API 变更有集成测试
- [ ] 测试覆盖率不低于现有水平report-template.md
# 代码审查报告
## 概要
- 审查范围:[文件数量] 个文件,[行数] 行变更
- 总体评价:[优秀/良好/需改进/需重写]
## 🔴 必须修复
1. [文件:行号] 问题描述 → 建议修复方案
## 🟡 建议修复
1. [文件:行号] 问题描述 → 建议修复方案
## 🟢 可选优化
1. [文件:行号] 优化建议
## ✅ 做得好的地方
1. [具体描述]使用方式
# 自动触发:Claude 在你请求代码审查时自动加载
> 审查一下最近的代码变更
# 手动触发
> /code-reviewer
# 带参数
> /code-reviewer src/app/api/8. 完整示例二:Git 提交规范 Skill
场景
团队使用 Conventional Commits 规范,每次提交需要自动分析变更、生成规范的提交信息,并在提交前运行 lint 和测试。
文件结构
.claude/skills/smart-commit/
├── SKILL.md
└── scripts/
└── pre-commit-check.shSKILL.md
---
name: smart-commit
description: Create a well-formatted git commit with conventional commit format. Use when committing code changes.
disable-model-invocation: true
allowed-tools: Read, Bash(git *), Bash(npm run lint *), Bash(npm test *)
argument-hint: "[commit-type] [optional-scope]"
---
# 智能提交指令
## 提交流程
### 第 1 步:分析变更
```bash
git diff --staged --stat
git diff --staged第 2 步:运行预提交检查
bash .claude/skills/smart-commit/scripts/pre-commit-check.sh第 3 步:生成提交信息
遵循 Conventional Commits 规范:
<type>(<scope>): <description>
<body>
<footer>type 类型:
feat: 新功能fix: 修复 bugdocs: 文档变更style: 代码格式(不影响逻辑)refactor: 重构(不新增功能也不修复 bug)perf: 性能优化test: 测试相关chore: 构建/工具变更
规则:
- description 使用英文,首字母小写,不加句号
- body 解释 WHY(为什么改),不是 WHAT(改了什么)
- 如果有 Breaking Change,在 footer 中标注
BREAKING CHANGE: - 如果参数中指定了 type,使用指定的 type
- scope 从变更文件的目录结构推断
第 4 步:执行提交
确认提交信息后执行:
git commit -m "<生成的提交信息>"示例
输入:/smart-commit feat api
分析 staged 变更后生成:
feat(api): add user authentication endpoint
Implement JWT-based authentication with refresh token support.
This enables secure API access for the mobile app client.
Closes #42
### scripts/pre-commit-check.sh
```bash
#!/bin/bash
# 预提交检查脚本
echo "🔍 运行预提交检查..."
# 检查是否有 staged 文件
STAGED=$(git diff --staged --name-only)
if [ -z "$STAGED" ]; then
echo "❌ 没有 staged 文件。请先 git add。"
exit 1
fi
# 运行 lint(如果有配置)
if [ -f "package.json" ] && grep -q '"lint"' package.json; then
echo "📝 运行 lint..."
npm run lint --silent 2>&1 || echo "⚠️ Lint 发现问题"
fi
# 检查是否有调试代码
echo "🔎 检查调试代码..."
DEBUGS=$(git diff --staged | grep -n "console\.log\|debugger\|TODO\|FIXME\|HACK" || true)
if [ -n "$DEBUGS" ]; then
echo "⚠️ 发现可能的调试代码:"
echo "$DEBUGS"
fi
echo "✅ 预提交检查完成"使用方式
# 仅手动触发(disable-model-invocation: true)
> /smart-commit
> /smart-commit feat
> /smart-commit fix auth9. 完整示例三:代码库可视化 Skill(脚本型)
场景
快速了解一个新项目的文件结构、代码分布和技术栈组成。生成交互式 HTML 可视化报告,在浏览器中打开。
文件结构
~/.claude/skills/codebase-visualizer/
├── SKILL.md
└── scripts/
└── visualize.pySKILL.md
---
name: codebase-visualizer
description: Generate an interactive collapsible tree visualization of your codebase. Use when exploring a new repo, understanding project structure, or identifying large files.
allowed-tools: Bash(python *)
---
# 代码库可视化
生成交互式 HTML 树状视图,展示项目文件结构和代码分布。
## 使用方法
从项目根目录运行:
```bash
python ~/.claude/skills/codebase-visualizer/scripts/visualize.py .生成 codebase-map.html 并在浏览器中打开。
可视化内容
- 可折叠目录:点击文件夹展开/折叠
- 文件大小:每个文件旁显示大小
- 颜色编码:不同文件类型用不同颜色
- 目录汇总:显示每个文件夹的总大小
- 侧边栏统计:文件数、目录数、总大小、文件类型分布
> 这个示例展示了 Skills 的脚本执行能力——通过 `allowed-tools: Bash(python *)` 授权 Claude 运行 Python 脚本,生成可视化输出。脚本使用 Python 标准库,无需安装额外依赖。完整的 `visualize.py` 脚本可参考 [Claude Code 官方文档](https://docs.claude.com/en/docs/claude-code/skills)。
---
## 10. 高级模式与技巧
### Skill 组合
虽然 Skills 不能显式引用其他 Skills,但 Claude 可以自动组合多个 Skills。例如:
- 用户请求"审查代码并提交"
- Claude 先加载 `code-reviewer` Skill 执行审查
- 审查通过后加载 `smart-commit` Skill 生成提交
这种隐式组合是 Skills 最强大的特性之一。
### Hooks 集成
Skills 可以在 frontmatter 中定义生命周期 hooks,在特定事件时自动执行命令:
```yaml
---
name: auto-format
description: Auto-format code on save
hooks:
PreToolUse:
- matcher: Write
command: "npx prettier --write $FILE"
---分发策略
| 分发方式 | 适用场景 | 操作方法 |
|---|---|---|
| Git 提交 | 团队共享项目级 Skills | 将 .claude/skills/ 提交到版本控制 |
| 插件 | 跨项目分发 | 在插件中创建 skills/ 目录 |
| Managed Settings | 企业级统一部署 | 通过组织管理后台配置 |
| ZIP 打包 | 上传到 Claude.ai | 打包为 skill-name/SKILL.md 结构的 ZIP |
提示词模板
请帮我创建一个 Claude Code Skill:
- 用途:[具体任务描述]
- 触发方式:[自动/手动/仅 Claude]
- 需要的工具权限:[Read/Edit/Bash 等]
- 是否需要子代理执行:[是/否]
- 是否需要辅助文件:[模板/脚本/参考文档]
请生成完整的 SKILL.md 和所有辅助文件。实战案例:从零构建团队 Skills 库
场景
一个 3 人全栈团队,使用 Next.js + Prisma + PostgreSQL,需要建立统一的开发工作流。
第 1 步:规划 Skills 体系
.claude/skills/
├── code-reviewer/ # 代码审查(自动触发)
├── smart-commit/ # 智能提交(手动触发)
├── db-migration/ # 数据库迁移(手动触发)
├── api-generator/ # API 路由生成(手动触发)
├── project-context/ # 项目上下文(仅 Claude 触发)
└── test-generator/ # 测试生成(自动触发)第 2 步:创建项目上下文 Skill(背景知识型)
---
name: project-context
description: Context about our SaaS project architecture, tech stack, and conventions
user-invocable: false
---
# 项目上下文
## 技术栈
- Next.js 14 App Router + TypeScript 5.x
- Prisma ORM + PostgreSQL 16
- NextAuth.js v5 认证
- Tailwind CSS + shadcn/ui
- Vitest 单元测试 + Playwright E2E
## 目录结构约定
- `src/app/` — 页面和 API 路由
- `src/components/` — React 组件
- `src/lib/` — 工具函数和配置
- `prisma/` — 数据库 schema 和迁移
- `tests/` — E2E 测试
## 编码规范
- 组件使用函数式 + hooks
- 服务端操作使用 Server Actions
- 所有 API 输入使用 Zod 验证
- 错误处理使用自定义 AppError 类第 3 步:提交到 Git 并团队共享
git add .claude/skills/
git commit -m "chore: add team skills for code review, commit, and project context"
git push团队成员拉取代码后,Skills 自动生效。
案例分析
这个 Skills 库的设计遵循几个关键原则:
- 职责单一:每个 Skill 聚焦一个工作流,而非一个大而全的 Skill
- 触发模式合理:有副作用的操作(提交、迁移)设为手动触发,知识型内容设为仅 Claude 触发
- 渐进式构建:先从最常用的 2-3 个 Skill 开始,根据实际需求逐步添加
- 团队共享:通过 Git 版本控制,确保团队使用一致的工作流
避坑指南
❌ 常见错误
-
description 写得太模糊
- 问题:
description: "帮助处理代码"太宽泛,Claude 无法判断何时触发 - 正确做法:
description: "Review TypeScript code for type safety, security vulnerabilities, and performance issues in Next.js projects"包含具体关键词和场景
- 问题:
-
一个 Skill 做太多事
- 问题:一个 Skill 同时处理代码审查、测试生成和部署,指令模糊导致输出不一致
- 正确做法:拆分为多个专注的 Skills,利用 Claude 的自动组合能力
-
忘记设置
disable-model-invocation导致意外执行- 问题:部署 Skill 没有设置手动触发,Claude 在代码”看起来准备好了”时自动部署
- 正确做法:所有有副作用的操作(部署、发消息、删除)必须设置
disable-model-invocation: true
-
辅助文件路径错误
- 问题:SKILL.md 中引用了
template.md,但文件实际不存在或路径不对 - 正确做法:使用相对路径引用,并在测试时验证所有引用文件存在
- 问题:SKILL.md 中引用了
-
Skill 数量过多超出上下文预算
- 问题:创建了 50+ 个 Skills,部分被排除出上下文,导致无法触发
- 正确做法:定期审查 Skills 库,删除不再使用的 Skill;使用
/context检查是否有排除警告
-
在 SKILL.md 中写了过多内容
- 问题:把所有参考文档都塞进 SKILL.md,导致加载时占用大量上下文
- 正确做法:SKILL.md 只保留核心指令,详细参考文档放在辅助文件中,通过链接引用
✅ 最佳实践
- description 是最关键的字段——它决定 Claude 何时触发你的 Skill,要包含用户自然会说的关键词
- 从简单开始,先用纯 Markdown 指令验证效果,再逐步添加脚本和辅助文件
- 包含输入输出示例,帮助 Claude 理解期望的行为
- 明确标注 Skill 不能做什么,防止误用
- 使用
allowed-tools实施最小权限原则 - 将团队共享的 Skills 提交到 Git,个人偏好的 Skills 放在
~/.claude/skills/ - 测试时检查 Claude 的 thinking 过程,确认 Skill 被正确加载和执行
相关资源与延伸阅读
Skills 发现与安装
- Skills.sh — Vercel 推出的 Agent Skills 开放目录,支持一键安装到 Claude Code,被称为”AI Agent 的 npm”
- Playbooks.com Skills Directory — 按领域分类的 Agent Skills 目录,可直接浏览和安装
模板与示例
- Awesome Claude Skills — GitHub — 社区精选的 Claude Skills 集合,包含各种领域的 Skill 模板
- Claude Skills Starter Guide — Claudia Plus AI — Claude Skills 入门指南,包含实战示例
学习资源
- A First Principles Deep Dive into Claude Skills — Lee Han Chung — 从第一性原理深入理解 Claude Skills 的设计
- Claude Code Skills and Slash Commands Guide — OneAway — Skills 和 Slash Commands 的完整使用指南
- Agent Skills Open Standard — Agent Skills 开放标准规范,理解跨工具的 Skills 互操作性
社区
- r/ClaudeAI — Claude 用户社区,有 Skills 创建经验和模板分享
- Awesome Claude AI — Claude 生态资源聚合站,包含 Skills 专区
参考来源
- Extend Claude with skills - Claude Code 官方文档 (持续更新)
- How to create custom Skills - Claude 帮助中心 (持续更新)
- How to create Skills: Key steps, limitations, and examples - Anthropic Blog (2026-02)
- Claude Skills: The Complete Guide to Building Custom AI Capabilities - Tom Osman (2026-01)
- Claude Code Skills and Slash Commands: The Complete Guide - OneAway (2026-02)
- Claude Code Skills vs Slash Commands 2026 - YingTu AI (2026-01)
- Agent Skills Open Standard - agentskills.io (2025-12)
- Skills explained: How Skills compares to prompts, Projects, MCP, and subagents - Anthropic (2025-12)
- Claude Agent Skills Framework Guide - Digital Applied (2026-06)
- A First Principles Deep Dive into Claude Skills - Lee Han Chung (2025-10)
📖 返回 总览与导航 | 上一节:工具到 Skills 的概念层次 | 下一节:Kiro Skills 创建教程