关于 commit-smart
用于分析 Git 变更并拟定 Conventional Commits 类型、范围和消息的技能。它会提供暂存建议,并在提交前请求确认。
主要功能
- 01检查工作区和差异
- 02建议暂存哪些文件
- 03判断提交类型和范围
- 04起草 Conventional Commits 消息
- 05提交前请求确认
适用场景
- 01功能变更后准备提交
- 02归类相关的未暂存文件
- 03检查拟定的提交消息
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill commit-smart安装后在 Claude Code 中输入/commit-smart确认已加载。
详细介绍
智能提交
通过分析实际更改,创建有意义的 Conventional Commits 提交。
工作流
第 1 步:检查工作区
运行以下命令,了解当前状态:
git status
git diff --stat
git diff --cached --stat
第 2 步:处理未暂存的更改
如果没有暂存任何内容(git diff --cached 为空):
- 向用户展示已更改的文件
- 根据逻辑分组建议暂存内容(例如,“这 3 个文件都与身份验证重构有关”)
- 询问用户是要全部暂存,还是选择特定文件
- 使用
git add <files>暂存获准的文件
如果更改已暂存,则继续分析。
第 3 步:分析差异
阅读完整的已暂存差异:
git diff --cached
根据更改确定提交类型:
| 信号 | 类型 |
|---|---|
| 新增文件并带来新功能 | feat |
| 新增测试文件或测试内容 | test |
| 修改现有逻辑以修复错误行为 | fix |
| 不改变行为的结构调整 | refactor |
| 修改 package.json、tsconfig、CI 配置 | chore |
| 修改构建器配置 | build |
| 仅修改 README、文档、注释 | docs |
| 仅涉及格式、空格、分号 | style |
| 性能改进 | perf |
根据主要受影响的目录或模块确定范围:
src/api/->apisrc/components/auth/->authtests/->tests- 根目录配置文件 -> 省略范围
- 多个互不相关的区域 -> 省略范围
第 4 步:检查用户指定的覆盖项
如果用户通过 $ARGUMENTS 提供了参数:
- 一个词(例如,
fix)-> 将其用作提交类型 - 两个词(例如,
refactor api)-> 将其用作类型和范围 - 其他情况 -> 使用自动检测的值
第 5 步:编写提交消息
格式:type(scope): imperative short description
规则:
- 标题行最多 72 个字符
- 使用祈使语气(“add”“fix”“refactor”,而不是“added”“fixes”)
- 末尾不加句号
- 正文解释此次更改的原因,而非更改内容(差异中已展示更改内容)
- 如果更改很小(拼写错误修复、格式调整),则省略正文
示例:
feat(auth): add JWT refresh token rotation
Tokens were expiring mid-session for users with slow connections.
Rotating refresh tokens extends the session without compromising
security, since each refresh token can only be used once.
第 6 步:确认并提交
向用户展示拟定的提交消息,并征求确认。
如果用户确认,运行:
git commit -m "<message>"
然后使用以下命令验证:
git log --oneline -1
显示已提交的哈希和消息。
提示
- 在完成一个逻辑工作单元后运行,而不是每次更改文件后都运行
- 如果差异太大,不适合放在一个提交中,请建议拆分为多个提交
- 对于破坏性更改,在范围后添加
!:feat(api)!: change response format - 正文应回答:“如果有人在 6 个月后阅读这条提交记录,能否理解为什么要进行此更改?”
评论
支持 Markdown