Install
openclaw skills install git-commit-skill自动分析当前分支改动,智能推断 Gitmoji,分阶段确认改动点、安全检查及 commit message 后辅助提交代码。
openclaw skills install git-commit-skill根据当前分支改动生成 git commit 内容,分阶段确认后再提交代码。
用户输入:/git-commit
Skill 会自动分析当前分支的改动内容,智能推断并选择最合适的 Gitmoji 类型。
执行命令分析当前工作状态:
# 查看工作状态
git status
# 查看未暂存的改动内容
git diff
# 如果已有暂存文件,也查看暂存的改动
git diff --cached
输出改动点列表,按功能模块分组展示:
【当前分支改动分析】
改动的文件:
- src/main/java/UserService.java
- src/test/java/UserServiceTest.java
- src/main/java/UserController.java
改动点总结(按功能归类):
1. 新增用户管理模块(UserService、UserController)
2. 补充用户管理模块单元测试(UserServiceTest)
【推断的提交类型】:sparkles: 新功能
归类原则:
等待用户确认:
在生成 commit message 之前,必须检查改动中是否包含敏感信息。
如改动包含以下文件,必须暂停并提醒用户:
| 文件类型 | 风险 | 示例 |
|---|---|---|
| 环境变量 | 🔴 | .env, .env.local, .env.production |
| 凭证文件 | 🔴 | credentials, credentials.json, service-account.json |
| 私钥证书 | 🔴 | *.pem, *.key, *.p12, id_rsa, id_ed25519 |
| AWS 配置 | 🔴 | .aws/credentials, aws_config |
| 数据库配置 | 🔴 | database.yml, config.json(含密码) |
| Git 凭证 | 🔴 | .git-credentials, .git-creds |
| 其他敏感 | 🟡 | *password*, *secret*, *token*(文件名) |
检查 git diff 内容是否包含以下模式:
🔴 高危模式(发现则必须警告):
- password = "xxx" / password: "xxx"
- secret = "xxx" / secret_key = "xxx"
- api_key = "xxx" / apiKey = "xxx"
- token = "xxx"(长字符串)
- private_key = "xxx"
- aws_access_key / aws_secret_key
- 数据库连接串(含密码):mongodb://user:pass@
- DB_PASSWORD, MYSQL_PASSWORD, REDIS_PASSWORD 等
🟡 中危模式(建议提醒):
- 硬编码的邮箱 + 密码组合
- base64 编码的长字符串
- URL 含敏感查询参数
⚠️ 警告:检测到可能的敏感信息
【检测到的内容】
- 文件:.env
- 改动:DB_PASSWORD=MyPassword123
【风险】
提交此文件到公网可能导致:
- 数据库被未授权访问
- 敏感数据泄露
- 账号被盗用
【建议操作】
1. 确认此文件是否已添加到 .gitignore
2. 如未添加,执行:echo ".env" >> .gitignore
3. 移除已暂存:git reset .env
4. 使用环境变量或密钥管理服务
是否确认继续提交?(是/否)
只有用户明确确认后,才能进入阶段 2。
根据确认后的改动点和自动推断的 Gitmoji 生成 commit message:
格式:
:emoji-name: <改动点总结>
1. <改动点 1>
2. <改动点 2>
3. <改动点 3>
示例(新功能):
:sparkles: 新增用户管理模块
1. 新增 UserService 处理用户业务逻辑(注册、登录、权限校验)
2. 新增 UserController 提供 REST API 接口
3. 新增 UserDTO 和 UserVO 数据传输对象
4. 补充单元测试覆盖核心功能
示例(Bug 修复):
:bug: 修复用户登录验证问题
1. 修复 Token 过期导致的登录失败
2. 添加登录失败次数限制
示例(综合改动):
:sparkles: 新增数据导出功能并优化性能
1. 新增 ExportService 支持 Excel/CSV 格式导出
2. 优化大数据量查询使用游标分页
3. 添加导出任务异步处理机制
4. :arrow_up: 升级 easyexcel 到 3.3.0
5. :white_check_mark: 补充导出功能单元测试
展示 commit message 并等待用户确认:
展示生成的 commit message 后,必须使用 AskUserQuestion 工具给用户 Yes/No 选择:
【生成的 commit message】
:sparkles: 新增用户管理模块
1. 新增 UserService 处理用户业务逻辑
2. 新增 UserController 提供 REST API 接口
3. 补充单元测试覆盖核心功能
请确认此 commit message 是否正确?
- Yes: 使用此 message,继续执行提交
- No: 我将手动输入改动点描述
用户选择处理:
重要:在用户确认 commit message 之前,不要执行任何 git add 或 git commit 命令。
用户确认 commit message 后,执行暂存:
git add -A
或者根据用户需求暂存特定文件:
git add <file1> <file2>
暂存后展示已暂存的文件列表,等待用户确认是否继续提交。
用户确认暂存文件无误后,执行提交:
git commit -m "<commit message>"
提交后展示结果:
提交成功后,询问用户:
提交成功!是否推送到远程仓库?
【推送信息】
分支:<current-branch>
远程:origin
请确认是否执行 git push?(是/否)
用户确认后执行:
git push origin <current-branch>
如果远程分支不存在,提示用户设置上游分支:
git push -u origin <current-branch>
根据改动特征自动选择最合适的 Gitmoji:
| 改动特征 | Shortcode | 说明 |
|---|---|---|
| 新增功能、模块、接口 | :sparkles: | 新功能 |
| 修复 bug、错误 | :bug: | Bug 修复 |
| 紧急线上修复 | :ambulance: | 紧急热修复 |
| 文档、README、注释 | :memo: | 文档 |
| 代码重构、逻辑优化 | :recycle: | 重构 |
| 删除代码/文件 | :fire: | 删除 |
| UI、样式文件 | :lipstick: | UI 样式 |
| 部署、上线 | :rocket: | 部署 |
| 测试用例 | :white_check_mark: | 测试 |
| 安全漏洞修复 | :lock: | 安全 |
| 编译器/linter 警告 | :rotating_light: | 警告 |
| CI/CD 配置 | :construction_worker: | CI 系统 |
| CI 构建修复 | :green_heart: | CI 修复 |
| 依赖升级 | :arrow_up: | 升级 |
| 依赖降级 | :arrow_down: | 降级 |
| 新增依赖 | :heavy_plus_sign: | 添加依赖 |
| 移除依赖 | :heavy_minus_sign: | 删除依赖 |
| 配置文件 | :wrench: | 配置 |
| 脚本文件 | :hammer: | 脚本 |
| 编译文件/包 | :package: | 包 |
| 代码格式/结构 | :art: | 代码结构 |
| 性能优化 | :zap: | 性能 |
| 破坏性变更 | :boom: | 破坏性变更 |
| 回滚 | :rewind: | 回滚 |
| 国际化 | :globe_with_meridians: | i18n |
| 无法明确判断 | :sparkles: | 默认新功能 |
完整 Gitmoji 参考:见
references/gitmojis.md
:name: 格式(如 :sparkles:),在 GitHub/GitLab 会自动渲染为 emoji