当前位置: 首页 > news >正文

Claude Code 自定义 Skills 开发教程:打造你的专属斜杠命令

Claude Code 的 Skills 系统允许开发者创建自定义的斜杠命令(Slash Commands),将常用的复杂操作封装成一条简单的/command。本文将从零开始,带你掌握 Skills 的开发、注册与实战应用。

一、什么是 Skills

Skills 是 Claude Code 中的可复用指令模板。当你在对话中输入/skill-name时,Claude Code 会加载对应的 Skill 定义文件,将其中的 prompt 注入上下文,从而让 AI 按照预设的专业流程执行任务。

简单理解:Skills = 预定义的专家角色 + 标准化工作流程 + 可传参的模板

Skills 的核心优势:

  • 一致性:团队成员使用同一套 Skill,输出质量统一
  • 效率:复杂操作一条命令搞定,省去重复描述
  • 可分享:Skill 文件可以通过 Git 在团队间共享
  • 可组合:一个 Skill 可以调用其他 Skills

二、Skill 文件结构

Skill 定义文件存放在.claude/skills/目录下,使用 Markdown 格式,包含 YAML frontmatter 和 prompt body 两部分。

2.1 基本结构

--- name: deploy description: "一键部署应用到生产环境" trigger: "deploy" args: - name: target description: "部署目标: all | backend | frontend" required: false default: "all" --- # 部署流程 你是一个 DevOps 专家。请按照以下步骤部署项目: 1. 运行 lint 和类型检查 2. 执行单元测试 3. 构建项目 4. 通过 SSH 部署到服务器 5. 验证部署结果 部署目标: {{target}} ## 注意事项 - 部署前必须确认所有测试通过 - 如果是 backend 部署,需要运行数据库迁移 - 部署后检查 PM2 进程状态

2.2 Frontmatter 字段详解

字段类型必填说明
namestringSkill 的唯一标识名称
descriptionstring简短描述,显示在帮助列表中
triggerstring触发命令,用户输入 /trigger 激活
argsarray参数列表定义
toolsarray该 Skill 需要使用的工具列表
contextarray自动加载的上下文文件

三、创建你的第一个 Skill

3.1 目录准备

# 在项目根目录创建 skills 目录 mkdir -p .claude/skills # 创建第一个 skill 文件 touch .claude/skills/changelog.md

3.2 编写 Changelog 生成 Skill

--- name: changelog description: "根据 Git 提交记录自动生成 CHANGELOG" trigger: "changelog" args: - name: since description: "起始版本标签,如 v1.2.0" required: false default: "" - name: format description: "输出格式: standard | keepachangelog" required: false default: "keepachangelog" --- # Changelog 生成专家 你是一个专业的 Changelog 生成器。请按以下步骤操作: ## 步骤 1. **获取提交记录**: - 如果指定了 since 标签 ({{since}}),获取该标签之后的所有提交 - 否则获取最近 50 条提交 2. **分类整理**: 按照 Conventional Commits 规范分类: - feat: 新功能 - fix: Bug 修复 - perf: 性能优化 - refactor: 重构 - docs: 文档变更 - chore: 构建/工具变更 3. **生成 Changelog**: 使用 {{format}} 格式输出 4. **写入文件**: 追加到 CHANGELOG.md 文件顶部(保留旧内容) ## 输出格式要求 - 版本号自动从 package.json 读取 - 日期使用 YYYY-MM-DD 格式 - 每条记录包含 commit hash 的前 7 位

3.3 使用 Skill

# 基本使用 /changelog # 指定起始版本 /changelog v1.2.0 # 指定格式 /changelog v1.0.0 standard

四、实战:5 个高频 Skills

4.1 数据库迁移 Skill

--- name: db-migrate description: "安全地创建和执行数据库迁移" trigger: "db-migrate" args: - name: action description: "操作类型: create | run | revert" required: true - name: name description: "迁移名称(仅 create 时需要)" required: false --- # 数据库迁移专家 你是 TypeORM 数据库迁移专家,严格遵循以下规则: ## create 操作 1. 分析当前 entity 定义与数据库 schema 差异 2. 生成迁移文件到 src/migrations/ 3. 文件名格式: {timestamp}-{{name}}.ts 4. 必须同时包含 up() 和 down() 方法 5. 生成前先 review 变更内容 ## run 操作 1. 先在 dry-run 模式预览 SQL 2. 确认无误后执行迁移 3. 验证迁移结果 ## revert 操作 1. 显示最近 5 次迁移记录 2. 执行 revert 并验证 ## 安全规则 - 禁止在迁移中 DROP COLUMN(改为 RENAME + 标记废弃) - 大表 ALTER 必须提醒用户注意锁表风险 - 生产环境迁移前必须备份

4.2 代码审查 Skill

--- name: review description: "对当前分支的变更进行专业代码审查" trigger: "review" args: - name: focus description: "审查重点: security | performance | all" required: false default: "all" --- # 高级代码审查员 审查当前分支相对于 main 的所有变更,重点关注 {{focus}}。 ## 审查维度 ### 安全性 (security) - SQL 注入风险 - XSS 漏洞 - 敏感信息泄露 - 权限校验缺失 ### 性能 (performance) - N+1 查询 - 内存泄漏风险 - 不必要的重渲染 - 缺少索引 ### 代码质量 (all) - 命名规范 - 错误处理完整性 - 类型安全 - 单元测试覆盖 ## 输出格式 按严重程度分级:CRITICAL / WARNING / SUGGESTION 每条包含:文件路径、行号、问题描述、修复建议

4.3 API 接口生成 Skill

--- name: gen-api description: "根据描述生成完整的 RESTful API" trigger: "gen-api" args: - name: resource description: "资源名称,如 article, user, order" required: true - name: fields description: "字段定义,如 title:string,price:number" required: true --- # API 生成器 根据资源名 {{resource}} 和字段 {{fields}} 生成完整的 CRUD API。 ## 生成内容 1. Entity 定义 (TypeORM) 2. DTO (CreateDto, UpdateDto, QueryDto) 3. Service (含分页、过滤、排序) 4. Controller (RESTful 路由) 5. Module 注册 6. 单元测试骨架 ## 规范 - 使用 class-validator 做参数校验 - 统一返回格式 {success, data, message} - 分页接口返回 {list, total, page, pageSize} - 软删除使用 deletedAt 字段

4.4 自动部署 Skill

--- name: ship description: "构建、测试并部署到生产环境" trigger: "ship" args: - name: target description: "部署目标: all | backend | frontend" required: false default: "all" --- # 部署工程师 执行完整的 CI/CD 流程,部署目标: {{target}} ## 流程 1. 运行 TypeScript 类型检查 2. 运行 ESLint 3. 执行单元测试(失败则中止) 4. 构建项目 5. 通过 deploy.sh 部署 6. 等待 30 秒后健康检查 7. 输出部署摘要 ## 回滚策略 如果健康检查失败: - 记录错误日志 - 提示用户是否回滚到上一版本

4.5 文档同步 Skill

--- name: sync-docs description: "根据代码变更自动更新 API 文档" trigger: "sync-docs" --- # 文档同步专家 扫描所有 Controller 文件,提取路由、参数、返回值信息, 自动更新 docs/api.md 文档。 ## 提取规则 - 从 @ApiOperation 或注释中提取接口描述 - 从 DTO 中提取请求参数 - 从 Controller 返回类型推断响应结构 - 标注需要认证的接口 ## 输出格式 按模块分组,每个接口包含: - 方法 + 路径 - 描述 - 请求参数表格 - 响应示例 - 错误码说明

五、高级技巧

5.1 Skill 中引用上下文文件

--- name: fix-bug description: "智能 Bug 修复" trigger: "fix" context: - "CLAUDE.md" - "src/common/errors.ts" - "tsconfig.json" --- 修复用户描述的 Bug。修复前先阅读项目约定(CLAUDE.md), 确保修复方案符合项目规范。

5.2 Skill 组合调用

一个 Skill 的 prompt 中可以引导 Claude Code 调用其他 Skills:

--- name: release description: "完整的版本发布流程" trigger: "release" --- 执行以下完整发布流程: 1. 先执行 /review 确保代码质量 2. 执行 /changelog 生成变更日志 3. 更新 package.json 版本号 4. 创建 Git tag 5. 执行 /ship 部署到生产环境

5.3 条件分支逻辑

--- name: init description: "初始化新模块" trigger: "init" args: - name: type description: "模块类型: api | page | lib" required: true --- 根据模块类型 {{type}} 执行不同的初始化流程: 如果 type 是 api: - 创建 module, controller, service, entity, dto - 注册到 AppModule 如果 type 是 page: - 创建 Vue 组件、路由配置、Store 模块 - 添加菜单项 如果 type 是 lib: - 创建独立的 npm 包结构 - 配置 tsconfig paths 别名

六、团队协作最佳实践

  • .claude/skills/目录纳入 Git 版本管理
  • 为每个 Skill 写清晰的description,方便团队成员发现
  • 遵循命名约定:动词开头,如gen-apifix-bugsync-docs
  • 复杂 Skill 拆分为多个小 Skill,通过组合调用实现
  • CLAUDE.md中列出团队常用 Skills 及使用场景

七、调试与排错

Skill 加载失败时,常见原因:

  1. YAML 语法错误:frontmatter 中的冒号后必须有空格
  2. 文件路径错误:确认文件在.claude/skills/目录下
  3. 参数未传递required: true的参数未提供时会报错
  4. 模板变量未替换:确保使用{{argName}}双花括号语法
# 查看已注册的 Skills 列表 # 在 Claude Code 中输入 / 后按 Tab 可以看到所有可用命令 # 查看某个 Skill 的详细信息 cat .claude/skills/deploy.md

总结

自定义 Skills 是 Claude Code 最强大的扩展机制之一。通过合理设计 Skills,你可以将团队的最佳实践固化为可复用的命令,大幅提升开发效率。建议从最常重复的操作开始,逐步构建自己的 Skills 库。

接口配置参考:https://9m8m.com/docs/

http://www.jsqmd.com/news/687175/

相关文章:

  • ViGEmBus实战:Windows内核级游戏控制器虚拟化深度解析
  • 油液清洁度传感器的作用:实时监测油液污染,保障设备健康运行
  • 知识网络构建的革命性突破:如何用Obsidian Zettelkasten实现系统性思维重构?
  • 5个步骤掌握赛博朋克2077存档修改:从新手到高手的完整指南
  • PaddleOCR实战:手把手教你训练一个识别金属零件字符的定制化模型(从PPOCRLabel标注到模型部署)
  • AI图像清理终极指南:如何用SD-WebUI Cleaner轻松移除任何对象
  • 2026 年 AI 编程助手排行榜:Claude Code / Cursor / Copilot / Windsurf 全面横评
  • 面试官总问的‘线程安全List’怎么选?深入源码对比synchronizedList和CopyOnWriteArrayList的性能与内存开销
  • 技术迭代与未来趋势—晶体谐振器与振荡器发展与创新
  • 【2026年最新600套毕设项目分享】微信小程序的驾校管理系统(30145)
  • 别再乱加标签了!重组蛋白实验中His、Flag、GST等标签到底怎么选?
  • 别再只调API了!手把手教你本地部署OpenAI CLIP模型(附避坑指南)
  • 旧手机部署LLM,作为服务端给其他App(萌译)翻译,Galgame神器
  • 告别纯代码连线!用Vivado Block Design图形化搭建一个720P HDMI显示系统(基于Artix-7)
  • TVA技术在医药行业视觉检测的最新进展(二)
  • 10-案例篇-四个现场与一个反例
  • 我不建议你先做SaaS:先卖“**竞品价格周报**”,更容易成交
  • AZ音乐下载器完全指南:一站式解决高品质音乐下载需求
  • 别光看F8和F7了!聊聊OllyDbg调试TraceMe时,那些被你忽略的‘信息窗口’和‘注释栏’
  • 怎样轻松部署中医AI助手:5步免费搭建仲景智能诊疗系统
  • NVIDIA Blackwell架构与CUDA 12.9家族特性解析
  • Charles手机App抓包完整配置指南
  • 从C语言到Go语言:聊聊编译器自举的那些事儿(以GCC和Go为例)
  • 手机号查QQ号完整指南:3分钟快速找回忘记的QQ账号
  • 避坑指南:树莓派Pico连接MicroSD卡模块,SPI引脚选错、文件系统挂载失败的常见问题与解决方法
  • Kotlin 集合常用操作
  • 终极图片格式转换指南:Save Image as Type让网页图片保存更简单
  • 别再被JavaCV的FFmpegFrameGrabber卡住了!手把手教你解决start()阻塞和Picture size 0x0错误
  • gprMax三维建模效率翻倍:我是如何用Paraview可视化分析随机介质雷达模拟结果的
  • AD20 原理图与PCB同步的隐藏技巧:用‘文档比较’搞定多对多更新