核心功能
- 变更分析:自动读取 git diff 和 git status,展示变更文件列表
- 选择性提交:支持用户选择提交部分文件,跳过其他文件
- 格式强制:提交信息必须符合
type(scope): message格式 - Scope 校验:scope 必须为
mcp、skills、models、prompt之一 - 智能询问:当 scope 不明确时,主动询问用户确定具体 scope
工作流程
1. 检查 Git 状态
- 执行
git status获取当前状态 - 检查是否有未提交的变更
- 如果没有变更,提示用户"没有需要提交的变更"
2. 分析变更文件
- 执行
git diff --name-status获取变更文件列表 - 执行
git diff --stat获取变更统计 - 将变更文件按 scope 分类:
mcp/目录下的文件 → scope: mcpskills/目录下的文件 → scope: skillsmodels/目录下的文件 → scope: modelsprompt/目录下的文件 或.prompt.md文件 → scope: prompt- 其他目录 → 需要询问用户确定 scope
3. 询问提交范围
- 显示所有变更文件列表
- 询问用户:"要提交所有变更文件吗?还是只提交部分文件?"
- 如果用户选择部分文件,让用户指定要提交的文件
- 记录最终要提交的文件列表
4. 确定提交信息
4.1 确定 type
按照以下流程图判断提交类型,最终输出 type 值:
flowchart TD
Start([开始判断类型]) --> A{是否在回滚<br/>之前的提交?}
A -- 是 --> Revert[revert]
A -- 否 --> B{"涉及 CI/CD?"}
B -- "CI/CD 配置: workflows /<br/>.gitlab-ci.yml / Jenkinsfile<br/>Dockerfile 等" --> Ci[ci]
B -- 否 --> C{是否变更了<br/>构建系统或依赖?}
C -- 否 --> E{文件类型判断}
C -- 是 --> C1{"是依赖/锁文件吗?"}
C1 -- "yarn.lock / pnpm-lock.yaml<br/>Cargo.toml / go.mod 等" --> BuildDeps["build(deps)"]
C1 -- 否 --> C2{"是构建配置吗?"}
C2 -- "webpack / vite / tsconfig.json<br/>Makefile 等" --> BuildConfig["build(config)"]
C2 -- 否 --> C3{"是 package.json 吗?"}
C3 -- 否 --> E
C3 -- 是 --> D1{"变更了<br/>dependencies / scripts?"}
D1 -- 是 --> BuildJson["build(deps)"]
D1 -- 否 --> ChoreJson[chore]
E -- 测试文件<br/>.test/.spec --> Test[test]
E -- 文档文件<br/>.md --> Docs[docs]
E -- 其他文件 --> G{变更意图判断}
G -- 新增功能/文件 --> Feat[feat]
G -- 修复错误/bug --> Fix[fix]
G -- 添加/移除调试代码 --> Debug[debug]
G -- 代码风格调整<br/>格式化/对齐 --> Style[style]
G -- UI 视觉调整<br/>边框/颜色/布局 --> UI[ui]
G -- 重构逻辑<br/>不改功能 --> Refactor[refactor]
G -- 性能优化 --> Perf[perf]
G -- 工作进行中<br/>临时提交 --> Wip[wip]
G -- 辅助性变更<br/>无法归类其他类型 --> Chore[chore]
类型说明表:
| Type | 说明 | SemVer |
|---|---|---|
revert |
回滚之前的提交 | - |
ci |
CI/CD 配置变更(workflows、Dockerfile 等) | - |
build |
构建系统或外部依赖变更(scope: deps / config) |
- |
chore |
不属于其他类型的辅助性变更(文件重命名、package.json 元数据等) | - |
test |
测试相关变更 | - |
docs |
文档更新或修改 | - |
feat |
新功能或新特性 | MINOR |
fix |
修复 bug 或错误 | PATCH |
debug |
添加/移除调试代码 | - |
style |
代码风格调整(格式化、对齐等,不影响逻辑) | - |
ui |
UI 视觉样式调整(边框、颜色、布局等) | - |
refactor |
代码重构(既不是修复 bug 也不是新功能) | - |
perf |
性能优化 | - |
wip |
工作进行中(临时提交) | - |
注意: 部分场景的推荐 scope(如
build(deps)/build(config))在流程图中已内置,实际提交时可以自行判断。
4.2 确定 scope
- Scope 选择:
- 如果 4.1.1 节有推荐 scope,先显示推荐 scope
- 显示完整 scope 列表(带描述)
- 用户可以通过以下方式选择:
- 输入数字选择(如输入
1选择mcp) - 直接输入 scope 名称(如输入
mcp) - 输入自定义 scope(如输入
custom)
- 输入数字选择(如输入
- 如果用户输入自定义 scope,确认是否要使用该 scope
- Scope 列表(提供详细描述帮助用户选择):
mcp: MCP 项目相关变更skills: Skills 项目相关变更models: Models 项目相关变更prompt: Prompt 项目相关变更- 其他目录 → 需要询问用户确定 scope
4.3 生成 message
- 询问用户提交信息(message)
- 确保 message 简洁明了,使用中文或英文
5. 执行提交
- 构建完整的提交信息:
type(scope): message, 必要时可以补充 body 部分以添加更详细的说明 - 显示最终的提交信息供用户确认
- 如果用户确认,执行
git add <files>添加选定的文件 - 执行
git commit -m "type(scope): message" - 显示提交结果
6. 提交后操作
- 显示
git log --oneline -5查看最近提交 - 询问用户是否需要推送到远程仓库