智能 Git 提交助手:审查代码变更、分析提交历史、生成符合项目规范的提交信息并执行提交。支持自定义规范、提交前确认和智能暂存区处理。
/plugin marketplace add junjiangao/ccode/plugin install ccode-skills@ccode-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
README.mdREFERENCE.md智能化的 Git 提交工作流,集成代码审查、历史分析和规范化提交信息生成。
提交、commit、git commit、提交代码用户: "帮我提交这些代码"
用户: "审查并提交当前的修改"
用户: "创建一个 commit"
用户: "把这些改动提交到 git"
# 检查暂存区
git status --porcelain
git diff --cached --stat
# 如果暂存区为空,列出工作区文件
git status --short
git diff --name-status
决策逻辑:
列出工作区文件:
# 获取所有修改、新增、删除的文件
git status --short
# 输出格式:
# M src/main.rs (修改)
# A src/config.rs (新增)
# D old/legacy.rs (删除)
# ?? untracked.txt (未跟踪)
使用 AskUserQuestion 工具询问:
根据用户选择执行 git add 操作。
检查项:
cargo check、npm run lint 等)不执行深度审查(不调用 Codex MCP),保持快速反馈。
git log --oneline -10
git log --format="%s" -20
分析目标:
从 Memory 中查找项目级提交规范:
# 使用项目级精确查询,避免跨项目污染
mcp__memory__search_nodes(query: "project:<repo>:commit-convention")
mcp__memory__open_nodes(names: ["project:<repo>:commit-convention"])
命名空间说明:
<repo> 应替换为实际的仓库名称(如 ccode、myproject)project: 前缀确保查询范围限定在当前项目"commit convention"),防止匹配到其他项目的规范规范来源优先级:
使用 mcp__sequential-thinking__sequentialthinking 分析变更并生成提交信息:
思考步骤(6-8 步):
git diff --cached 的变更内容提交信息格式(根据项目规范):
<type>: <简洁描述>向用户展示:
📊 变更摘要:
- 修改文件:3 个
- 新增行:+45
- 删除行:-12
📝 提交信息:
feat(config): 添加 TOML 配置支持
- 实现 TOML 配置读取
- 添加 .env 文件支持
- 更新配置迁移逻辑
✅ 代码审查:通过(无明显问题)
是否确认提交?
用户确认后执行:
git commit -m "$(cat <<'EOF'
<提交信息>
EOF
)"
验证提交成功:
git log -1 --oneline
{
"name": "mcp__memory__search_nodes",
"parameters": {
"query": "project:<repo>:commit-convention"
}
}
{
"name": "mcp__memory__open_nodes",
"parameters": {
"names": ["project:<repo>:commit-convention"]
}
}
注意:<repo> 应替换为实际仓库名,如 project:ccode:commit-convention
{
"name": "mcp__sequential-thinking__sequentialthinking",
"parameters": {
"thought": "分析 git diff 变更内容...",
"thoughtNumber": 1,
"totalThoughts": 6,
"nextThoughtNeeded": true
}
}
1. 检查暂存区状态(git status --porcelain, git diff --cached --stat)
2. 如果暂存区为空:
- 使用 git status --short 列出所有工作区修改文件
- 询问用户选择提交范围(全部/特定文件/取消)
- 根据选择执行 git add
3. 简单代码审查(语法、明显问题)
4. 分析最近 20 条提交历史(git log --format="%s" -20)
5. 从 Memory 读取项目提交规范(使用 project:<repo>:commit-convention 精确查询)
6. 使用 Sequential Thinking 生成提交信息
7. 展示变更摘要和提交信息
8. 等待用户确认
9. 执行 git commit
10. 验证提交成功(git log -1 --oneline)
根据以下信息生成提交信息:
**变更内容**:
<git diff --cached 输出>
**项目规范**:
<Memory 中的规范或历史风格>
**要求**:
- 简洁准确,一行概括主要变更
- 如有多个变更,在正文中分点说明
- 遵循项目规范格式
- 避免技术细节,关注变更目的
{
"name": "mcp__memory__create_entities",
"parameters": {
"entities": [{
"name": "project:<repo>:commit-convention",
"entityType": "convention",
"observations": [
"使用 Conventional Commits 格式:<type>(<scope>): <subject>",
"常用 type:feat, fix, docs, refactor, test, chore",
"scope 为可选,表示影响的模块",
"subject 使用中文,简洁描述变更",
"正文可选,详细说明变更原因和影响"
]
}]
}
}
命名规范:
project:<repo>:commit-convention<repo> 替换为实际仓库名(如 ccode、myproject)type(scope): subject
body (可选)
footer (可选)
type 类型:
feat: 新功能fix: 修复 bugdocs: 文档更新refactor: 重构test: 测试相关chore: 构建/工具/依赖更新git diff 确认变更内容暂存区为空,需要先添加文件。
已取消提交操作。
⚠️ 代码审查发现以下问题:
- src/main.rs:42: 包含 println! 调试代码
- config/.env: 可能包含敏感信息
建议修复后再提交。是否继续?
❌ 提交失败:<错误信息>
可能原因:
- pre-commit hook 失败
- 提交信息格式不符合要求
- Git 配置问题
请检查错误信息并重试。