← Back to list

commit-message
by dacheng-gao
Learn AI, Use AI
⭐ 3🍴 0📅 Jan 23, 2026
SKILL.md
name: commit-message description: 当需要基于已暂存的 git 变更或粘贴的 diff 生成 Conventional Commits 提交信息时使用。
提交信息生成器
生成符合 Conventional Commits 的提交信息。核心:抓住主要变更,用标准格式表达。
语言规则: 提交信息必须为英文(遵循全局语言规则)。
何时使用
使用场景:
- 需要基于已暂存变更或粘贴的 diff 生成 Conventional Commits 信息
- 需要帮助选择 type/scope,或写清晰的 subject/body/footer
- diff 很大,需要提炼主要意图
不使用场景:
- 没有 diff 且用户拒绝提供
- 被要求非 Conventional-Commits 格式
步骤 1:获取已暂存 diff
运行:
GIT_PAGER=cat git diff --staged
处理边界情况:
- 输出为空 → 回复:"暂无已暂存的变更。请先使用
git add暂存文件或手动粘贴 diff。" - 命令失败 → 请用户手动粘贴已暂存 diff。
步骤 2:分析变更
识别:
- 主要目的 — 变更的核心意图是什么?
- 影响范围 — 主要影响哪个模块/组件/文件?
- 破坏性变更 — 是否破坏现有 API 或行为?
大型 diff 处理(>300 行)
- 按文件/模块总结变更
- 聚焦主要目的
- 若应拆分 → 建议:"建议拆分为多个提交:[列表]"
步骤 3:生成提交信息
快速参考
提交类型
| 类型 | 何时使用 |
|---|---|
feat | 面向用户的新功能 |
fix | Bug 修复 |
docs | 仅文档 |
style | 仅格式,无代码变化 |
refactor | 代码重构,无行为变化 |
perf | 性能优化 |
test | 添加/修复测试 |
build | 构建系统、依赖 |
ci | CI/CD 配置 |
chore | 维护、工具 |
revert | 回滚先前提交 |
格式规则
<type>[(scope)]: <subject>
[body]
[footer]
| 要素 | 规则 |
|---|---|
| Subject | 祈使语气,≤72 字符(建议 ≤50),不以句号结尾 |
| Body | 说明 what 与 why(不是 how),72 字符换行,可选 |
| Footer | BREAKING CHANGE:, Fixes #123, Refs #456,可选 |
选择 Scope
Scope 应为描述影响范围的名词:
- Module name:
auth,api,db - Component:
button,header,modal - Feature:
login,payment,notifications
若变更过于广泛或跨多个区域,跳过 scope。
避免
- ❌ 含糊动词:
update,change,modify(除非不可避免) - ❌ 过去时:
added,fixed→ 用add,fix - ❌ 以冠词开头:
Add a feature→Add feature
步骤 4:自检
输出前检查:
- Subject ≤72 characters
- Uses imperative mood ("add" not "added")
- Type matches the primary change
- No vague verbs unless essential
- Breaking changes noted in footer if applicable
输出格式
只输出代码块内的提交信息,不给 Git 命令或解释。 例外:如果没有 diff,请请求已暂存 diff,而不是输出提交信息。
<type>[(scope)]: <subject>
[body]
[footer]
常见错误
- 输出解释而不是代码块
- 使用含糊动词或过去时
- 变更跨多区域时强行加 scope
- 行为破坏时遗漏
BREAKING CHANGE:
借口 vs 事实
| 借口 | 事实 |
|---|---|
| “没有已暂存变更,随便猜” | 没有 diff 就没有证据。请求暂存 diff 或粘贴变更。 |
| “措辞随便” | Conventional Commits 格式影响工具与变更日志。 |
| “Scope 一定要有” | 跨多区域就跳过 scope。 |
红旗 - 立刻停止
- 未提供已暂存 diff 或粘贴的变更
- 输出包含解释而不是代码块
- Subject 为过去时或以句号结尾
示例
fix(checkout): prevent duplicate order submission
Race condition allowed double-click to create duplicate orders.
Add idempotency key validation before processing.
Fixes #1234
Score
Total Score
60/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon