Skip to content
Legal
Skill

/git-batch-commit

智能 Git 批量提交快捷按钮。触发词:"git 提交"、"批量提交"、"拆分提交"、"整理提交",或用户明确要把已暂存变更拆成多个聚焦 commit 时使用。只负责 commit 拆分和提交信息生成;分支、PR、push、merge、Issue 关闭语义以 git-workflow 为准。提交完成后,若仓库内存在 skill-publish-sync 或 subtree-publish 配置、或仓库已登记于本技能 config/subtree-repos.yaml(按仓库个性化触发时点与推送命令),本技能会提示是否将涉及版本更新的技能同步发布到

BOOST
From plugin
legal-skills
73766 skills
Install
$ npx -y skills add cat-xierluo/legal-skills --skill git-batch-commit --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/git-batch-commit

Context preview

The summary Claude sees to decide when to auto-load this skill.

智能 Git 批量提交快捷按钮。触发词:"git 提交"、"批量提交"、"拆分提交"、"整理提交",或用户明确要把已暂存变更拆成多个聚焦 commit 时使用。只负责 commit 拆分和提交信息生成;分支、PR、push、merge、Issue 关闭语义以 git-workflow 为准。提交完成后,若仓库内存在 skill-publish-sync 或 subtree-publish 配置、或仓库已登记于本技能 config/subtree-repos.yaml(按仓库个性化触发时点与推送命令),本技能会提示是否将涉及版本更新的技能同步发布到

SKILL.md

git-batch-commit.SKILL.md
name: git-batch-commit
homepage: https://github.com/cat-xierluo/legal-skills
author: 杨卫薪律师(微信ywxlaw)
version: "1.5.0"
license: MIT
description: '智能 Git 批量提交快捷按钮。触发词:"git 提交"、"批量提交"、"拆分提交"、"整理提交",或用户明确要把已暂存变更拆成多个聚焦 commit 时使用。只负责 commit 拆分和提交信息生成;分支、PR、push、merge、Issue 关闭语义以 git-workflow 为准。提交完成后,若仓库内存在 skill-publish-sync 或 subtree-publish 配置、或仓库已登记于本技能 config/subtree-repos.yaml(按仓库个性化触发时点与推送命令),本技能会提示是否将涉及版本更新的技能同步发布到 ClawHub/SkillHub 或推送 subtree 独立仓库——这些发布/推送动作均需用户显式确认。'

Git 批量提交工具

概述

将混合的修改自动拆分为多个聚焦的、逻辑清晰的提交。而不是创建一个包含"更新各种文件"的大提交,而是创建多个清晰的提交,如"docs: 更新 README"、"chore: 更新依赖"、"license: 更新 license 文件"。

与 git-workflow 的职责边界

`git-batch-commit` 是提交拆分工具,不是完整 Git 工作流控制器。

| 场景 | 使用哪个 Skill | 说明 | |------|---------------|------| | 将已暂存的混合变更拆成多个 commit | `git-batch-commit` | 本 Skill 的核心职责 | | 判断是否能 merge / push / close PR | `git-workflow` | 本 Skill 不做合并门禁 | | PR 合入 main 的 commit 标题是否带 `(#N)` | `git-workflow` | 本 Skill 只在生成普通 commit 时保留 Issue/Task 引用 | | 直接解决 GitHub Issue 是否应写 `Closes #N` | `git-workflow` | 本 Skill 只写 `Refs #N`,不关闭 Issue | | 项目本地任务引用 | `cross-agent-collab` 定任务来源,`git-batch-commit` 写引用 | 使用 `--local-ref "project-task Issue #13"` |

当用户只是说“把这些改动提交一下 / 拆分提交”,使用本 Skill;当用户说“合并 PR / 拉 PR 到 main / 推送 / 关闭 issue”,同时遵循 `git-workflow`。

隐私预检与依赖

运行脚本需要 Python 3.10+、Git、PyYAML(缺失时运行 `python3 -m pip install PyYAML`),并同时安装同级 `git-workflow` 技能。共享 checker 仅使用 Python 标准库;缺失时失败关闭。

在预览、确认或创建第一笔提交前,检查所有分组最终完整提交说明(含 Markdown 标题/列表提取、Issue 和本地任务引用)、暂存变更路径、完整 blob 和 patch。`--yes` 只跳过交互确认,`--dry-run` 也须检查,均不能跳过隐私门禁。任一组失败不创建任何提交,也不输出敏感原文。

逐组提交使用原始暂存 tree 的临时 index,不取消暂存再重新 `git add` 工作区;部分暂存文件的未暂存改动不会混入。要求已有 HEAD;预检或执行期间 HEAD/index 改变则停止。执行期失败保留已成功本地提交,不自动回滚;发布前仍须 `git-workflow` 全范围检查。

案号是待核对标记,公开裁判/虚构测试须有依据的精确审查,不允许目录整体忽略或以 `--no-verify` 替代审查。规则、Git 目录内本地黑名单、精确例外与二进制处理限制见 [共享隐私预检](../git-workflow/references/privacy-preflight.md)。

使用场景

  • 用户暂存的文件来自多个类别(文档 + 代码 + 配置)
  • 用户希望保持清晰、标准化的提交历史
  • 用户提到"批量提交"、"拆分提交"或"整理提交"
  • 用户修改了许多文件,希望按逻辑分组

快速开始

方式一:使用交互式脚本

# 首先暂存你的文件
git add file1.py file2.md package.json

# 运行交互式批量提交工具(需要确认)
python3 skills/git-batch-commit/scripts/interactive_commit.py

# 或使用 --yes 参数自动确认(适用于非交互式环境)
python3 skills/git-batch-commit/scripts/interactive_commit.py --yes

# 使用 --dry-run 仅查看分组,不实际提交
python3 skills/git-batch-commit/scripts/interactive_commit.py --dry-run

# 这组提交关联 GitHub Issue #13:每个标题追加 (#13),正文写 Refs #13
python3 skills/git-batch-commit/scripts/interactive_commit.py --issue 13

# 这组提交关联项目本地任务,不误关 GitHub Issue
python3 skills/git-batch-commit/scripts/interactive_commit.py --local-ref "project-task Issue #13"

**命令行参数**:

  • `--yes`, `-y`:跳过交互式确认,自动创建提交
  • `--dry-run`:仅显示分组建议,不实际创建提交
  • `--issue N`:关联 GitHub Issue,提交标题追加 `(#N)`,正文写 `Refs #N`
  • `--local-ref "..."`:关联项目本地任务,如 `project-task Issue #13`,只写 `Refs: ...`,不会关闭 GitHub Issue

方式二:手动分类

python3 skills/git-batch-commit/scripts/categorize_changes.py
python3 skills/git-batch-commit/scripts/categorize_changes.py --json

提交分类

支持类型:**docs**, **feat**, **fix**, **refactor**, **style**, **chore**, **license**, **config**, **test**

完整定义和检测逻辑详见 `references/commit-types.md`

技能核心文件的特殊处理

**重要规则**:`SKILL.md` 虽然是 Markdown 格式,但它是**技能的核心功能文件**,不应归类为 `docs` 类型。

| 文件类型 | 正确分类 | 理由 | |:---------|:---------|:-----| | `SKILL.md` | `feat`/`style`/`fix` | 技能核心文件,修改它相当于修改功能/代码 | | `AGENTS.md` | `docs` | 项目协作规范,属于文档 | | `DECISIONS.md` | `docs` | 决策记录,属于文档 | | `CHANGELOG.md` | `docs` | 变更日志,属于文档 | | `TASKS.md` | `docs` | 任务列表,属于文档 |

**判断依据**:

  • 如果修改的是**定义行为/功能**的文件(如 `SKILL.md`、`.py`、`.ts`),视为代码变更
  • 如果修改的是**记录/说明**性质的文件(如 `README.md`、`CHANGELOG.md`),视为文档变更

同 Skill 内伴随变更合并规则

**核心原则**:同一 Skill 内的功能变更及其直接关联的配套文件更新,应合并为一条提交,不要按文件类型拆分。

具体规则:

  • 当 `SKILL.md` 有功能变更(feat/fix/style),同 Skill 下的 `CHANGELOG.md` 更新应**合并进同一条提交**,不单独拆出 `docs` 提交
  • 同理,版本号变更、配置微调(如删除 `.clawhubignore`)等配套小改动也一并合并
  • 判断标准:这些文件变动是否由**同一个功能变更**引起?如果是,就是一条提交
  • 只有当 CHANGELOG 独立更新(如补录历史版本)且无对应功能变更时,才单独使用 `docs` 类型

提交信息格式

所有提交遵循格式:

<类型>: <标题>

<正文描述>

**重要规则:每个提交必须包含正文(body),不能只有标题。** 正文用于补充变更的具体内容和原因,方便后续追溯。

使用英文前缀加中文内容,确保 GitHub 能识别并显示彩色标签。完整示例见 `references/conventional-commits.md`

**Multi-Module/Multi-Skill 仓库规则**:

  • 描述中应包含模块名称:`docs: course-generator 更新 CHANGELOG`
  • 如果一次修改涉及多个模块,**必须按模块分别提交**
  • 描述中的模块名称使用原始英文名称,不要翻译

**Issue / Task 引用规则**:

  • 若一组批量提交关联 GitHub Issue,使用 `--issue N`。每个提交标题会包含 `(#N)`,正文写 `Refs #N`。
  • 本 Skill 不生成 `Closes #N`。是否关闭 GitHub Issue 属于 `git-workflow` 的判断范围。
  • 若编号来自项目本地任务源而非 GitHub Issue,使用 `--local-ref "project-task Issue #N"` 或项目约定的等价引用,不要写 `Closes #N`。
  • PR 合并提交的 `(#PR编号)` 规则不由本 Skill 决定,遵循 `git-workflow`。

工作流程

1. **暂存文件** - 使用 `git add` 正常暂存 2. **运行交互式脚本** - 全部分组与暂存内容预检通过后查看分类结果 3. **审核** - 检查提议的提交分组 4. **确认** - 创建提交或取消以调整 5. **ClawHub 同步检查** - 仅当 `skills/skill-publish-sync/` 存在时执行,详见 `references/skill-publish-sync-check.md`。不存在则静默跳过 6. **Subtree 推送检查** - 先查本技能 `config/subtree-repos.yaml` 是否登记了当前仓库(按仓库定制配置路径/前缀/触发时点/推送命令;PR 流程仓库登记 `trigger: after-merge-to-main`,合入 main 后才提示);未登记则回退默认检测 `skills/subtree-publish/config/subtree-skills.json`。均未命中则静默跳过,详见 `references/subtree-push-check.md` 7. **完成** - 获得清晰历史的聚焦提交

所需权限与能力边界

本技能核心职责是 Git 提交拆分,但提交完成后可能触发以下**可选的后续动作**。这些动作均**超出"仅提交"的最小职责**,且只有在满足触发条件时才会发生,并**必须经用户显式确认**:

发布到外部平台(ClawHub / SkillHub)

  • 仅当仓库内存在 `skills/skill-publish-sync/`,且本次提交涉及 `skills/<skill-name>/` 下的版本更新/新增技能、且该技能在 `sync-allowlist.yaml` 白名单中时,才会提示用户是否同步。
  • 每个发布动作前都会向用户确认(`是否将其加入白名单并同步?`,选项 `y/n/s`);未确认不会执行 `clawhub publish` / `skillhub publish`。
  • 发布会把技能内容上传到 ClawHub/SkillHub 平台;发布前检查临时目录不含 `.env`、密钥等敏感文件。
  • 用户选择同步后,会修改 `skills/skill-publish-sync/config/sync-allowlist.yaml` 与 `sync-records.yaml`(仓库状态变更)。

推送 subtree 独立仓库

  • 触发检测支持两种来源:①本技能 `config/subtree-repos.yaml` 按仓库登记(`config_path` 定制登记清单路径、`prefix` 定制子目录前缀、`trigger` 定制触发时点、`push_command` 定制推送命令);②未登记仓库走默认路径 `skills/subtree-publish/config/subtree-skills.json`(提交后即提示)。
  • `trigger: after-merge-to-main`(PR 流程仓库,如 dsh-plugins):批量提交发生在特性分支时不提示,待 PR 合入 main 后再提示——防止把未合并分支内容派发到独立镜像。
  • 检测命中已注
Read more
Ships withlegal-skills

面向法律人的 Skills 集合。

Get the whole plugin

Other skills on legal-skills.

agent-email
Skill

agent-email

Agent 专用邮箱统一管理:让 Claude Code、Codex 等平台的 Agent 用一套命令收发邮件、整理收件箱、分发任务。支持网易 ClawEmail(claw.163.com)和腾讯 Agent Mail(QQ…

apple-smart-schedule
Skill

apple-smart-schedule

把一句自然语言(机票/高铁/开庭/会议/截止日期/聚会/看病等)或一张票据截图,自动变成苹果「日历」事件 + 一串按事件类型智能提前的「提醒事项」。在 macOS 上运行、经 iCloud 同步到 iPhone/iPad。当用户说「帮我加个日程/提醒」「机票…

case-dashboard
Skill

case-dashboard

律师案件看板。本地零依赖看板服务(案件总览、任务三态看板、期限预警、进度写回)+周研判分析。当用户说"打开看板/dashboard/案件面板/看下案件进度/给我案件周报研判"时使用。案件状态写入与上下文管理用 case-progress(/progress…

case-progress
Skill

case-progress

案件进度与状态台账管理。案件 case.yaml 的唯一写入引擎(新增任务、推进任务、登记期限、更新案件阶段、校验、存量迁移),Agent 会话的进度加载与写回契约,以及案件进度监控对账。当用户或 Agent…

code2patent
Skill

code2patent

从已开发代码项目中提取技术实现证据,围绕候选专利方案生成算法/软件类说明书式技术交底书,并以“权利要求布局卡 →…