第 5 章:自定义 Skill——把重复操作封装成一键命令

第 5 章:自定义 Skill------把重复操作封装成一键命令

前四章我们搭建了安全网(Git 回退)、管理了上下文(/compact)、配置了记忆(CLAUDE.md)。这一章解决「效率」问题:Vibe Coding 中有很多重复操作(提交代码、启动环境、代码审查),每次手动输入不仅繁琐还容易遗漏。自定义 Skill 可以把多步骤的固定工作流封装成一个斜杠命令,一键执行。本章将讲解两种 Skill 创建方式、项目级与跨项目级的区别、Skill 生效与重载、三个实战示例,以及 Skill 设计的核心原则。


5.1 为什么需要自定义 Skill

5.1.1 痛点场景

在 Vibe Coding 中,有些操作是每天重复执行的:

场景一:每次提交代码

复制代码
手动操作流程:
1. git status  查看变更了哪些文件
2. git diff    预览变更内容
3. 想一个合适的 commit message
4. git add .
5. git commit -m "xxx"
6. git push
7. 确认推送成功

每次都要手动走这 7 步,不仅繁琐,还可能在第 3 步卡住(想 commit message 想半天),或者忘记第 6 步 push。

场景二:每次启动开发环境

复制代码
手动操作流程:
1. 启动 PostgreSQL 数据库(docker-compose up -d postgres)
2. 启动 Redis 缓存(docker-compose up -d redis)
3. 等待服务就绪
4. 启动后端服务(pnpm dev:server)
5. 启动前端服务(pnpm dev:client)
6. 确认所有服务正常运行

如果项目有 5 个依赖服务,每次启动都要一条条敲命令,非常耗时。

场景三:每次代码审查

复制代码
手动操作流程:
1. /code-review  执行代码审查
2. 查看审查报告
3. 根据报告修复问题
4. 再次审查确认
5. 运行测试确认无回归

这些步骤每次都一样,但你可能会忘记第 5 步(跑测试),导致审查通过了但测试挂了。

5.1.2 Skill 的核心价值

自定义 Skill(技能)是 Agent 的扩展机制,可以把固定的操作或经常用到的工作流封装成一个斜杠命令(如 /git-save/start-dev/code-review)。调用时只需输入斜杠命令,AI 就会按照预定义的流程执行一系列操作。

三大核心价值

价值 说明
一致性 每次执行都遵循相同的步骤,不会因为忘记某一步而出错
高效性 一键执行多步骤工作流,不需要每次手动输入
可共享 项目级 Skill 纳入 Git 后,团队所有人都能用相同的工作流

一句话总结:Skill 把「你每次都要告诉 AI 的操作流程」变成「AI 自动记住并执行的流程」,你只需要触发一次。


5.2 技能系统概述

5.2.1 内置技能 vs 自定义技能

Claude Code 的技能分为两类:

类型 说明 示例
内置技能 Claude Code 自带的技能,不需要配置 /compact/memory/code-review/init
自定义技能 用户自己创建的技能,封装特定工作流 /git-save/start-dev/deploy-staging

内置技能是通用的,自定义技能是针对你的项目或个人习惯定制的。两者配合使用,覆盖通用和个性化需求。

5.2.2 技能的调用方式

技能通过斜杠命令调用:

复制代码
/git-save        # 调用名为 git-save 的技能
/start-dev       # 调用名为 start-dev 的技能
/deploy-staging  # 调用名为 deploy-staging 的技能

输入斜杠后,Claude Code 会显示可用技能的自动补全列表,方便你快速选择。

5.2.3 两种创建方式

Claude Code 支持两种创建自定义技能的方式,适用于不同复杂度的需求:

方式 配置位置 适合场景 复杂度
方式一:settings.json 注册 settings.jsonskills 字段 简单的指令模板(一两句话能说清的操作)
方式二:插件目录创建 ~/.claude/plugins/<skill-name>/skill.md 复杂的多步骤工作流(需要详细的触发条件、执行步骤、注意事项)

下面分别讲解这两种方式。


5.3 创建方式一:settings.json 注册简单技能

5.3.1 基本格式

最简单的技能就是一个指令模板,在 settings.jsonskills 字段中配置:

json 复制代码
{
  "skills": {
    "test": "Run the project tests. Use: pnpm test",
    "deploy-staging": "Deploy to staging environment. Steps: 1) pnpm run build 2) pnpm run deploy:staging 3) Verify at https://staging.example.com",
    "git-save": "Save current changes: 1) git status 2) git diff 3) Generate Conventional Commits message 4) git add . 5) git commit 6) git push"
  }
}

每个技能是一个键值对:

  • :技能名称(即斜杠命令,如 test 对应 /test
  • :技能的指令描述(AI 看到这个描述后,按照描述执行操作)

5.3.2 配置位置

settings.json 技能可以配置在两个位置:

位置 作用域 文件路径
项目级 当前项目 <project>/.claude/settings.local.json.claude/settings.json
用户级 所有项目 ~/.claude/settings.json

选择建议

  • 项目特有的技能(如该项目的部署流程、测试命令)→ 项目级
  • 所有项目通用的技能(如 Git 提交、代码格式化)→ 用户级

5.3.3 适用场景

settings.json 方式适合:

  • 简单的、一两句话能说清的操作
  • 不需要复杂的条件判断或错误处理
  • 快速创建,不需要单独维护文件

不适合:

  • 多步骤、有条件分支的复杂工作流
  • 需要详细的触发条件说明
  • 需要团队协作维护的技能(单独文件更方便 review)

5.4 创建方式二:插件目录创建完整技能

5.4.1 目录结构

对于复杂的技能,推荐在插件目录中创建单独的技能文件:

复制代码
~/.claude/plugins/
└── my-skill/
    └── skill.md          # 技能定义文件

项目级技能放在 <project>/.claude/plugins/ 目录下,用户级技能放在 ~/.claude/plugins/ 目录下。

5.4.2 skill.md 的结构

一个完整的 skill.md 文件包含 frontmatter 元数据和正文:

markdown 复制代码
---
name: my-skill
description: 运行自定义的 lint 检查并自动修复可修复的问题
---

# my-skill

## 触发条件
当用户输入 `/my-skill`,或提到 "运行 lint 检查"、"代码格式化" 时触发。

## 执行步骤
1. 运行 `pnpm run lint` 获取所有 lint 错误
2. 按错误类型分组(格式问题、语法问题、最佳实践问题)
3. 对于可自动修复的错误(如 Prettier 格式、import 排序),运行 `pnpm run lint:fix` 自动修复
4. 对于需要手动判断的错误(如未使用变量、any 类型),逐一向用户确认是否修复
5. 修复后再次运行 `pnpm run lint` 确认无错误
6. 输出修复报告:自动修复了多少个、手动确认了多少个、剩余多少个

## 注意事项
- 如果 lint 命令执行失败(如配置错误),停止执行并告知用户错误信息
- 自动修复前不需要确认,但手动修复必须逐一确认
- 修复完成后建议用户运行测试确认无回归

5.4.3 frontmatter 字段说明

字段 必填 说明
name 技能名称,即斜杠命令(如 git-save 对应 /git-save
description 技能的简短描述,用于自动补全列表中显示

5.4.4 正文的推荐结构

一个结构良好的技能正文应该包含:

  1. 触发条件:什么时候触发这个技能(斜杠命令、关键词匹配)
  2. 执行步骤:按顺序列出每一步操作,清晰明确
  3. 注意事项:错误处理、边界情况、需要用户确认的环节
  4. (可选)输出格式:执行完成后输出什么内容(如报告、摘要)
  5. (可选)验收标准:执行完成后进行测试是否能够达成目标

5.4.5 适用场景

插件目录方式适合:

  • 多步骤、有条件分支的复杂工作流
  • 需要详细的触发条件和错误处理
  • 需要团队协作维护(单独文件方便 review 和版本控制)
  • 技能逻辑可能频繁更新

5.5 项目级 vs 跨项目级 Skill

5.5.1 对比

维度 项目级 Skill 跨项目级(用户级)Skill
存放位置 <project>/.claude/plugins/.claude/settings.json ~/.claude/plugins/~/.claude/settings.json
作用范围 仅当前项目可用 所有项目都可用
适用场景 项目特有的工作流(部署流程、测试命令、构建脚本) 通用的工作流(Git 提交、代码格式化、通用代码审查)
版本控制 可以纳入 Git,团队共享 个人配置,不纳入项目版本控制
迁移成本 换项目需要重新创建 一次配置,所有项目生效

5.5.2 选择建议

判断一个 Skill 应该放哪一级,问自己两个问题

  1. 这个 Skill 只对当前项目有意义吗?

    • 是 → 项目级(如项目特有的部署流程、数据库迁移命令)
    • 否 → 跨项目级(如 Git 提交、代码格式化)
  2. 团队其他人需要用这个 Skill 吗?

    • 是 → 项目级(纳入 Git,团队共享)
    • 否 → 跨项目级(个人偏好)

常见的分类示例

Skill 级别 原因
/git-save(提交+推送) 跨项目级 所有项目都用 Git
/start-dev(启动开发环境) 项目级 每个项目的启动命令不同
/deploy-staging(部署到测试环境) 项目级 每个项目的部署流程不同
/lint-fix(代码检查并修复) 跨项目级 通用操作,但命令可能因项目而异
/code-review-deep(深度代码审查) 跨项目级 通用审查流程

5.5.3 从项目级迁移到跨项目级

如果你发现某个项目级 Skill 在多个项目中都需要,可以把它迁移到跨项目级:

  1. 把技能文件从 <project>/.claude/plugins/ 复制到 ~/.claude/plugins/
  2. 或者把 settings.json 中的技能配置从项目级复制到用户级
  3. 删除项目级的重复配置(避免冲突)
  4. 在其他项目中测试是否正常工作

5.6 Skill 生效与重载

5.6.1 自动扫描

Claude Code 会自动扫描以下目录中的技能文件:

  • <project>/.claude/plugins/
  • ~/.claude/plugins/

通常情况下,创建或修改技能文件后,Claude Code 会自动识别。但有时候可能需要手动重载。

5.6.2 手动重载

如果创建了技能但输入斜杠命令时不显示,尝试以下方法:

方法一:/reload-skills 命令

复制代码
/reload-skills

这个命令会重新扫描所有技能目录,加载新创建或修改的技能。

方法二:重启 VS Code

如果 /reload-skills 不生效,尝试重启 VS Code。重启后 Claude Code 会重新加载所有配置和技能。

方法三:检查文件位置和格式

如果重载后仍然不生效,检查:

  • 技能文件是否放在正确的目录(.claude/plugins/~/.claude/plugins/
  • frontmatter 格式是否正确(namedescription 字段是否存在)
  • 文件名是否为 skill.md(注意大小写)
  • settings.json 中的 JSON 格式是否正确(有没有语法错误)

5.6.3 常见不生效原因排查

问题 原因 解决方案
输入斜杠不显示技能 技能未被扫描到 /reload-skills 或重启 VS Code
技能显示但执行不对 指令描述不清晰 优化 skill.md 中的执行步骤,更具体明确
项目级技能不生效 文件放错位置 确认放在 <project>/.claude/plugins/ 而非 ~/.claude/plugins/
settings.json 技能不生效 JSON 语法错误 用 JSON 校验工具检查格式
技能名冲突 项目级和用户级有同名技能 重命名其中一个,或删除重复的

5.7 实战示例:三个实用 Skill

5.7.1 示例一:/git-save------一键提交并推送

技能文件~/.claude/plugins/git-save/skill.md(跨项目级)

markdown 复制代码
---
name: git-save
description: 一键完成代码提交和推送,包含变更预览和 Conventional Commits 格式的提交信息
---

# git-save

## 触发条件
用户输入 `/git-save`,或说"提交代码"、"保存并推送"时触发。

## 执行步骤
1. 运行 `git status`,查看变更文件列表
2. 运行 `git diff`,预览变更内容
3. 根据变更内容,生成符合 Conventional Commits 规范的提交信息
   - 格式:`type(scope): description`
   - type 可选:feat / fix / refactor / docs / style / test / chore
   - 向用户确认提交信息是否合适,不合适则调整
4. 运行 `git add .`
5. 运行 `git commit -m "{提交信息}"`
6. 运行 `git push`
7. 确认推送成功,告知用户提交完成

## 注意事项
- 如果 `git status` 显示没有变更,告知用户"没有需要提交的改动"并终止
- 如果 `git push` 失败(如网络问题、冲突),告知用户失败原因,不要自动重试超过 2 次
- 提交信息用英文,遵循 Conventional Commits 规范
- 如果变更涉及多个不相关的功能,建议用户分多次提交

使用效果 :输入 /git-save,AI 自动执行 7 步流程,你只需要确认 commit message。


5.7.2 示例二:/start-dev------一键启动开发环境

技能文件<project>/.claude/plugins/start-dev/skill.md(项目级)

markdown 复制代码
---
name: start-dev
description: 一键启动项目开发环境,包括数据库、缓存、后端和前端服务
---

# start-dev

## 触发条件
用户输入 `/start-dev`,或说"启动开发环境"、"启动服务"时触发。

## 执行步骤
1. 检查 Docker 是否运行
   - 运行 `docker info`,如果失败则告知用户"请先启动 Docker Desktop"并终止
2. 启动 PostgreSQL 和 Redis
   - 运行 `docker-compose up -d postgres redis`
   - 等待 5 秒,运行 `docker-compose ps` 确认服务状态为 healthy
   - 如果服务未启动成功,告知用户并终止
3. 启动后端服务
   - 在新终端运行 `pnpm dev:server`
   - 等待输出 "Server running on port 3000"
   - 如果启动失败,查看错误日志并告知用户
4. 启动前端服务
   - 在新终端运行 `pnpm dev:client`
   - 等待输出 "Vite ready in"
   - 如果启动失败,查看错误日志并告知用户
5. 汇总状态
   - 告知用户所有服务已启动
   - 列出访问地址:
     - 前端页面:http://localhost:5173
     - 后端 API:http://localhost:3000
     - API 文档:http://localhost:3000/api-docs

## 注意事项
- 如果某一步失败,停止后续步骤并告知用户失败原因
- 启动前可以先运行 `/stop-dev` 清理旧进程(如果有该技能)
- 不要在同一个终端中启动多个服务,每个服务用独立终端

使用效果 :输入 /start-dev,AI 自动按顺序启动 4 个服务,全部就绪后告诉你访问地址。


5.7.3 示例三:/lint-fix------代码检查并自动修复

技能文件~/.claude/plugins/lint-fix/skill.md(跨项目级)

markdown 复制代码
---
name: lint-fix
description: 运行 lint 检查,自动修复可修复的问题,手动确认需要判断的问题
---

# lint-fix

## 触发条件
用户输入 `/lint-fix`,或说"代码检查"、"lint 修复"时触发。

## 执行步骤
1. 检测项目使用的 lint 工具
   - 检查 package.json 中是否有 eslint、prettier、stylelint 等
   - 确定 lint 命令(通常是 `npm run lint` 或 `pnpm lint`)
2. 运行 lint 检查,获取所有错误
3. 按错误类型分组:
   - 可自动修复:格式问题、import 排序、未使用的 import
   - 需手动确认:未使用的变量、any 类型、命名规范问题
   - 需人工修复:逻辑错误、复杂的类型错误
4. 自动修复可自动修复的问题
   - 运行 `lint --fix` 或 `prettier --write`
5. 逐一展示需手动确认的问题,询问用户是否修复
   - 每个问题显示:文件位置、问题描述、修复建议
   - 用户确认后执行修复
6. 需人工修复的问题,列出清单告知用户,不自动修改
7. 再次运行 lint 确认无错误(或仅剩人工修复项)
8. 输出修复报告:
   - 自动修复:X 个
   - 手动确认修复:Y 个
   - 需人工修复:Z 个(列出清单)

## 注意事项
- 自动修复前不需要确认,但修改后要展示修改了什么
- 手动确认的问题必须逐一询问,不要批量修改
- 人工修复项只列出,不自动修改
- 修复完成后建议运行测试确认无回归

使用效果 :输入 /lint-fix,AI 自动检测工具、运行检查、分组处理、输出报告。


5.8 Skill 设计三原则

原则一:单一职责

一个 Skill 只做一件事。不要把「启动环境 + 写代码 + 测试 + 提交 + 部署」全部塞到一个 Skill 里。

复制代码
❌ 不好:/do-everything(启动→编码→测试→提交→部署,一个技能全干)
✅ 好:/start-dev(启动环境)+ /run-tests(跑测试)+ /git-save(提交)+ /deploy(部署),四个技能各司其职

原因

  • 单一职责的 Skill 更容易维护和调试
  • 可以灵活组合使用(有时候只想启动环境,不想提交)
  • 出错时容易定位是哪个环节的问题

原则二:粒度适中

Skill 的步骤数量要适中。太少(1-2 步)不值得封装成 Skill,直接告诉 AI 就行;太多(15+ 步)难以维护和调试。

复制代码
❌ 太少:/echo(就运行 echo hello,完全没必要)
❌ 太多:/full-pipeline(20 步,包含构建+测试+审查+部署+通知+监控,太复杂)
✅ 适中:/git-save(7 步)、/start-dev(5 步)、/lint-fix(8 步)

建议:每个 Skill 3-10 步比较合适。超过 10 步考虑拆分成多个 Skill,或用 Subagent 多代理来协调(第 7 章讲解)。

原则三:错误处理

Skill 中要考虑每一步可能失败的情况,并定义失败后的行为。

复制代码
❌ 不好:只写"运行 git push",不考虑 push 失败怎么办
✅ 好:写"运行 git push,如果失败(网络问题/冲突),告知用户原因,不要自动重试超过 2 次"

错误处理的三个层次

  1. 检测失败:每一步执行后检查是否成功(退出码、输出内容)
  2. 处理失败:定义失败后的行为(终止、重试、告知用户、降级)
  3. 恢复失败:如果 Skill 执行到一半失败,确保不会留下不一致的状态(如 commit 了但没 push)

5.9 本章小结

本章系统讲解了自定义 Skill 的创建和使用,核心知识点:

  1. 为什么需要 Skill:把重复的多步骤工作流封装成一键命令,保证一致性、提升效率、支持团队共享。
  2. 两种创建方式:settings.json 注册(简单指令模板,适合 1-2 步操作)和插件目录创建(完整 skill.md,适合多步骤复杂工作流)。
  3. skill.md 结构:frontmatter(name + description)+ 正文(触发条件 + 执行步骤 + 注意事项)。
  4. 项目级 vs 跨项目级:项目特有工作流放项目级(纳入 Git 团队共享),通用工作流放用户级(所有项目生效)。
  5. 生效与重载 :创建后通常自动扫描,不生效时用 /reload-skills 或重启 VS Code,检查文件位置和格式。
  6. 三个实战示例/git-save(一键提交推送)、/start-dev(一键启动环境)、/lint-fix(代码检查修复)。
  7. 设计三原则:单一职责(一个 Skill 只做一件事)、粒度适中(3-10 步)、错误处理(检测+处理+恢复)。

下一章我们将学习代码审查体系,了解 Claude Code 的四道审查命令,以及如何构建分级审查流程。


完整抄写题目之后给出参考答案

课后思考

  1. 基础题 :自定义 Skill 的两种创建方式分别是什么?各自适合什么场景? 提示:从「配置位置」「复杂度」「适合场景」三个维度对比。

参考答案:

两种创建方式:内联Skill(写在 CLAUDE.md独立文件Skill(.claude/plugins/*.md 独立插件文件)

对比维度 内联Skill(CLAUDE.md内编写) 独立文件Skill(.claude/plugins/xxx.md
配置位置 直接写在项目根目录CLAUDE.md里面 存放在 .claude/plugins/ 独立Markdown文件
复杂度 适合简短、步骤少的流程;不宜过长 支持长流程、多步骤、大量说明、示例模板
加载特点 每次会话完整跟随CLAUDE.md一起加载 按需加载,不会增加CLAUDE.md体积
适合场景 简单小脚本、2‑5步以内高频小操作,例如/git‑save简易版本、简单代码检查;项目少量简短指令 复杂多步骤工作流、完整流程Skill;需要大量示例、错误处理、详细说明;多个Skill需要管理;团队共享复杂Skill
  • 内联Skill:简单轻量,快速写一个小命令,缺点会增加CLAUDE.md行数,不能写过于庞大流程。
  • 独立文件Skill:复杂大工作流,把内容移出CLAUDE.md,避免主文件膨胀,方便维护多个Skill。
  1. 基础题 :项目级 Skill 和跨项目级 Skill 有什么区别?如何判断一个 Skill 应该放哪一级? 提示:问自己两个问题------「只对当前项目有意义吗?」「团队其他人需要用吗?」

参考答案:

区别

  1. 项目级Skill

    存放位置:项目目录内 .claude/plugins/ 或者写进项目CLAUDE.md纳入Git版本管理,团队成员克隆项目自动获得

    作用域:仅当前这一个项目生效。

    内容一般是和本项目强绑定:本项目特定脚本、项目目录约定、项目专属部署命令。

  2. 跨项目(全局)Skill

    存放位置:用户全局目录(~/.claude/plugins/),不进入当前项目Git,本机所有项目都可以使用 ,属于个人本机偏好。

    作用域:本机全部项目通用。

    内容是通用软件工程操作,和具体业务无关。

判断规则(两个判断问题)

① 是否只针对当前项目才有意义 、团队其他成员也需要这套流程 → 放项目级Skill ,提交到Git,团队共享。

② 属于你个人通用工作习惯,和具体项目无关,别的项目也想用,不需要分享给团队其他人 → 放全局跨项目Skill,不纳入项目Git。

判断口诀:项目特有、团队要共用 → 项目级;个人通用、所有项目都复用、不需要给别人 → 全局跨项目级。

  1. 进阶题 :Skill 设计三原则是什么?请分析以下 Skill 设计是否合理,并说明原因:一个名为 /full‑workflow 的 Skill,包含「启动环境→编写代码→运行测试→代码审查→提交→部署→通知团队」共 12 步。 提示:用单一职责和粒度适中两个原则来分析。

参考答案:

Skill设计三原则

  1. 单一职责原则:一个Skill只做一件明确的事,职责清晰,不要把多个完全独立业务目标揉进同一个Skill。
  2. 粒度适中原则:粒度不能过小也不能过大;粒度太大,中间一旦失败整体很难恢复;粒度过碎,调用繁琐。
  3. 具备错误处理原则:要考虑中途失败,有状态检测、报错提示、可恢复/可回退逻辑,避免半完成不一致状态。

案例分析 /full‑workflow(12步大而全流程)

不合理。

原因:

  1. 违反单一职责:把开发、测试、审查、git提交、部署、通知等多个完全独立的目标全部打包到一个Skill。很多场景我只需要做代码审查,并不需要部署和通知团队,但是这个Skill无法单独调用其中某一部分。
  2. 粒度过大:一共12个步骤,链条很长。任意一步(例如部署、通知)失败,前面步骤(写代码、commit)已经执行完成,系统会停留在中间半完成的不一致状态,很难局部重试、回退。
  3. 灵活性差:不同场景需要跳过部分环节,大单体Skill很难适配。

改进方案:拆分成多个小粒度Skill

/code‑write/code‑review/git‑save/deploy/notify‑team,每个Skill职责单一。

由人或者上层Workflow按需组合调用各个小Skill,而不是全部硬编码到一个巨型Skill。

  1. 进阶题 :如果你的 Skill 执行到一半失败了(比如 /git‑save 在 commit 成功后 push 失败),可能会留下什么不一致的状态?你会如何在 Skill 设计中避免或处理这种情况? 提示:考虑「commit 了但没 push」的状态,以及 Skill 错误处理的三个层次(检测+处理+恢复)。

参考答案:

会留下的不一致状态

例子场景:commit执行成功,但是网络问题导致push失败。

  1. 本地已经生成新commit,远程仓库没有这条commit :本地与远程不同步;再次重复执行/git‑save,容易产生重复commit。
  2. 工作区、暂存区状态不确定:部分操作已经执行,部分没有执行,处于半完成中间态。
  3. Skill内部认为执行失败,但是本地已经产生修改,直接重新运行会带来副作用。

Skill错误处理三层策略:检测 → 处理 → 恢复

  1. 执行前前置检测(预防)

    执行Skill之前先检测当前状态:检查是否存在未提交改动;检查远程网络连通性;对比本地分支与远程分支状态。条件不满足直接提前终止,不往下执行。

  2. 中途失败状态检测(执行中)

    每一个重要步骤完成之后,增加状态校验。例如commit之后检测commit是否真实生成;push之后检测本地与远程分支是否对齐。一旦某一步返回失败,立刻终止后续步骤,不要继续往下跑,并且把当前不一致状态清晰输出告诉用户。

  3. 失败之后提供恢复手段(事后)

  • 告诉用户当前准确状态:例如提示"commit已经生成本地,但push推送远程失败,请检查网络";
  • 给出可选恢复方案:①修复网络后,单独执行push;②不需要本次commit,提供回退命令(git reset --mixed HEAD~1)撤销本次本地commit;
  • 不要自动强行回退用户代码,把选择权交给人,避免误删用户有效提交。

不建议在Skill内部遇到push失败就自动硬回退commit,有可能commit是用户重要改动。优先报告状态,给出手动恢复选项。

  1. 开放题 :回顾你自己的 Vibe Coding 日常工作流,列出 3 个你觉得最适合封装成 Skill 的重复操作。为其中一个设计 Skill 的执行步骤(参考本章的实战示例格式)。 提示:从「每天都要做」「步骤固定」「容易遗漏」三个角度找候选。

参考示例答案(开放题,言之有理即可)

适合封装Skill的3个重复操作示例

  1. /git‑safe‑save:代码修改后,add、commit、push,同时检查有没有密钥/密码意外提交(每天高频,步骤固定,容易漏安全检查)
  2. /quick‑review:对改动文件做快速轻量代码审查,检查语法错误、异常处理、硬编码密钥;适合每次修改完快速质检。
  3. /milestone‑check:到达里程碑节点,执行:冒烟测试 + 完整code review + 更新文档 + 输出milestone报告。

选取其中一个:/git‑safe‑save Skill执行步骤示例

Skill名称:/git‑safe‑save

作用:安全保存改动,执行git提交推送,同时防止密钥、密码被误提交。

执行步骤:

  1. 收集本次改动文件列表,扫描文件内容,检测是否存在密钥、access‑key、密码等敏感信息;
    • 如果发现敏感信息:直接终止Skill,输出风险文件列表,提示用户处理敏感内容,禁止继续提交。
  2. 确认有真实代码改动;若无改动,直接提示"没有需要提交的改动",结束。
  3. 要求生成简洁规范commit message(Conventional Commits 规范)。
  4. 执行git add添加改动文件。
  5. 执行git commit,使用上面生成的commit message。
  6. 尝试执行git push推送远程。
    • ✅push成功:输出成功提示,展示本次commit简短信息,Skill结束。
    • ❌push失败:立刻终止后续步骤,输出提示:本地commit已生成,但推送远程失败,请检查网络/远程仓库状态 ;同时提供两个可选操作提示:
      • 方案1:修复网络后,手动执行 git push
      • 方案2:不需要本次提交,执行 git reset HEAD~1 撤销本地commit。

补充:Skill不自动执行回退,只把状态、命令提示给用户,由人做决策。

相关推荐
云上工程笔记1 小时前
AstraFlow + React/Vite:如何用自然语言开发并部署一个 AI 咖啡网站原型
前端·人工智能·react.js
醍醐实验室1 小时前
长文本外推中的 RoPE Base 调优:从 10,000 到 500,000 的数学底数奥秘
人工智能
搞科研的小刘选手1 小时前
【香港中文大学(深圳)、IEEE主办 | 深圳举办】第六届IEEE能源工程与电力系统国际学术会议(EEPS 2026)
人工智能·电力系统·能源工程·香港中文大学(深圳)·会议推荐
weixin_446260851 小时前
面向编码智能体的「先学测试,再用测试提升修复能力」框架
人工智能
2401_865382501 小时前
政务信息化项目审价的现实意义
大数据·人工智能·政务
lvts_cs1 小时前
汽车零部件产业发展趋势,对地方招商工作带来的影响
大数据·人工智能·汽车
AI云海1 小时前
计算机视觉之YOLO11整体架构、多任务能力
人工智能·计算机视觉·架构
Axis tech1 小时前
基于Ego-Pi框架与Manus手套的仿人机器人灵巧操作研究
人工智能·机器学习·机器人
我有满天星辰2 小时前
《从 0 打造我的本地 AI 知识库:Obsidian + Ollama + Milvus + RAG + MCP + Agent》第 01 篇
人工智能·milvus