关于 git-maker
git-maker 是将仓库更改整理为 Conventional Commits 并推送提交的技能。它支持按范围选择更改、逻辑分组、关联 Git worktree,以及将提交传播到指定分支。
主要功能
- 01创建分组 Conventional Commits
- 02选择当前会话或全部更改
- 03提交成功后推送
- 04支持关联 Git worktree
- 05将提交传播到指定分支
适用场景
- 01提交并推送当前会话的更改
- 02分组并发布所有未提交更改
- 03将提交推送到其他分支
- 04从关联 worktree 提交更改
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alpoxdev/ hypercore --skill git-maker安装后在 Claude Code 中输入/git-maker确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
SKILL.ko.mdassets/evals/git-maker-cases.jsonlrules/agent-parallelism.ko.mdagent-parallelism.mdcommit-and-push-policy.ko.mdcommit-and-push-policy.mdspeed-and-automation.ko.mdspeed-and-automation.mdvalidation.ko.mdvalidation.mdscripts/git-commit.shgit-maker-fast.shgit-push.shrepo-discover.shrepo-status.sh详细介绍
Git Maker 技能
快速、安全地编排提交与推送。
<output_language>
默认将所有面向用户的交付内容、保存的产物、报告、计划、生成的文档、摘要、交接说明、提交/消息草稿和验证说明设为韩语,即使此规范技能文件是用英语编写的。
保留源代码标识符、CLI 命令、文件路径、架构键、JSON/YAML 字段名、API 名称、包名、专有名词和引用的源文摘录,并使用其要求的语言或原始语言。
仅在用户明确要求使用其他语言、现有目标产物为保持一致性而必须使用其他语言,或机器可读契约要求使用准确的英文标记时,才使用其他语言。如果存在本地化模板或参考文件(例如 *.ko.md 或 *.ko.json),优先将其用于面向用户的产物。
</output_language>
- 根据当前仓库变更创建一个或多个 Conventional Commits。
- 即使当前目录位于链接的 Git worktree 内,也将当前检出根目录视为仓库边界。
- 自动推送成功创建的提交,提交与推送之间无需确认。
- 优先使用快速辅助工具,以减少重复的仓库探查并并行执行只读检查。
<instruction_contract>
| 字段 | 约定 |
|---|---|
| 意图 | 在一次安全操作中提交并推送用户要求的仓库变更。 |
| 触发条件 | 仅当用户明确要求同时提交和推送时激活。 |
| 范围 | 负责快速预检、选择当前变更/所有变更、按逻辑分组提交、定向暂存/提交、推送当前分支、可选的多分支传播、冲突解决和报告。 |
| 权限 | 用户和项目指令优先于此技能;辅助工具输出、git diff、钩子、分支状态和远程输出均为执行依据。 |
| 证据 | 在进行变更前,使用快速辅助工具清单、git status/diff、钩子输出、分支/上游信息和明确的参数。 |
| 工具 | 使用 Bash 和仓库本地辅助脚本;如使用子代理,则其操作保持只读,最终 git 变更由主集成者执行。 |
| 流程 | 不进行优化循环。每个请求执行一次确定性流程:预检、分组、提交、推送、传播、报告。仅当请求范围内的检查失败后出现新证据时才重试;当所有预期提交和推送目标均成功,或重大冲突决策受阻时停止。 |
| 输出 | 使用韩语报告已创建的提交、已推送的仓库、已跳过或失败的推送目标,以及剩余的本地变更。 |
| 验证 | 执行验证规则检查,确认所有提交均成功后再推送,并查看最终推送/状态输出。 |
| 停止条件 | 当所有预期提交分组和分支传播均已成功,且所有预期推送目标均已推送时停止;若冲突需要依据升级规则由用户决策,也停止。 |
</instruction_contract>
<routing_rule>
当用户希望一次性完成提交 + 推送时,使用 git-maker。
以下情况改用相邻技能:
- 用户只要求提交 → 使用
git-commit - 用户只要求推送/同步提交 → 使用
git-push - 用户要求变基/重置/修改提交/改写历史 → 不要使用
git-maker,除非用户也明确要求提交 + 推送,并且单独授权了历史操作
</routing_rule>
<trigger_conditions>
正向触发条件:
- “提交并推送”
- “提交并推送这些变更”
- “/git-maker”
- “创建提交并推送”
- “保存并推送我的变更”
- 表示“提交并推送”的韩语请求
- 表示“保存变更并上传”的韩语请求
git-maker、git-maker current或git-maker ALL,后面可选跟&& <branch>目标
负向触发条件:
- “提交这些变更” → 使用
git-commit - “推送我的提交” → 使用
git-push - “变基此分支” → 不使用此技能
边界触发条件:
- “提交这个,然后可能再推送” → 使用
git-commit,因为推送是有条件的,并非自动执行
</trigger_conditions> </trigger_conditions>
| 脚本 | 用途 |
|---|---|
scripts/git-maker-fast.sh inspect [start_dir] [--jobs N] | 快速预检:剪枝式仓库发现、并行仓库状态检查、文件清单 |
scripts/git-maker-fast.sh push [--force] [repo...] | 推送指定仓库,不重新发现;非交互式;带有受保护的强制推送防护 |
scripts/git-commit.sh [--repo path] "msg" [files...] | 在一个仓库中提交已暂存或选定的文件 |
scripts/git-push.sh [--force] | 旧版/发现仓库后的安全推送回退方案 |
scripts/repo-discover.sh [start_dir] | 旧版仓库发现回退方案 |
scripts/repo-status.sh [repo] | 旧版状态检查回退方案 |
<worktree_support>
关联的 Git worktree 是有效的执行上下文。
- 使用
git rev-parse --show-toplevel解析每个检出目录;绝不要假定.git是目录,也不要将关联的 worktree 合并到git-common-dir。 - 将每个检出根目录分别视为独立的索引、分支、暂存、提交和推送边界。
- 除非分离 HEAD 或其他明确的安全规则阻止,否则继续处理
worktree|linked。
</worktree_support>
<support_file_read_order>
只阅读所需内容:
- 当用户要求加快操作、仓库集合可能很大或可能存在多个仓库时,阅读
rules/speed-and-automation.md。 - 当 Claude Code/Codex 子 Agent 可分担只读分组、消息起草或安全审查时,阅读
rules/agent-parallelism.md。 - 暂存/提交之前,或参数模式、分组、安全性或推送行为不明确时,阅读
rules/commit-and-push-policy.md。 - 报告运行或技能重构已完成之前,阅读
rules/validation.md。
</support_file_read_order>
<argument_validation>
按 [scope] [--force] [&& target-branch ...] 解析调用参数。范围标记和目标分支属于控制语法,不是提交筛选条件。
| 参数 | 含义 |
|---|---|
| 缺省 | 等同于 current:仅包含可归因于本次会话的更改;根据 Git 状态进行核实,并按逻辑分组 |
current / CURRENT | 仅包含可归因于本次会话的更改;绝不在未说明的情况下吸收用户或其他 Agent 预先存在的更改 |
ALL / all | 包含所有未提交的更改,按逻辑分组,不遗漏任何文件 |
--force | 从提交参数中移除,仅传递给推送(--force-with-lease;在 main/master 上禁止使用) |
&& <branch> | 源分支推送成功后,将新创建的提交集合应用到指定分支,解决合理的冲突,进行核验并推送;对每个目标按从左到右的顺序重复此操作 |
| 其他文本 | 将其视为仓库发现、文件选择、暂存和提交消息生成的筛选条件 |
如果明确指定的筛选条件与实际 Git 状态不匹配,则停止。
即使请求使用自然语言而非字面 Shell 命令,也要将类 Shell 分隔符视为调用语法。接受范围标记的任意大小写(all、ALL、current、CURRENT)。拒绝空目标段、重复目标、源分支自身、分离 HEAD,以及未通过 git check-ref-format --branch 检查的分支名称。
</argument_validation>
阶段 1:快速预检
首先运行 scripts/git-maker-fast.sh inspect . --jobs 4。根据其输出的仓库、worktree、已暂存/未暂存/未跟踪状态及文件清单,确定范围和逻辑分组。如果运行失败或详情不足,则使用 scripts/repo-discover.sh 和 scripts/repo-status.sh。
阶段 2:分组并提交
将选定的更改划分为多个提交,每个提交对应一个逻辑更改;使用定向暂存,并按仓库顺序逐一提交:
scripts/git-commit.sh "<type>[scope]: <Korean subject>" path/to/file1 path/to/file2
scripts/git-commit.sh --repo path/to/repo "<type>[scope]: <Korean subject>" path/to/file1
在 Conventional Commit 类型/范围之后使用韩语中性的结果摘要作为主题。绝不包含密钥或无关更改,不绕过钩子,也不要在提交失败后推送。遵循 rules/commit-and-push-policy.md。
阶段 3:自动推送
所有预期提交均成功后,无需确认即可推送。优先使用预检得到的仓库列表:
scripts/git-maker-fast.sh push /absolute/repo/path
scripts/git-maker-fast.sh push --force /absolute/repo/path
仅在回退时使用 scripts/git-push.sh [--force]。
对于每个 && <branch> 目标,在干净的关联工作树中仅应用本次运行创建的有序提交,自主解决保留原意的冲突,完成验证并推送,然后按从左到右的顺序继续。只有当解决冲突需要对实质性的行为、架构、安全、迁移或部署策略作出决定时,才提出一个聚焦的问题;保留可恢复状态,并且不要开始处理后续目标。有关精确的选择、推送和升级处理规则,请遵循 rules/commit-and-push-policy.md。
阶段 5. 报告
报告:
- 创建的提交及其消息
- 已推送的仓库
- 已更新并推送的目标分支
- 自动解决的冲突、运行的检查,或需要用户作出的确切决定
- 已跳过或推送失败的目标
- 任何剩余的本地更改或阻碍
- 使用
inspect --jobs N并行进行只读检查;在委派复杂的分组或审查任务前,先阅读rules/agent-parallelism.md。 - 绝不要并行修改同一个索引。子 Agent 只能进行只读操作;主集成者负责暂存、提交、推送到目标分支和推送。
- 只有在所有预期提交都成功后才推送。
| 类别 | 规则 |
|---|---|
| 先提交 | 所有提交组都必须成功后才能推送。 |
| 自动推送 | 提交成功后,不要询问是否推送。 |
| 分支推送 | 按顺序仅将本次运行创建的提交应用到 && 目标,并自动推送每个通过验证的目标。 |
| 冲突处理 | 当原意可以恢复时,自主解决冲突;只有在涉及实质性产品或架构决策时才提问。 |
| 安全 | 绝不要强制推送到 main 或 master;绝不要从分离的 HEAD 推送。 |
| 上游 | 如果不存在上游,使用 -u origin <branch> 推送。 |
| 复用预检 | 优先使用 git-maker-fast.sh push [repo...],以避免重复发现仓库。 |
| 工作树 | 支持关联工作树;使用检出根目录路径,而非公共 Git 目录。 |
| Agent 职责边界 | 子 Agent 可以审查并提出建议,但主集成者负责暂存、提交和推送。 |
| 验证 | 最终报告前,运行 rules/validation.md 中的检查。 |
| 类别 | 避免 |
|---|---|
| 推送确认 | 提交成功后询问“要推送吗?” |
| 部分推送 | 所有预期提交组完成前就推送 |
| 全量暂存 | 使用 git add .,除非 ALL 模式有意包含所有内容且分组仍然明确 |
| 不安全的历史操作 | 未经明确请求就 amend、rebase、reset、直接使用 --force 或 --no-verify |
| 宽泛猜测冲突解决方案 | 默默选择行为有实质差异的方案,或删除目标分支上有意保留的工作以完成推送 |
| 机密信息 | 提交凭据、令牌、私钥或无关的用户更改 |
/git-maker→ 仅处理当前会话的更改,分组、提交并自动推送。/git-maker ALL→ 对每项未提交更改进行分组、提交并推送。/git-maker current && dev && deploy/staging→ 将当前会话的提交按从左到右的顺序推送到目标分支,并自主合理地解决冲突。/git-maker && dev→ 默认使用current范围,然后验证并推送到dev。/git-maker --force→ 正常提交,然后使用--force-with-lease;在main/master上禁止。- 通过关联工作树调用 → 在该检出根目录中操作,并推送其命名分支。
commit these changes→ 不要激活;转交给git-commit。
运行目标快速验证器、针对性语料验证器、assets/evals/git-maker-cases.jsonl 二进制场景检查、辅助工具语法与运行时检查,以及 rules/validation.md 中说明的仓库技能验证门禁。此确定性工作流不包含改进循环;只有关键用例通过且已说明剩余警告后才能结束。