commit-msg
Installation
SKILL.md
Commit Msg
当用户明确要求生成 commit message、整理提交说明,或提到 commit-msg 时,使用本技能。
不要用于:
- 自动执行
git add或git commit - 代替正式 code review
- 生成 release notes 或 changelog
核心方式
- 默认先看已暂存变更;用户明确说
all、全部变更或包含未暂存时,再看整个工作区 diff。 - 先判断这批改动是否适合一个提交;过于混杂时,先提醒拆分。
- 根据改动意图归类为
feat、fix、refactor、style、docs、test或chore。 - 先给一条可直接使用的 subject,再给 2-5 条 body 要点。
- 顺带列出主要变更文件,帮助用户判断 message 是否过宽。
输出要求
- 使用 Conventional Commit 风格:
<type>: <subject> subject简洁聚焦,不堆砌文件名body使用中文 flat bullets,说明核心改动- 不加 emoji、AI 声明或
Co-Authored-By - 不替用户执行提交命令
落盘命令(强制 heredoc)
输出 message 后,必须额外给出可直接复制执行的 heredoc 命令,让 git 正确保留 subject 单行 + 空行 + body 多行 bullet 的结构:
git add <文件列表> && git commit -m "$(cat <<'EOF'
<type>: <subject>
- 变更点1
- 变更点2
- 变更点3
EOF
)"
<<'EOF' 用单引号围栏,避免 $、反引号被 shell 展开。
禁止的反例
- ❌
git commit -m "feat: x\n- a\n- b"——\n是字面字符串,shell 不会解析为换行,整段会被塞进 subject 行。 - ❌
git commit -m "feat: x - a - b"—— body 被压成单行,丢失 markdown 列表结构,GitHub Release /git log都无法正确渲染。 - ❌ 把多个 bullet 用空格拼接进 subject —— subject 应保持单一主题,最长不超过 80 字符。
自验
落盘后用 git log -1 --pretty=format:'%s%n---%n%b' 检查:subject 必须单行、body 必须保留每行独立的 - bullet。
按需展开
- 类型选择:
references/commit-types.md - 格式约束:
references/message-format.md
Related skills
More from doccker/cc-use-exp
java-dev
Java 开发规范,包含命名约定、异常处理、Spring Boot 最佳实践等
326frontend-dev
前端开发规范,包含 Vue 3 编码规范、UI 风格约束、TypeScript 规范等
55go-dev
Go 开发规范,包含命名约定、错误处理、并发编程、测试规范等
37python-dev
Python 开发规范,包含 PEP 8 风格、类型注解、异常处理、测试规范等
36ops-safety
当用户执行系统级命令(sysctl、iptables、systemctl、Docker 配置、数据库 DDL)或进行服务器运维操作时触发。提供运维安全规范。
34bash-style
当用户操作 .sh、Dockerfile、Makefile、.yml、.yaml 文件,或在 Markdown 中编写 bash 代码块时触发。提供 Bash 编写规范。
34