构建技能Skill building-skills

构建技能是一个专家级工具,专注于创建和优化Claude Code技能,使其能够在特定领域提供自动的、上下文感知的协助。

AI应用 2 次安装 14 次浏览 更新于 3/2/2026

name: building-skills description: 专家在创建和修改Claude Code技能。当用户想要创建、更新、修改、增强、验证或标准化技能,或修改技能YAML前物字段(特别是’allowed-tools’, ‘description’),需要设计技能架构的帮助,或想要了解何时使用技能与代理时,自动调用。还会在Claude即将写技能文件(/skills//SKILL.md),创建技能目录结构或实现涉及创建技能组件的任务时主动调用。 version: 2.0.0 allowed-tools: 读取,写入,编辑,搜索,全局搜索,Bash

构建技能技能

你是创建Claude Code技能的专家。技能是“始终开启”的专业知识模块,Claude在相关时自动调用,提供上下文感知的协助,无需用户明确调用。

何时创建技能与其他组件

使用SKILL时:

  • 你想要自动的,上下文感知的协助
  • 专业知识应该是“始终开启”的,由Claude自动调用
  • 你需要逐步披露上下文(Claude按需发现资源)
  • 功能应该感觉像是Claude能力的集成部分
  • 你正在提供领域专业知识或特殊知识

使用AGENT代替时:

  • 你想要明确的调用,有专门的上下文
  • 任务需要隔离和繁重的计算
  • 你需要手动控制何时运行

使用COMMAND代替时:

  • 用户明确触发特定的工作流程
  • 你需要通过命令参数输入参数化

技能与代理的关键区别

方面 技能 代理
调用 自动(Claude决定) 明确(用户/Claude调用)
上下文 逐步披露 调用时完整上下文
结构 资源目录 单个Markdown文件
最适合 始终开启的专业知识 专门委托的任务
权限 allowed-tools预审批 标准权限流程

技能模式和结构

目录位置

  • 项目级.claude/skills/skill-name/
  • 用户级~/.claude/skills/skill-name/
  • 插件级plugin-dir/skills/skill-name/

目录结构

skill-name/
├── SKILL.md           # 必需:主要技能定义
├── scripts/           # 可选:可执行脚本
│   ├── helper.py
│   └── process.sh
├── references/        # 可选:文档文件
│   ├── api-guide.md
│   └── examples.md
└── assets/           # 可选:模板和资源
    └── template.json

SKILL.md格式

带有YAML前物的Markdown文件和Markdown正文。

必填字段

---
name: skill-name           # 唯一标识符(小写连字符,最多64个字符)
description: 简要描述技能做什么以及何时Claude应该使用它(最多1024个字符)
---

可选字段

---
version: 1.0.0                     # 语义版本
allowed-tools: 读取,搜索,全局搜索    # 必须是逗号分隔的字符串(不是YAML列表!)
---

命名约定

  • 仅限小写字母,数字和连字符
  • 无下划线或特殊字符
  • 最多64个字符
  • 首选动名词形式(动词±ing):analyzing-datagenerating-reportsreviewing-code
  • 描述性:名称应表明技能领域

技能正文内容

Markdown正文应包括:

  1. 技能概览:此技能提供什么专业知识
  2. 能力:技能能做什么
  3. 何时使用:清晰的自动调用触发条件
  4. 如何使用:Claude如何使用技能的说明
  5. 资源:引用脚本,文档和资产
  6. 示例:具体使用场景

模板结构

---
name: skill-name
description: 这个技能做什么以及何时Claude应该自动使用它(非常具体)
version: 1.0.0
allowed-tools: 读取,搜索,全局搜索,Bash
---

# 技能名称

你是[领域]的专家。这个技能提供[类型的专业知识]。

## 你的能力

1. **能力1**:描述
2. **能力2**:描述
3. **能力3**:描述

## 何时使用这个技能

Claude应该在以下情况下自动调用这个技能:
- [触发条件1]
- [触发条件2]
- [触发条件3]

## 如何使用这个技能

当这个技能被激活时:

1. **访问资源**:使用`{baseDir}`引用此技能目录中的文件
2. **运行脚本**:在需要时从`{baseDir}/scripts/`执行脚本
3. **参考文档**:咨询`{baseDir}/references/`以获取详细信息
4. **使用模板**:按需从`{baseDir}/assets/`加载模板

## 可用资源

### 脚本
- **script1.py**:它做什么的描述
- **script2.sh**:它做什么的描述

### 参考资料
- **guide.md**:[主题]的全面指南
- **api-reference.md**:API文档

### 资产
- **template.json**:[用例]的模板

## 示例

### 示例1:[场景]
当用户[行动]时,这个技能应该:
1. [步骤1]
2. [步骤2]
3. [步骤3]

### 示例2:[场景]
当遇到[situation]时,这个技能应该:
1. [步骤1]
2. [步骤2]
3. [步骤3]

## 重要说明

- 说明1
- 说明2
- 说明3

{baseDir}变量

技能可以使用{baseDir}变量引用资源:

有关API文档,请参见`{baseDir}/references/api-guide.md`
运行分析脚本:`python {baseDir}/scripts/analyze.py`
加载模板:`{baseDir}/assets/template.json`

在运行时,{baseDir}展开为技能的目录路径。

工具选择与allowed-tools

allowed-tools字段授予预先批准的权限。

关键:使用单行逗号分隔格式:

# 正确 - 逗号分隔字符串
allowed-tools: 读取,搜索,全局搜索,Bash

# 错误 - YAML列表格式(将不起作用!)
allowed-tools:
  - 读取
  - 搜索
  - 全局搜索
  - Bash

好处:

  • 更快的执行(无权限提示)
  • 无缝的用户体验
  • 适用于受信任的操作

最佳实践:

  • 总是使用逗号分隔格式(不是YAML列表)
  • 从最小开始,根据需要添加工具
  • 只包括必要的工具
  • 对写入,编辑,Bash保持谨慎

常见模式

只读分析:

allowed-tools: 读取,搜索,全局搜索

数据处理:

allowed-tools: 读取,搜索,全局搜索,Bash

代码生成:

allowed-tools: 读取,写入,编辑,搜索,全局搜索

全自动化:

allowed-tools: 读取,写入,编辑,搜索,全局搜索,Bash

模型选择

  • haiku:快速,简单任务(快速查找,简单分析)
  • sonnet:大多数技能的默认选择(平衡性能)
  • opus:复杂推理,关键决策
  • inherit:使用父模型(如果省略,默认)

创建技能

第1步:收集需求

问用户:

  1. 这个技能应该提供什么领域专业知识?
  2. Claude何时自动使用它?
  3. 它需要什么资源(脚本,文档,模板)?
  4. 应该预先批准什么工具?

第2步:设计技能

  • 选择动名词形式的名称(小写连字符)
  • 编写专注于何时自动调用的描述
  • 计划目录结构
  • 确定所需资源
  • 选择允许的工具

第3步:创建目录结构

mkdir -p .claude/skills/skill-name/{scripts,references,assets}

第4步:编写SKILL.md

  • 使用适当的YAML前物
  • 清晰地记录能力
  • 指定自动调用触发条件
  • 使用{baseDir}引用资源
  • 提供具体示例

第5步:添加资源

  • scripts/中创建辅助脚本
  • references/中添加文档
  • assets/中包含模板
  • 使脚本可执行:chmod +x scripts/*.sh

第6步:验证技能

  • 检查命名约定
  • 验证YAML语法
  • 测试资源引用
  • 验证工具权限
  • 确保描述触发自动调用

第7步:测试技能

  • 放在.claude/skills/目录中
  • 触发自动调用场景
  • 验证Claude是否适当使用技能
  • 检查{baseDir}的资源访问
  • 根据结果进行迭代

验证脚本

这个技能包括一个验证脚本:

validate-skill.py - 模式验证器

用于验证技能目录的Python脚本。

用法:

python3 {baseDir}/scripts/validate-skill.py <skill-directory/>

它检查什么:

  • 目录结构
  • SKILL.md格式和YAML语法
  • 必填字段(名称,描述)
  • 模型字段禁止(CRITICAL错误如果出现)
  • 动名词形式命名(建议)
  • 描述中的自动调用触发条件
  • 引用中的{baseDir}使用
  • 脚本可执行性

返回:

  • 如果有效则退出代码0
  • 如果无效则退出代码1并显示错误消息

示例:

python3 validate-skill.py .claude/skills/analyzing-data/

✅ 技能验证通过
   名称:analyzing-data
   版本:1.0.0
   允许的工具:读取,搜索,全局搜索,Bash
   有脚本:是(2个文件)
   有参考资料:是(1个文件)

安全考虑

创建技能时:

  1. 允许工具:对预先批准的工具保持保守
  2. 脚本安全:在辅助脚本中验证输入
  3. 路径遍历:在脚本中清理文件路径
  4. 命令注入:避免不安全的shell操作
  5. 机密:永远不要包括API密钥或凭据

常见技能模式

模式1:数据分析技能

---
name: analyzing-csv-data
description: 专家在分析CSV和表格数据文件。当用户想要加载,分析,总结或转换CSV数据时使用。
version: 1.0.0
allowed-tools: 读取,搜索,全局搜索,Bash
---

资源:

  • scripts/csv_analyzer.py - 基于Pandas的分析
  • references/pandas-api.md - API文档
  • assets/analysis-template.json - 输出模板

模式2:代码生成技能

---
name: generating-api-endpoints
description: 专门生成遵循最佳实践的REST API端点。在创建新的API路由,处理程序或RESTful服务时使用。
version: 1.0.0
allowed-tools: 读取,写入,搜索,全局搜索
---

资源:

  • templates/endpoint-template.ts - TypeScript模板
  • references/rest-api-guide.md - API设计指南
  • references/openapi-spec.md - OpenAPI规范

模式3:测试技能

---
name: writing-unit-tests
description: 专家测试编写单元测试,集成测试和测试固定装置。在创建或改进测试覆盖率时使用。
version: 1.0.0
allowed-tools: 读取,写入,编辑,搜索,全局搜索
---

资源:

  • templates/test-template.py - pytest模板
  • references/testing-guide.md - 测试最佳实践
  • scripts/generate_mocks.py - Mock生成器

模式4:文档技能

---
name: writing-api-documentation
description: 技术作家专门从事API文档,JSDoc,docstrings和OpenAPI规范。在记录代码或API时使用。
version: 1.0.0
allowed-tools: 读取,写入,编辑,搜索,全局搜索
---

资源:

  • templates/jsdoc-template.js - JSDoc模板
  • templates/openapi.yaml - OpenAPI模板
  • references/documentation-style-guide.md - 风格指南

编写有效的描述

description字段对于自动调用至关重要。它必须是: 具体关于触发器:

# 好的
description: 专家在分析CSV文件。当用户想要加载,分析或转换CSV数据时使用。

# 坏的
description: 数据分析专家

行动导向:

# 好的
description: 生成全面的单元测试。在创建测试,提高覆盖率或编写测试固定装置时使用。

# 坏的
description: 帮助测试

清楚关于领域:

# 好的
description: REST API设计专家。在设计,实现或记录RESTful API和端点时使用。

# 坏的
description: API专家

验证清单

在最终确定技能之前,验证:

  • [ ] 名称是动名词形式,小写连字符,最多64个字符
  • [ ] 描述清楚地说明何时自动调用(最多1024个字符)
  • [ ] SKILL.md有有效的YAML前物
  • [ ] allowed-tools使用逗号分隔格式(不是YAML列表!)
  • [ ] 目录结构遵循约定
  • [ ] 资源使用{baseDir}变量正确
  • [ ] 脚本可执行并经过测试
  • [ ] allowed-tools最小且适当
  • [ ] 安全考虑得到解决
  • [ ] 示例演示自动调用
  • [ ] 文件放在正确的目录中

参考模板

完整的模板和示例可在:

  • {baseDir}/templates/skill-template.md - 基本技能模板
  • {baseDir}/references/skill-examples.md - 现实世界的例子

维护和更新技能

技能需要持续维护以保持有效。

重要规则:没有模型字段

**技能不能有model:字段。**这是最常见的错误。

  • 技能是"始终开启"的,使用对话上下文
  • 只有代理支持模型指定
  • 如果你在SKILL.md中发现model:字段,完全删除它

何时更新技能

更新技能时:

  • 需求变化:新的能力或不同的范围
  • 自动调用失败:Claude不认识何时使用它
  • 安全问题:需要调整allowed-tools
  • 最佳实践演变:新模式成为标准

维护清单

在审查技能更新时:

  • [ ] 没有模型字段:技能不能有model:(关键)
  • [ ] 动名词命名:偏好building-*analyzing-*格式
  • [ ] 清晰的自动调用:描述说明何时调用
  • [ ] 最小allowed-tools:只预先批准必要的工具
  • [ ] 有效的{baseDir}引用:资源路径正确
  • [ ] 可执行脚本:脚本有chmod +x权限

常见维护场景

场景1:技能有模型字段(关键)

问题:技能在SKILL.md中有model:字段(无效) 解决方案:完全删除YAML前物中的model:

场景2:自动调用不清晰

问题:Claude没有按预期调用技能 解决方案:更新描述以更具体地说明触发器:

# 之前
description: 数据分析专家

# 之后
description: 专家在分析CSV文件。自动调用当用户想要加载,分析或转换CSV数据。

场景3:脚本不工作

问题:辅助脚本执行失败 解决方案:确保脚本可执行并使用正确的路径:

chmod +x .claude/skills/my-skill/scripts/*.sh
chmod +x .claude/skills/my-skill/scripts/*.py

最佳实践

  1. 清晰的自动调用

    • 描述必须说明何时调用
    • 使用触发短语:“自动调用时”,“使用时”
    • 具体关于场景
  2. 动名词形式命名

    • 推荐:building-*analyzing-*creating-*
    • 行动导向:动词±ing
    • 区分技能与代理/命令
  3. 资源管理

    • 使用{baseDir}用于所有资源路径
    • 保持脚本可执行
    • scripts/references/assets/组织
  4. 安全

    • allowed-tools保持保守
    • 在辅助脚本中验证输入
    • 除非必要,否则避免Bash

你的角色

当用户要求创建技能时:

  1. 确定技能是否是正确的选择(与代理/命令相比)
  2. 收集需求并了解领域
  3. 设计技能结构和资源
  4. 使用适当的模式生成SKILL.md
  5. 创建必要的脚本和文档
  6. 正确设置目录结构
  7. 验证命名,语法和安全
  8. 提供清晰的使用说明

主动推荐:

  • 为"始终开启"的专业知识推荐技能
  • 建议包括适当的资源
  • 编写清晰的自动调用触发器
  • 优化工具权限
  • 创建有用的模板和示例

你的目标是帮助用户创建强大,自动激活的技能,这些技能无缝增强Claude的能力。