All skills
cat-xierluo avatar

/git-batch-commit

@172a3c5

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

Use this Skill: https://skilld.dev/gh/cat-xierluo/legal-skills/git-batch-commit

This session only. Nothing lands on disk.

referencesskill-publish-sync-check.md

≈1.7k tokens on demand. Your agent reads this file only when SKILL.md points to it.

ClawHub 同步检查(工作流第5步)

核心规则:仅当项目目录下存在 skills/skill-publish-sync/ 时才执行——不存在则静默跳过,不输出任何提示。

⚠️ 能力边界披露:本步骤会把技能发布到 ClawHub/SkillHub 外部平台,并可能修改 sync-allowlist.yaml 与 sync-records.yaml。这些动作超出"仅提交"职责,每一步都必须获得用户显式确认(下方 y/n/s 选择);用户未确认时一律不执行发布或文件修改。详细披露见 SKILL.md「所需权限与能力边界」。

完成 Git 提交后,执行以下检查。

触发条件

完成提交后,依次执行以下三类检测。任一命中即提示用户是否同步。

检测 A:已有技能版本升级

全部满足时触发:

  1. 本地存在 skill-publish-sync 技能

    • 检查 skills/skill-publish-sync/ 目录是否存在
    • 不存在则静默跳过,不提示用户
  2. 提交涉及 skills 目录

    • 提交的文件中包含 skills/<skill-name>/ 下的文件
  3. 版本号有更新

    • 读取 skills/<skill-name>/SKILL.md 的 frontmatter 中的 version 字段
    • 比较 skills/skill-publish-sync/config/sync-records.yaml 中 records.<skill>.platforms.<platform>.version 记录的版本(按目标平台读取:ClawHub 读 platforms.clawhub.version,SkillHub 读 platforms.skillhub.version)
    • 如果新版本 > 已记录版本(或记录中无版本),则需要同步
  4. 在白名单中

    • 检查 skills/skill-publish-sync/config/sync-allowlist.yaml
    • skill 必须在白名单中(未被 # 注释),且其 platforms 数组包含目标平台

检测 B:新增技能首次同步

当提交新增了 skills/<skill-name>/ 目录时触发:

  1. 识别新增技能:检查提交中是否有 skills/<skill-name>/SKILL.md 为新文件(untracked → committed)

  2. 读取许可证:读取新技能 SKILL.md frontmatter 中的 license 字段

    • MIT → 可发布到 ClawHub 和 SkillHub 两个平台
    • CC-BY-NC 等限制性许可证 → 仅可发布到 SkillHub(ClawHub 强制 MIT-0,冲突)
  3. 未在白名单中:sync-allowlist.yaml 中无此 skill 的条目(无论是否被注释)

  4. 未在同步记录中:sync-records.yaml 中无此 skill 的条目

满足全部条件时,向用户提示:

🆕 发现新增技能:<skill-name>(license: <MIT|CC-BY-NC>)
该技能尚未加入同步白名单。是否将其加入白名单并同步?

可选平台:<clawhub+skillhub(MIT)/ skillhub(CC-BY-NC)>

选项:
  y - 加入白名单并同步
  n - 跳过,暂不发布
  s - 加入白名单但暂不同步

用户选择 y 时:

  • 在 sync-allowlist.yaml 中添加该 skill,按许可证设置 platforms(MIT → [clawhub, skillhub];CC-BY-NC → [skillhub])
  • 执行 prepare-publish → publish → 更新 sync-records 流程(按平台分别执行)
  • 注意:发布前检查临时目录,确保不含 .env、密钥等敏感文件

用户选择 s 时:

  • 仅在 sync-allowlist.yaml 中添加该 skill(被注释),下次版本更新时再同步

检测 C:白名单新增但未同步

当白名单中有未被注释的 skill,但 sync-records.yaml 中没有对应记录时:

  1. 遍历 sync-allowlist.yaml 中未被注释的 skill
  2. 检查 sync-records.yaml 中是否有该 skill 的记录
  3. 如果白名单有但记录中没有,且 SKILL.md 存在,提示用户执行首次同步

执行步骤

对于每个需要同步的 skill,按照 skill-publish-sync 的"单个 Skill 同步工作流"执行。按目标平台分别处理:

步骤 1:准备发布目录

# ClawHub(默认平台,可省略 --platform)
bash skills/skill-publish-sync/scripts/prepare-publish.sh skills/<skill-name>

# 腾讯 SkillHub
bash skills/skill-publish-sync/scripts/prepare-publish.sh --platform skillhub skills/<skill-name>

步骤 2:执行发布

ClawHub(使用 publish 命令):

clawhub publish /tmp/clawhub-publish-<skill-name> \
  --slug <skill-name> \
  --name "<Display Name>" \
  --version "<新版本号>" \
  --changelog "<变更说明>"

⚠️ 必须指定 --slug 和 --name

  • 临时目录名可能包含前缀,使用 --slug 确保正确的 skill 标识符
  • 使用 --name 确保 ClawHub 上显示正确的名称

为什么用 publish 而不是 sync?

  • clawhub sync 会扫描所有目录的 skills,可能遇到 slug 冲突
  • clawhub publish <path> 只发布指定路径的单个 skill,更精确

腾讯 SkillHub(使用 publish 命令):

skillhub publish /tmp/skillhub-publish-<skill-name> \
  --version "<新版本号>" \
  --changelog "<变更说明>"

腾讯 SkillHub 用 slug + displayName(SKILL.md frontmatter)标识 skill,namespace 绑定在账号上(发布时无需命令行指定)。建议先 --dry-run 预检:skillhub publish <path> --dry-run。确认 SKILL.md frontmatter 含 slug/version/displayName 三必填字段,否则预检报错。

步骤 3:更新同步记录

更新 skills/skill-publish-sync/config/sync-records.yaml,在对应平台 platforms.<platform> 下写入:

  • 更新 version 为新版本号
  • 更新 last_sync 为当前时间
  • 更新 git_hash 为当前 commit hash
  • 更新 status 为 synced
  • 添加 url 和 publish_id(从命令输出获取)

失败处理

  • 同步失败时仅显示警告信息
  • 不影响 Git 提交结果
  • 继续处理其他 skills

版本比较逻辑

new_version = SKILL.md frontmatter 中的 version(如 "1.2.0")
recorded_version = sync-records.yaml 中 records.<skill>.platforms.<platform>.version(如 "1.1.0")

if new_version > recorded_version:
    执行同步(针对该平台)

版本号按语义化版本规则比较(major.minor.patch)。两个平台独立比较、独立同步。

示例场景

场景 版本变化 白名单 platforms 同步记录 结果
版本升级(检测A) "1.0.0" → "1.1.0" 含目标平台 有记录 ✅ 执行同步(该平台)
无版本变化(检测A) "1.1.0" → "1.1.0" 含目标平台 有记录 ❌ 跳过
platforms 不含目标平台(检测A) 任意 不含 - ❌ 跳过该平台
被注释(检测A) 任意 被注释 - ❌ 跳过
白名单内首次发布(检测A/C) "1.0.0" 含目标平台 无记录 ✅ 执行同步
新增 MIT 技能(检测B) "0.1.0" 无条目 无记录 ✅ 提示用户选择(clawhub+skillhub)
新增 CC-BY-NC 技能(检测B) "0.1.0" 无条目 无记录 ✅ 提示用户选择(仅 skillhub)
skill-publish-sync 不存在 - - - ❌ 静默跳过整个工作流

Source: SKILL.md on GitHub

No alerts15d3 checks · Risk SAFE
  • Gen Agent Trust Hub15d

    The git-batch-commit skill is a utility for intelligently grouping and committing Git changes. It uses standard Git commands via subprocess to manage commits and provides clear disclosure regarding optional synchronization with external platforms (ClawHub/SkillHub), which requires explicit user confirmation.

  • Socket15d

    No alerts

  • Snyk15d

    Risk: LOW · No issues

Signed by skilld at 172a3c5. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated 2 days ago
homepage
https://github.com/cat-xierluo/legal-skills
author
杨卫薪律师(微信ywxlaw)
version
1.4.3

README badge

README badge for cat-xierluo/legal-skills/git-batch-commit