Skills 是 Claude Code 中的专门化功能模块,就像给 Claude 安装"插件"一样。每个 skill 都是一个独立的指令集,用于执行特定的任务。
它的主要优点如下
可复用 - 编写一次,多次使用
标准化 - 确保团队按统一流程工作
自动化 - 自动执行复杂的多步骤任务
适用场景:
# 正确的目录结构
~/.claude/skills/ # 个人级(跨项目)
├── my-skill/
│ └── SKILL.md # 文件名必须是 SKILL.md
└── another-skill/
└── SKILL.md
.claude/skills/ # 项目级示例
├── aws-cost-query/ # skill 目录名:小写+连字符
│ └── SKILL.md # 必须
└── next-component/
├── SKILL.md # 必须
├── examples.md # 可选
└── scripts/ # 可选
└── helper.sh
Skill 目录命名规则:
✅ 正确:
- aws-cost-query
- next-component
- code-review
- deploy-v2
❌ 错误:
- AWSCostQuery # 不能用大写
- aws_cost_query # 不能用下划线
- aws.cost.query # 不能用点号
SKILL.md frontmatter 规范:
---
name: my-skill # 必须:小写+连字符,最多64字符
description: 简短描述 # 必须:清晰说明功能
argument-hint: "[参数]" # 可选:参数提示
runInSubAgent: false # 可选:是否在子代理运行
---
优先级规则:
如果我们在 ~/.claude/skills/review/ 和 .claude/skills/review/ 都有 review skill,Claude 会使用 个人级(~/.claude/skills/)的版本
使用建议:
| 场景 | 推荐位置 | 原因 |
|---|---|---|
| 个人常用工具 | ~/.claude/skills/ |
所有项目都能用 |
| 项目特定流程 | .claude/skills/ |
团队共享,版本管理 |
| 临时实验 | .claude/skills/ |
容易删除 |
| 团队标准 | .claude/skills/ |
提交到 Git |
| 对比维度 | Skills | MCP |
|---|---|---|
| 本质 | Markdown 文件 | 外部服务协议 |
| 作用 | 提供知识和指令 | 连接实时数据/服务 |
| 复杂度 | 简单(写 Markdown) | 复杂(配置协议、认证) |
| 上下文消耗 | 低(按需加载) | 中到高(全量加载) |
| 离线可用 | ✅ 是 | ❌ 否 |
| 实时数据 | ❌ 否 | ✅ 是 |
Skills 和 MCP 不是互斥的,而是完美搭档。我们以一个查询 AWS 成本为例:
# Skill: 提供查询方法和最佳实践
---
name: aws-cost-guide
description: AWS 成本查询指南
---
## 成本查询最佳实践
- 使用 CUR2 表获取最详细数据
- 按 AppID 维度聚合
- 注意日期范围的选择
- 常见查询模板:[...]
// MCP: 提供实际的 Athena 连接
{
"mcpServers": {
"aws-athena": {
"type": "http",
"url": "https://athena-mcp.example.com"
}
}
}
结果: Claude 既知道如何查询(从 Skill),又能执行查询(通过 MCP)
让我们创建这样一个目录结构:
.claude/skills/ # 项目级示例
├── aws-cost-query/ # skill 目录名:小写+连字符
│ └── SKILL.md # 必须
SKILL.md里定义如下:
---
name: aws-cost-query
description: 快速查询 AWS 成本数据。支持按账户、AppID、EKS 等维度查询成本信息。
argument-hint: "[query-type] [date-range]"
runInSubAgent: false
---
# AWS 成本查询 Skill
这个 skill 帮助你快速查询项目中的 AWS 成本数据。
## 使用方法
调用方式:`/aws-cost-query [查询类型] [可选:日期范围]`
示例:
- `/aws-cost-query account` - 查询账户成本
- `/aws-cost-query appid december` - 查询 12 月 AppID 成本
- `/aws-cost-query eks` - 查询 EKS 分摊成本
## 任务流程
当收到查询请求时,按以下步骤执行:
### 1. 确定查询类型
根据参数 `$ARGUMENTS` 确定用户想查询什么:
- **account** - 账户级别成本
- **appid** - AppID 维度成本
- **eks** - EKS 分摊成本
- **customer** - 客户全量成本
### 2. 选择对应的脚本
项目根目录下有以下查询脚本:
- `query_account_costs.sh` - 查询账户成本
- `query_appid_costs.sh` - 查询 AppID 成本
- `query_eks_split_cost.sh` - 查询 EKS 成本
- `query_customer_all_december.sh` - 查询客户 12 月全量数据
### 3. 检查 AWS 配置
执行查询前,确认:
- AWS_PROFILE 是否正确设置(检查 `AWS_PROFILE_SETUP.md`)
- 是否有必要的权限访问 Athena
### 4. 执行查询
运行对应的 shell 脚本,例如:
```bash
bash query_account_costs.sh
```
### 5. 分析结果
查询完成后:
- 展示结果的关键指标
- 指出成本最高的项目
- 提供相关参考文档链接(如 `QUICKSIGHT_APPID_COST_GUIDE.md`)
## 参考文档
项目中的相关文档:
- `AWS_PROFILE_SETUP.md` - AWS 配置指南
- `QUICKSIGHT_APPID_COST_GUIDE.md` - AppID 成本分析指南
- `QUICK_START_APPID.md` - AppID 快速开始
- `EKS_SPLIT_COST_FINDINGS.md` - EKS 成本发现
- `AGGREGATED_CUR2_APPID_ANALYSIS.md` - CUR2 聚合分析
## 输出格式
以清晰的 markdown 表格展示结果,包括:
- 成本金额
- 时间范围
- 主要成本来源
- 优化建议(如有)
创建完成后,退出claude,然后进入。此时能看到这个skills已被加载:

执行skills:

Claude Code是如何自动知道我们有这么多skill,并做选择的呢,让我们再执行一次context命令:

它会将所有skills的descriptions保存在上下文:
