适用人群:已熟悉Claude Code基本操作的开发者,希望将重复性工作流封装为可复用的Skill 学习目标:掌握SKILL.md完整规范,独立设计、开发、测试和发布一个Claude Code Skill
Skills不是简单的提示词模板。它是一套完整的指令封装与分发标准——将领域知识、工作流步骤、上下文模板和辅助资源打包成一个文件夹,让Claude Code在恰当的时机自动或手动加载。

图表 1
一个Skill由三部分组成:
| 组件 | 作用 | 是否必须 |
|---|---|---|
| SKILL.md | 核心指令文件(YAML frontmatter + Markdown正文) | 必须 |
| 辅助资源文件 | 模板、参考文档、脚本等 | 可选 |
| 目录结构 | 提供命名空间和文件组织 | 必须 |
在开始之前,确保你已具备:
claude --version ≥ 1.0)CLAUDE.md机制(项目级指令文件)目录约定:
# 个人级Skill(全局可用)
~/.claude/skills/my-skill/SKILL.md
# 项目级Skill(仅当前项目可用)
your-project/.claude/skills/my-skill/SKILL.md
每个SKILL.md由两个区域组成,用---分隔:
---
[YAML Frontmatter - 元数据配置区]
---
[Markdown Body - 指令内容区]
Frontmatter是Skill的"身份证",决定了Claude Code如何发现、匹配和呈现你的Skill。
---
name: my-skill-name # 必填:Skill唯一标识,用kebab-case
description: 一句话描述Skill功能 # 必填:用于Skill列表展示和关键词匹配
triggers: # 可选:触发条件,控制自动激活
- 关键词1
- 关键词2
user_invocable: true # 可选:是否支持 /skillname 手动调用,默认true
disabled: false # 可选:是否禁用,默认false
---
各字段详解:
name(必填)
- 使用kebab-case命名(如code-review-helper)
- 在同一目录下必须唯一
- 也是斜杠命令的名称(/code-review-helper)
description(必填)
- 限一句话,清晰描述Skill的功能
- 这是自动激活的关键——Claude Code通过description中的关键词匹配来决定是否激活Skill
- 写法建议:动词开头 + 场景 + 输出,例如"审查Git暂存代码中的安全漏洞和性能问题,输出结构化报告"
triggers(可选)
- 显式声明触发关键词列表
- Claude Code会结合description和triggers进行双重匹配
- 越具体越好,避免模糊词汇
user_invocable(可选,默认true)
- 设为true时,用户可以通过/skillname手动调用
- 设为false时,Skill只能被自动激活,不显示在斜杠命令列表中
- 适用于后台辅助型Skill(如自动代码风格检查)
disabled(可选,默认false)
- 临时禁用Skill而不删除文件
- 调试时很有用
正文区域是Skill的核心——Claude Code会将其作为指令注入到上下文中。编写时遵循以下原则:
推荐的正文结构模板:
# Skill名称
## 触发条件
明确列出什么情况下应该使用此Skill。
## 输入规范
描述Skill期望接收什么输入(文件路径、文本内容、参数等)。
## 执行步骤
1. 第一步:具体操作
2. 第二步:具体操作
3. ...
## 输出格式
描述Skill应该生成什么样的输出。
## 约束与边界
- 本Skill不处理XXX
- 当遇到XXX时,提示用户而非自行决定
## 示例
提供至少一个完整的输入→输出示例。
接下来,我们将构建一个完整的Skill——api-doc-generator,它能分析代码中的API路由,自动生成RESTful API文档。
# 在你的测试项目中创建Skill目录
mkdir -p .claude/skills/api-doc-generator
cd .claude/skills/api-doc-generator
---
name: api-doc-generator
description: 分析项目中的API路由定义,生成标准RESTful API文档。当用户提到"生成API文档"、"API文档"、"接口文档"、"写API文档"时触发。
triggers:
- API文档
- 接口文档
- 生成文档
- api documentation
- openapi
- swagger
user_invocable: true
---
# API文档生成器
## 何时使用
当用户要求为项目生成API文档、接口文档,或提到OpenAPI/Swagger规范时,激活此Skill。
## 输入
- 项目路径(默认为当前工作目录)
- 目标框架(自动检测或由用户指定)
- 输出格式:Markdown(默认)或OpenAPI 3.0 YAML
## 执行步骤
### 第一步:识别框架
读取项目的package.json、requirements.txt、go.mod或其他依赖文件,判断后端框架:
| 框架 | 特征文件 | 路由定义模式 |
|------|---------|------------|
| Express.js | package.json含"express" | app.get/post/put/delete |
| FastAPI | requirements.txt含"fastapi" | @app.get/post装饰器 |
| Spring Boot | pom.xml/build.gradle | @GetMapping/@PostMapping |
| Django REST | settings.py含"rest_framework" | urlpatterns列表 |
| Gin | go.mod含"gin-gonic" | r.GET/POST/PUT/DELETE |
| Flask | requirements.txt含"flask" | @app.route装饰器 |
### 第二步:扫描路由文件
使用Grep工具搜索路由定义模式,定位所有包含API端点的文件。
### 第三步:提取端点信息
对每个API端点,提取以下信息:
- HTTP方法(GET/POST/PUT/DELETE/PATCH)
- 路径(如`/api/v1/users/:id`)
- 请求参数(query、path、body)
- 请求体Schema(如果存在)
- 响应格式
- 认证要求(如果可推断)
- 描述/注释
### 第四步:生成文档
按以下格式输出Markdown文档:
```markdown
# API文档
## 概述
- 基础URL:`(推断或使用占位符)`
- 认证方式:`(Bearer Token / API Key / None)`
- 版本:`(从package.json或配置推断)`
## 端点列表
### [方法] 路径
**描述**:端点功能说明
**请求参数**:
| 参数名 | 位置 | 类型 | 必填 | 描述 |
|--------|------|------|------|------|
**请求体**:
(JSON Schema或示例)
**响应**:
| 状态码 | 描述 | Schema |
|--------|------|--------|
**示例**:
(curl命令示例)
在项目根目录创建 docs/api.md 文件。
[待确认] 标记输入:用户在一个Express.js项目中输入 /api-doc-generator
输出:扫描routes/目录,提取所有路由定义,生成包含完整端点信息的docs/api.md,并在对话中显示摘要:
已生成API文档,包含: - 12个端点 - GET: 5个, POST: 3个, PUT: 2个, DELETE: 2个 - 涉及3个资源:users, products, orders - 文件位置:docs/api.md - 3个字段标记为[待确认],需要手动补充
### 4.3 添加辅助资源文件
Skill不仅限于SKILL.md,你可以在同一目录下放置辅助文件,Claude Code会在需要时自动加载它们。
创建一个文档模板文件:
```bash
# 在 .claude/skills/api-doc-generator/ 目录下
cat > openapi-template.yaml << 'TEMPLATE'
# OpenAPI 3.0 模板 - 用于生成标准化API文档
openapi: "3.0.3"
info:
title: "[项目名称]"
version: "1.0.0"
description: "[项目描述]"
servers:
- url: "http://localhost:3000"
description: "开发环境"
paths:
# Claude将在此处填充端点
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
TEMPLATE
再创建一个框架检测提示文件:
cat > framework-hints.md << 'HINTS'
# 框架特定提取规则
## Express.js
- 路由文件通常在 `routes/` 或 `src/routes/` 目录
- 中间件 `app.use('/path', router)` 中的路径是前缀
- 参数用 `:paramName` 表示
## FastAPI
- 路由定义在Python文件中用装饰器标注
- `@router.get("/items/{item_id}")` 中的路径参数用花括号
- Pydantic模型定义了请求/响应Schema
## Spring Boot
- `@RestController` 类中的方法即端点
- `@RequestMapping` 在类级别设置前缀
- 方法级注解 `@GetMapping`、`@PostMapping` 等
HINTS
最终目录结构:
.claude/skills/api-doc-generator/
├── SKILL.md # 核心指令文件
├── openapi-template.yaml # OpenAPI模板
└── framework-hints.md # 框架检测辅助文件
理解激活机制是写出好用Skill的关键。Claude Code有两条激活路径:

图表 2
Claude Code分析用户消息,与Skill的description和triggers进行关键词匹配。匹配成功时,Skill指令被自动注入上下文。
提高自动激活命中率的技巧:
description中包含用户可能使用的自然表达
- 好:"分析项目中的API路由定义,生成标准RESTful API文档"
- 差:"API doc gen tool"
triggers列表覆盖同义词和多语言 ```yaml triggers:
避免过于宽泛的触发词 - "文档"、"代码"、"修复"这类词太通用,可能导致误触发 - 优先使用具体的专业术语
用户在对话中输入/skill-name即可直接调用。user_invocable: true的Skill会出现在/命令的自动补全列表中。
如果Skill没有按预期激活:
.claude/skills/目录下disabled: true/skill-name手动调用,确认Skill本身能工作# 1. 进入你的测试项目
cd /path/to/your/test-project
# 2. 确认Skill已就位
ls -la .claude/skills/api-doc-generator/
# 3. 启动Claude Code
claude
# 4. 测试手动激活
> /api-doc-generator
# 5. 测试自动激活(新会话中)
> 帮我生成这个项目的API文档
| 检查项 | 预期结果 | 通过? |
|---|---|---|
手动调用/api-doc-generator |
Skill被加载,按步骤执行 | |
| 自动触发"生成API文档" | Skill被自动匹配并激活 | |
| 自动触发"写接口文档" | 同上 | |
输出文件docs/api.md生成 |
文件包含正确的端点信息 | |
| 非Web项目提示 | 告知用户不适用而非继续执行 | |
| 辅助资源加载 | Claude参考了template和hints文件 |
问题1:Skill未被自动激活
原因:description和triggers中的关键词与用户消息匹配度不足
解决:扩展triggers列表,在description中加入更多自然语言表达
问题2:Skill被加载但执行不完整
原因:指令正文过长或结构不清晰,Claude遗漏了部分步骤
解决:精简正文,使用编号列表,每个步骤控制在3-5行以内
问题3:辅助资源文件未被使用
原因:SKILL.md正文中没有引用这些文件的指令
解决:在正文中明确提及辅助文件,如"参考openapi-template.yaml模板格式"
根据Anthropic官方指南和社区实践,总结出五种核心Skill设计模式:
模式一:检查清单模式(Checklist)
适用于需要按固定步骤审查或验证的场景。
## 执行步骤
逐一检查以下每一项:
- [ ] 1. 检查输入验证是否完备
- [ ] 2. 检查错误处理是否覆盖所有边界情况
- [ ] 3. 检查是否有SQL注入风险
- [ ] 4. 检查日志是否包含敏感信息
- [ ] 5. 检查认证授权是否正确
模式二:生成器模式(Generator)
适用于从输入生成结构化输出的场景(如我们的API文档生成器)。
## 执行步骤
1. 收集输入:扫描[目标文件/目录]
2. 解析:从输入中提取[关键信息]
3. 转换:按[模板格式]组织信息
4. 输出:写入[目标文件]
5. 校验:检查输出的完整性和一致性
模式三:管道模式(Pipeline)
适用于多阶段处理,每阶段的输出是下一阶段的输入。
## 执行阶段
### 阶段1:预处理
- 读取原始输入文件
- 标准化格式
- 输出:normalized.json
### 阶段2:分析
- 基于 normalized.json 进行深度分析
- 提取关键指标
- 输出:analysis-result.md
### 阶段3:报告
- 基于 analysis-result.md 生成最终报告
- 包含图表和摘要
- 输出:final-report.md
模式四:守卫模式(Guard)
适用于约束Claude行为、防止错误的场景。
## 强制规则
在执行任何代码修改之前,必须通过以下检查:
1. **备份检查**:确认目标文件已备份
2. **影响范围检查**:列出所有受影响的文件
3. **回滚方案**:提供git回滚命令
4. **测试验证**:修改后必须运行完整测试套件
如果任何一项检查失败,停止执行并向用户报告。
模式五:专家角色模式(Expert Persona)
适用于需要领域专业知识的场景。
## 角色
你是一位拥有15年经验的高级安全工程师,专注于Web应用安全。
## 知识领域
- OWASP Top 10
- 常见漏洞模式(XSS、CSRF、SQL注入、SSRF)
- 安全编码最佳实践
- 威胁建模方法论
## 审查标准
对每个发现的漏洞,按CVSS 3.1评分,分为:
- Critical (9.0-10.0)
- High (7.0-8.9)
- Medium (4.0-6.9)
- Low (0.1-3.9)
Skill正文会被注入到上下文中,消耗tokens。以下是优化建议:
| 策略 | 效果 | 示例 |
|---|---|---|
| 辅助文件外置 | 减少SKILL.md体积 | 模板和示例放在同目录文件中 |
| 使用表格代替散文 | 信息密度更高 | 步骤表格化 |
| 删除冗余说明 | 避免重复 | 不要在多处重复同一规则 |
| 精确触发词 | 减少无关激活 | 用"SQL注入扫描"替代"安全检查" |
对于复杂功能,可以将多个Skill组织为层级结构:
.claude/skills/
├── security/
│ ├── sql-injection-scanner/SKILL.md
│ ├── xss-scanner/SKILL.md
│ └── dependency-audit/SKILL.md
├── docs/
│ ├── api-doc-generator/SKILL.md
│ └── changelog-generator/SKILL.md
└── quality/
├── code-review/SKILL.md
└── test-generator/SKILL.md
子文件夹名称不影响Skill的name字段,但有助于人类管理。
在SKILL.md中引用Shell命令输出,实现动态上下文:
## 当前环境信息
运行以下命令获取项目状态:
- `git branch --show-current`:当前分支
- `git diff --stat`:未提交的变更
- `cat package.json | grep version`:项目版本
在执行Skill之前,先获取这些信息作为上下文。
在项目的CLAUDE.md中引用Skill,建立协同关系:
# 项目指南
## 安全审查
每次修改认证相关代码时,自动使用 sql-injection-scanner 和 xss-scanner Skill。
## 文档更新
每次添加新API端点后,使用 api-doc-generator 更新文档。
利用disabled字段和描述语言实现条件激活:
---
name: production-deploy-guard
description: 在部署到生产环境之前执行安全检查清单。仅在用户提到"部署"或"deploy"到"生产"或"production"时激活。
triggers:
- 部署到生产
- 生产环境部署
- deploy production
- production deploy
---
最简单的分享方式是将Skill作为GitHub仓库发布:
# 1. 创建独立仓库
mkdir api-doc-generator-skill && cd api-doc-generator-skill
# 2. 复制Skill文件
cp -r /path/to/.claude/skills/api-doc-generator/* .
# 3. 添加README
cat > README.md << 'EOF'
# API文档生成器 - Claude Code Skill
## 安装
```bash
# 克隆到Claude Code skills目录
git clone https://github.com/yourname/api-doc-generator-skill.git \
~/.claude/skills/api-doc-generator
在Claude Code中输入 /api-doc-generator 或说"帮我生成API文档"
EOF
git init && git add . && git commit -m "Initial skill release" git remote add origin https://github.com/yourname/api-doc-generator-skill.git git push -u origin main ```
Anthropic维护了官方Skills仓库 anthropics/skills,你可以通过PR贡献:
截至2026年,社区已出现多个Skill分发平台:
| 平台 | 地址 | 特点 |
|---|---|---|
| Anthropic官方仓库 | github.com/anthropics/skills | 官方认证,质量最高 |
| SkillsMP | skillsmp.com | 120万+ Skill索引 |
| Agensi | agensi.io | 支持ZIP下载和MCP安装 |
| MCPMarket | mcpmarket.com | 按类别浏览,含评分 |

图表 3
开发流程关键节点:
| 维度 | 评估 |
|---|---|
| 适合训练营类型 | AI工具深度使用训练营、开发者效率训练营、Claude Code认证培训 |
| 预计教学时长 | 2-3小时(含动手实操) |
| 难度等级 | 中级(需Claude Code基础) |
| 实操比重 | 60%实操 + 40%讲解 |
| 前置知识 | Claude Code基本操作、Markdown语法、YAML基础 |
| 建议班级规模 | 15-20人(便于逐一指导Skill调试) |
| 课后作业 | 每位学员独立开发一个解决自身工作痛点的Skill并演示 |
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
