# Claude Code 技能(Skills)指南 ## 概述 Agent Skills(技能)是模块化的能力包,用于扩展 Claude 的功能。与斜杠命令不同,技能是由 Claude 根据用户请求**自动激活**的,而非用户显式调用。 ### 核心特性 - **模型调用**:Claude 根据任务上下文自主决定何时使用技能 - **可发现性**:Claude 通过技能的 description 了解何时使用 - **可共享**:通过 git 或插件在团队间分发 - **可组合**:多个技能可以协同处理复杂任务 ## 技能存储位置 | 类型 | 位置 | 适用场景 | |------|------|----------| | 个人技能 | `~/.claude/skills/` | 个人工作流、实验性技能、跨所有项目可用 | | 项目技能 | `.claude/skills/` | 团队工作流、项目特定专业知识、通过 git 自动共享 | | 插件技能 | 插件 `skills/` 目录 | 通过插件安装自动可用 | ## 技能文件结构 ### 基本结构 每个技能是一个包含 `SKILL.md` 文件的目录: ``` my-skill/ ├── SKILL.md # 必需:技能定义文件 ├── FORMS.md # 可选:专题文档 ├── REFERENCE.md # 可选:API 参考 └── scripts/ # 可选:辅助脚本 └── helper.py ``` ### SKILL.md 文件格式 ```yaml --- name: your-skill-name description: 简要描述技能的功能和使用场景。当用户需要...时使用。 allowed-tools: Read, Grep, Glob # 可选:限制可用工具 --- # 技能名称 ## 说明 提供清晰的分步指导。 ## 示例 展示具体的使用示例。 ``` ### 字段要求 | 字段 | 要求 | 限制 | |------|------|------| | `name` | 必需 | 小写字母、数字和连字符,最多 64 字符 | | `description` | 必需 | 描述功能和使用时机,最多 1024 字符 | | `allowed-tools` | 可选 | 逗号分隔的工具列表,限制技能可使用的工具 | ## Description 编写指南 > **关键原则**:`description` 是技能的**主要发现机制**,Claude 根据它决定何时使用技能。 ### 必须包含的内容 1. **技能做什么** - 核心功能描述 2. **什么时候使用它** - 明确的触发条件 3. **用户可能提到的关键词** - 帮助匹配用户请求 ### 示例对比 ❌ **太模糊**: ```yaml description: Helps with documents ``` ✅ **具体明确**: ```yaml description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction. ``` ✅ **另一个好例子**: ```yaml description: Analyze Excel spreadsheets, create pivot tables, and generate charts. Use when working with Excel files, spreadsheets, or analyzing tabular data in .xlsx format. ``` ## 渐进式披露 技能使用渐进式披露来高效管理上下文: - **SKILL.md** 仅在技能被触发时加载 - **附加文件**(如 FORMS.md、REFERENCE.md)仅在 Claude 需要时按需加载 这意味着你可以在技能目录中包含大量参考资料,而不会浪费上下文空间。 ## 快速开始 ### 创建个人技能 ```bash # 创建技能目录 mkdir -p ~/.claude/skills/commit-helper # 创建 SKILL.md 文件 cat > ~/.claude/skills/commit-helper/SKILL.md << 'EOF' --- name: commit-helper description: 从 git diff 生成清晰的提交信息。当编写提交信息或审查暂存变更时使用。 --- # 提交信息生成器 ## 说明 1. 运行 `git diff --staged` 查看变更 2. 我会建议一个提交信息,包含: - 50 字符以内的摘要 - 详细描述 - 受影响的组件 ## 最佳实践 - 使用现在时态 - 说明"做了什么"和"为什么",而非"怎么做" EOF ``` ### 创建项目技能 ```bash # 创建项目技能目录 mkdir -p .claude/skills/code-reviewer # 创建 SKILL.md 文件 cat > .claude/skills/code-reviewer/SKILL.md << 'EOF' --- name: code-reviewer description: 审查代码的最佳实践和潜在问题。当审查代码、检查 PR 或分析代码质量时使用。 allowed-tools: Read, Grep, Glob --- # 代码审查器 ## 审查清单 1. 代码组织和结构 2. 错误处理 3. 性能考虑 4. 安全隐患 5. 测试覆盖率 ## 说明 1. 使用 Read 工具查看目标文件 2. 使用 Grep 搜索模式 3. 使用 Glob 查找相关文件 4. 提供详细的代码质量反馈 EOF ``` ## 技能工作原理 ### 自动发现机制 Claude 自动发现三个位置的技能: - `~/.claude/skills/`(个人) - `.claude/skills/`(项目) - 已安装插件的技能目录 ### 查看可用技能 ``` 有哪些可用的技能? ``` 或 ``` 列出所有可用的技能 ``` ### 智能激活 技能通过 description 匹配自动激活: ``` # 用户请求 帮我从这个 PDF 中提取文本 # Claude 自动激活匹配的技能(如 pdf-processing 技能) ``` ## 工具限制 使用 `allowed-tools` 限制技能可以使用的工具: ```yaml --- name: safe-file-reader description: 只读方式访问文件。当需要只读文件访问且不进行修改时使用。 allowed-tools: Read, Grep, Glob --- ``` **适用场景**: - 只读技能(不应修改文件) - 限定范围技能(仅数据分析,不写文件) - 安全敏感工作流 ## 实用示例 ### 示例1:简单技能(单文件) ```yaml --- name: api-documenter description: 为 API 端点生成文档。当需要记录 REST API、GraphQL 接口或函数签名时使用。 --- # API 文档生成器 ## 说明 1. 分析代码中的 API 端点 2. 生成包含以下内容的文档: - 端点路径和方法 - 请求参数 - 响应格式 - 示例请求 ## 文档格式 使用 OpenAPI 3.0 规范格式。 ``` ### 示例2:带工具限制的技能 ```yaml --- name: safe-file-reader description: 只读方式访问文件。当需要只读文件访问且不进行修改时使用。 allowed-tools: Read, Grep, Glob --- # 安全文件读取器 ## 说明 此技能仅使用只读工具: - Read:读取文件内容 - Grep:搜索文件内容 - Glob:查找文件 ## 使用场景 - 代码审查(不修改) - 日志分析 - 配置检查 ``` ### 示例3:多文件技能 **目录结构:** ``` pdf-processing/ ├── SKILL.md ├── FORMS.md ├── REFERENCE.md └── scripts/ ├── fill_form.py └── validate.py ``` **SKILL.md:** ```yaml --- name: pdf-processing description: 提取文本、填写表单、合并 PDF。当处理 PDF 文件、表单或文档提取时使用。需要 pypdf 和 pdfplumber 包。 --- # PDF 处理 ## 快速开始 提取文本: ```python import pdfplumber with pdfplumber.open("doc.pdf") as pdf: text = pdf.pages[0].extract_text() ``` 表单填写请参阅 [FORMS.md](FORMS.md)。 详细 API 参考请参阅 [REFERENCE.md](REFERENCE.md)。 ## 依赖 ```bash pip install pypdf pdfplumber ``` ``` ### 示例4:数据库操作技能 ```yaml --- name: db-migration-helper description: 帮助创建和管理数据库迁移。当需要创建迁移脚本、修改数据库架构或执行数据迁移时使用。 --- # 数据库迁移助手 ## 支持的数据库 - PostgreSQL - MySQL - SQLite ## 迁移流程 1. 分析当前架构 2. 生成迁移脚本 3. 验证迁移安全性 4. 提供回滚方案 ## 最佳实践 - 始终创建回滚脚本 - 在测试环境先验证 - 大表修改分批进行 ``` ## 团队共享技能 ### 方式1:通过 Git(项目技能) ```bash # 添加到项目 mkdir -p .claude/skills/team-skill # 创建 SKILL.md... # 提交到仓库 git add .claude/skills/ git commit -m "添加团队技能" git push # 团队成员拉取后自动可用 git pull claude # 技能立即可用 ``` ### 方式2:通过插件(推荐) 1. 创建包含 `skills/` 目录的插件 2. 将插件添加到市场 3. 团队成员安装插件即可使用 ## 管理技能 ### 更新技能 ```bash # 编辑 SKILL.md code ~/.claude/skills/my-skill/SKILL.md # 重启 Claude Code 使更改生效 ``` ### 删除技能 ```bash # 删除个人技能 rm -rf ~/.claude/skills/my-skill # 删除项目技能 rm -rf .claude/skills/my-skill git commit -m "移除不再使用的技能" ``` ## 故障排除 ### Claude 没有使用我的技能 **检查1:Description 是否足够具体** - 包含 WHAT(做什么)和 WHEN(何时使用) - 使用用户可能提到的具体关键词 - 避免模糊描述 **检查2:YAML 语法是否有效** ```bash # 查看 frontmatter cat .claude/skills/my-skill/SKILL.md | head -n 15 # 常见问题: # - 缺少开头/结尾的 --- # - 使用 Tab 而非空格 # - 特殊字符未加引号 ``` **检查3:文件路径是否正确** ```bash # 个人技能 ls ~/.claude/skills/*/SKILL.md # 项目技能 ls .claude/skills/*/SKILL.md ``` **检查4:使用调试模式** ```bash claude --debug ``` ### 技能执行出错 - 检查依赖项是否已安装 - 确保脚本有执行权限:`chmod +x scripts/*.py` - 使用正斜杠路径:`scripts/helper.py` ✅(而非 `scripts\helper.py` ❌) ## 技能与斜杠命令的区别 | 方面 | Agent Skills | 斜杠命令 | |------|--------------|----------| | **调用方式** | 模型自动调用 | 用户显式调用(`/command`) | | **发现机制** | 基于 description | 基于 `/` 前缀 | | **复杂度** | 复杂能力包 | 简单提示 | | **文件结构** | 目录 + SKILL.md + 资源 | 单个 .md 文件 | | **适用场景** | 扩展 Claude 能力 | 快速重复任务 | **选择建议**: - 使用**斜杠命令**:快速、常用的提示(review、explain、optimize) - 使用 **Skills**:包含脚本、跨文件知识、团队标准化的综合工作流 ## 最佳实践 | 实践 | 说明 | |------|------| | **保持专注** | 一个技能解决一个能力(如"PDF 表单填充"而非"文档处理") | | **清晰描述** | 包含具体触发条件,如"当处理 Excel 文件、电子表格时使用" | | **测试验证** | 技能是否在预期情况下激活?说明是否清晰? | | **版本记录** | 在 SKILL.md 中记录版本历史 | ```markdown # 我的技能 ## 版本历史 - v2.0.0 (2025-10-01): 重大 API 变更 - v1.1.0 (2025-09-15): 添加新功能 - v1.0.0 (2025-09-01): 初始版本 ``` ## 相关资源 - [自定义斜杠命令指南](./01-自定义斜杠命令指南.md) - [Plugins 插件指南](./03-插件指南.md) - [Plugin Marketplaces 插件市场指南](./04-插件市场指南.md) - [官方文档:Agent Skills](https://code.claude.com/docs/en/skills)