commit-msg
确定范围 → 把提交意图压成一行 message → 弹窗确认 → git commit。message 是意图概括,不是逐文件罗列。
调用
| 情况 | 行为 |
|---|---|
默认(语义触发、/commit-msg、被其他 skill 调用) |
完整流程 |
| 「仅要 message」(含「写 / 生成 commit message」「写个提交信息」类措辞) | 只输出一行 message,不改仓库 |
| 已给出 message(如「用 fix: xxx 提交」) | 跳过生成,直接弹窗确认后 commit |
终态
供用户与调用方(如 create-pr)核验。create-pr 仅在 COMMITTED 且实测 HEAD 前移、git diff --cached 为空时继续。
| 终态 | 含义 |
|---|---|
COMMITTED |
成功;附 SHA 与文件清单;HEAD 已前移、暂存区已清空 |
CANCELLED |
用户取消任一弹窗;未改 git 状态 |
FAILED |
commit 失败(如 hook 拒绝);附报错原文与当时 index/工作区状态。hook 可能留下部分改动,不得谎称已恢复 |
流程
- 读暂存区:
git status --short+git diff --cached,不能只靠文件名。- 暂存区非空:只提交暂存内容,不要
git add其它未暂存改动。 - 暂存区空、工作区有改动:
AskUserQuestion「暂存全部改动并提交」(git add -A)/「取消,不提交」。未同意前不git add。取消 →CANCELLED。 - 都空:停止。
- 暂存区非空:只提交暂存内容,不要
- 对齐风格:
git log --oneline -10。贴近仓库习惯,不要强套 Conventional Commits;新提交优先type: subject。 - 归纳主语义:覆盖暂存区全部改动的一个更高层概括。多类改动找主目的;过散也给一行诚实概括。
- 弹窗确认:
AskUserQuestion展示 message + 文件清单,「确认提交」/「取消」。Other 输入视为新 message。未确认不得git commit。取消 →CANCELLED。 - 提交:message 写入临时文件后
git commit -F <文件>,再删临时文件。禁止git commit -m "..."(反引号 /$()/ 引号会破坏 shell)。成功 →COMMITTED(SHA + 文件清单)。失败 →FAILED(报错原文 + 实际 git 状态),不隐藏、不重试掩盖。 - 不推送。
Message 规范
<type>: <subject> 或 <type>(<scope>): <subject>。无明确 scope 则省略(Yakit 多数无 scope)。
- 祈使语气(添加 / 修复 / 更新 / 优化),中文为主,术语/组件名保留英文。
- 无句号;尽量 ≤72 字符(中文按 2 计)。
- 禁止 WIP、misc、update files、修改、调整;不要手写
(#PR号)(GitHub 合并 PR 时自动加)。
| type | 用途 |
|---|---|
feat |
新功能 / 页面 / 选项 |
fix |
用户可见行为修正 |
perf |
性能 |
refactor |
重构(行为不变) |
style |
样式 / UI(无逻辑变化) |
docs |
文档(含 AGENTS.md、README、注释) |
test |
测试 |
build |
构建 / 依赖 / Vite / electron-builder |
ci |
CI |
chore |
脚本、工程化、版本号 |
scope 例:webfuzz、agents、renderer、electron、aiAgent、License。
示例
feat: 添加支持多子Agent的配置选项
fix: 暗色主题下关闭记事本时内容区闪白
docs(agents): 完善启动指南的依赖检查与用户决策弹框交互
build(renderer): 将主渲染端与 Link 从 CRA/Vite6 迁移至 Vite 8