Skills 自定义命令

创建和使用 Skills 扩展 Claude Code 功能

Skills 技巧

Skills 是 Claude Code 的知识层组件,为 Claude 提供特定领域的专业知识和指导。与需要手动调用的命令不同,Skills 会根据任务上下文自动激活。

什么是 Skills?

Skills 是存储在 SKILL.md 文件中的专业知识模块:

  • 自动激活:Claude 根据任务上下文自动使用相关 Skill

  • 领域知识:提供特定领域的最佳实践和指导

  • 可扩展:可以创建自定义 Skills 满足特定需求

  • 上下文感知:只在相关场景中被调用

Skills vs Commands vs Agents

组件 触发方式 用途
Commands 用户手动调用(/command 执行特定任务
Skills 自动激活 提供领域知识
Agents 委托调用 处理复杂工作流

使用内置 Skills

Claude Code 插件通常包含多个内置 Skills。当你的任务匹配 Skill 的描述时,Claude 会自动使用它。

示例:代码审查

当你说"帮我审查这段代码的安全性"时,如果安装了包含安全审查 Skill 的插件,Claude 会自动应用该 Skill 的知识来进行审查。

查看可用 Skills

Skills 通常随插件一起安装:

# 安装插件(插件可能包含多个 Skills)
/plugin install plugin-name@marketplace

创建自定义 Skills

基本结构

最简单的 Skill 只需要一个 SKILL.md 文件:

my-skill/
└── SKILL.md

SKILL.md 格式

---
name: 代码风格指南
description: 当用户询问"代码风格"、"命名规范"、"代码格式化"或讨论代码规范时使用此 Skill
version: 1.0.0
---

# 代码风格指南

## 命名规范

- 变量使用 camelCase
- 常量使用 UPPER_SNAKE_CASE
- 类使用 PascalCase
- 私有成员使用下划线前缀

## 格式化规则

- 缩进使用 2 个空格
- 行宽不超过 80 字符
- 使用尾随逗号

## 最佳实践

- 函数应该单一职责
- 避免深层嵌套
- 使用有意义的变量名

Frontmatter 字段

字段 必需 说明
name Skill 名称
description 触发条件描述(关键!)
version 版本号

编写有效的 Description

description 字段决定了 Skill 何时被激活,应该包含具体的触发短语:

好的示例

description: 当用户询问"创建 hook"、"添加 PreToolUse hook"、"验证工具使用"或提到 hook 事件时使用此 Skill

差的示例

description: 关于 hooks 的指南  # 太模糊

完整的 Skill 结构

对于复杂的 Skills,可以包含更多资源:

my-skill/
├── SKILL.md           # 主要知识文档
├── references/        # 详细参考资料   ├── patterns.md    # 设计模式   └── advanced.md    # 高级技巧
├── examples/          # 示例代码   ├── basic.ts       # 基础示例   └── advanced.ts    # 高级示例
└── scripts/           # 辅助脚本
    └── validate.sh    # 验证脚本

引用资源

在 SKILL.md 中引用其他资源:

---
name: API 开发指南
description: 当用户询问"API 设计"、"REST 接口"、"API 最佳实践"时使用
version: 1.0.0
---

# API 开发指南

详细的 API 设计模式请参考 @references/patterns.md

## 快速示例

参见 @examples/basic.ts 了解基本用法

在插件中使用 Skills

目录结构

Skills 放在插件的 skills/ 目录下:

my-plugin/
├── .claude-plugin/
│   └── plugin.json
├── commands/          # 命令层
├── agents/            # 代理层
└── skills/            # 知识层
    ├── code-style/
       └── SKILL.md
    └── api-docs/
        ├── SKILL.md
        └── references/

在命令中引用 Skill

命令可以显式引用 Skill 的知识:

---
description: 生成符合规范的 API 文档
argument-hint: [api-file]
---

为 @$1 生成 API 文档。

使用 api-docs Skill 确保文档包含:

- 完整的端点描述
- 参数规格说明
- 响应格式
- 错误码
- 使用示例

实用示例

示例 1:项目规范 Skill

---
name: 项目规范
description: 当用户询问"项目结构"、"文件组织"、"目录规范"时使用
version: 1.0.0
---

# 项目规范

## 目录结构

\`\`\`
src/
├── components/    # React 组件
├── hooks/         # 自定义 Hooks
├── services/      # API 服务
├── utils/         # 工具函数
└── types/         # TypeScript 类型
\`\`\`

## 文件命名

- 组件:PascalCase(如 `UserProfile.tsx`- 工具函数:camelCase(如 `formatDate.ts`- 常量:UPPER_SNAKE_CASE(如 `API_ENDPOINTS.ts`## 导入顺序

1. React 相关
2. 第三方库
3. 内部模块
4. 类型定义
5. 样式文件

示例 2:Git 工作流 Skill

---
name: Git 工作流
description: 当用户询问"分支策略"、"提交规范"、"Git 流程"时使用
version: 1.0.0
---

# Git 工作流规范

## 分支命名

- 功能:`feature/描述`
- 修复:`fix/描述`
- 热修复:`hotfix/描述`

## 提交信息格式

\`\`\`
<type>(<scope>): <subject>

<body>

<footer>
\`\`\`

### Type 类型

- `feat`: 新功能
- `fix`: 修复 bug
- `docs`: 文档更新
- `style`: 代码格式
- `refactor`: 重构
- `test`: 测试
- `chore`: 构建/工具

示例 3:安全审查 Skill

---
name: 安全审查
description: 当用户询问"安全检查"、"漏洞扫描"、"安全最佳实践"或审查代码安全性时使用
version: 1.0.0
---

# 安全审查指南

## 常见漏洞检查

### SQL 注入

- 检查是否使用参数化查询
- 避免字符串拼接 SQL

### XSS 攻击

- 检查用户输入是否转义
- 使用 CSP 头

### 敏感数据

- 确保密码不明文存储
- API 密钥不要硬编码
- 检查日志是否泄露敏感信息

## 审查清单

- [ ] 输入验证
- [ ] 输出编码
- [ ] 认证机制
- [ ] 授权检查
- [ ] 加密使用
- [ ] 错误处理

最佳实践

1. 明确的触发描述

使用具体的触发短语,而不是模糊的描述:

# 好
description: 当用户询问"创建组件"、"React 组件模板"、"组件最佳实践"时使用

# 差
description: React 组件相关

2. 结构化的知识

将知识组织成清晰的层次结构:

  • 使用标题分级

  • 提供代码示例

  • 包含检查清单

3. 保持更新

  • 定期更新 Skill 内容

  • 版本号反映变更

  • 记录重要更新

4. 模块化设计

  • 每个 Skill 专注一个领域

  • 使用 references 目录存放详细资料

  • 通过 examples 提供实际示例

调试 Skills

如果 Skill 没有按预期激活:

  1. 检查 description:确保触发短语与用户输入匹配

  2. 验证格式:确保 YAML frontmatter 格式正确

  3. 测试触发:尝试使用 description 中的确切短语

下一步