用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/tisfeng/skills --skill git-commit命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | git-commit |
| description | 根据已暂存内容创建 Angular-style 提交,并为调用方工作流推导 Conventional 任务分支名。支持显式交付,以及在仓库规则明确授权时安全自动提交;为非英语用户生成双语提交信息,且不推送。 |
仅根据已暂存变更创建准确的 Angular-style Git 提交。
下文的 <git-commit-skill-dir> 表示当前加载的 git-commit/SKILL.md 所在目录。
运行随 skill 分发的脚本时,先解析该实际目录;不要假设 skill 安装在某个固定的
Agent 或项目路径中。
git statusGIT_PAGER=cat git --no-pager diff --staged --no-ext-diff --no-textconv --unified=5git branch --show-currentgit log --oneline -10/git commit 交付模式下,如果初始暂存 diff 为空且用户未限定路径或禁止
暂存,只运行一次 git add .,再重新运行 git status 和暂存区原始 patch 命令。
用户限定路径且允许暂存时只暂存指定路径;禁止暂存或仅要求提交已有暂存内容时,
报告无可提交内容,不扩大范围。git add;提交范围仅限当前暂存内容。
当前 staged 内容超出用户指定范围时,保留索引并报告范围冲突,不自动重写暂存边界。git add . 后暂存 diff 仍为空,则停止并要求用户先暂存文件。-- <path>。{USR_PREFERRED_LANGUAGE} 不是英语时,再起草含义一致的
本地语言区块。commit_message.txt。english,非英语用户使用 bilingual。git commit -F commit_message.txt。commit_message.txt 的一致性。commit_message.txt。只有仓库规则或调用方已明确授权自动本地提交时,才调用此模式。这是收尾步骤,不是在每次 编辑后执行。规划、讨论和分析不进入此模式;已授权 implementation 是否包含仅修改计划、history 或其他 Agent 文档的任务由宿主仓库规则决定。
第一次写入前记录:
initial_headinitial_staged_pathsinitial_unstaged_pathsinitial_untracked_pathstask_allowed_pathsagent_owned_paths实现完成后冻结 expected_commit_paths。它是本次实际要提交的 Agent-owned 路径集合,必须属于
task_allowed_paths;允许范围可以比实际修改集合更宽,不能据此暂存未修改路径。
当 initial_staged_paths 非空、Agent 暂存前当前索引已不再为空、Agent 路径与用户现有
变更重叠、索引存在冲突或必要验证失败时,跳过自动交付。在所有这些情况下都保持用户
的暂存边界不变。
“Agent 暂存前”指本次自动交付唯一暂存步骤开始之前。git-delivery 在同一 apply 中按冻结快照
完成该步骤后,非空索引是预期结果,不得再次暂存,也不应据此反向判定自动交付失效。
符合自动交付条件时:
HEAD、git status --short 和冲突状态。如果 initial_head、用户归属内容、
非预期索引或冲突状态发生变化,立即跳过自动交付并进入 protected;Agent 在允许路径内产生的
预期 implementation 差异不属于初始状态漂移。git add -- <expected_commit_paths> 暂存冻结的 Agent-owned 路径;此模式下绝不使用
git add .。git diff --cached --name-only 和暂存区原始 patch,确认路径集合与
expected_commit_paths 完全一致,并且后者属于 task_allowed_paths。git commit。如果无法安全分离路径归属,则保留变更供手动交付并说明原因。提交失败时保留已暂存变更, 并遵循现有提交失败规则。
按顺序从第一个可用来源解析 {USR_PREFERRED_LANGUAGE}:
AppleLanguages、POSIX LC_ALL、
LC_MESSAGES、LANG、locale 或 Windows PowerShell culture 输出。将英语变体都视为英语,并据此设置 {COMMIT_MESSAGE_MODE}:英语为 english,其他
语言为 bilingual。英语用户只获得一个英文提交信息区块。非英语用户依次获得本地
语言区块、以下严格 70 个字符的分隔线和英文区块:
----------------------------------------------------------------------
分隔线前后各保留一个空行。不要添加 Chinese: 或 English: 等标签。除 Markdown
代码围栏外,显示的提交信息必须与 commit_message.txt 完全一致。
每个语言区块都使用以下结构:
type(scope): subject
First body paragraph explaining the current context or motivation.
Second body paragraph explaining the main change.
Third body paragraph explaining the result or impact.
Optional BREAKING CHANGE: footer when applicable.
type(scope): subject。Problem:、Change: 或 Summary: 等标签。! 和/或最终的 BREAKING CHANGE: footer。校验器不接受
其他 footer;footer 不能替代必需的三个正文段落。写入 commit_message.txt 后、运行 git commit 前,必须执行:
python3 "<git-commit-skill-dir>/scripts/validate-commit-message.py" \
--file commit_message.txt \
--mode "${COMMIT_MESSAGE_MODE}"
提交前校验失败时停止提交,保留 commit_message.txt;可以修正本次生成的消息并重新
校验,通过后继续,不因可修复的格式错误要求用户重新授权。校验器
只检查可确定的结构:Angular 标题、80 字符限制、恰好三个正文段落、双语分隔线、两个
语言区块一致的 type/scope/breaking 标记,以及可选的最终 BREAKING CHANGE: footer。
它不判断翻译质量或三个正文段落的语义是否准确,Agent 仍须按真实 staged diff 审核内容。
git commit 成功后、删除消息文件前,必须使用刚创建的完整 commit hash 执行:
python3 "<git-commit-skill-dir>/scripts/validate-commit-message.py" \
--commit "${COMMIT_HASH}" \
--expected-file commit_message.txt \
--mode "${COMMIT_MESSAGE_MODE}"
提交后校验会读取 Git 中的实际消息并与预期文件比较。失败时停止自动处置:不要自动 amend,
不要删除 commit_message.txt,不要声称交付完成;报告 commit hash 和具体错误,等待用户或
调用方决定后续动作。
提交成功后运行:
python3 "<git-commit-skill-dir>/scripts/commit-change-stats.py" <full-commit-hash>
脚本只报告文本文件,并将它们划分为两个互斥类别:
docs:位于 docs 或 Documentation 目录下的文件;名为 AGENTS.md 或
SKILL.md 的文件;名称以 README 或 CHANGELOG 开头的文件;以及 .md、
.mdx、.rst 或 .adoc 文件。code:其他所有文本文件,包括产品和测试源码、构建和运行时配置、资源、本地化
catalog 以及 skill 脚本。有意跳过二进制 numstat 条目。不要统计它们,也不要在面向用户的报告中提及二进制文件。
报告前,文件数、新增行、删除行和净变动的总计都必须等于 code 与 docs 之和。
脚本失败或结果不一致都视为报告失败,不得编造统计数据。
统计数字以脚本输出的 JSON 为准。在面向用户的最终回复中,按本 Skill 定义的 Markdown 表格展示;不要修改脚本默认输出为 Markdown。
对于多提交集成范围,调用方工作流可以改为运行:
python3 "<git-commit-skill-dir>/scripts/commit-change-stats.py" \
--range <target-commit>...<source-commit>
每次提交成功后,使用以下命令收集权威结果:
git rev-parse HEAD:完整哈希。git show -s --format=%B HEAD:完整的实际提交信息。git branch --show-current:当前分支。git status --short:最终工作树状态。以下是用户可见、不可省略的完整交付回执。它必须出现在面向用户的最终回复中;终端输出、
工具输出、子 Agent 返回、短哈希、hash + subject 或仅有一行总结均不能替代该回执。
调用方可在回执前后补充本次工作流的结果,但适用字段必须完整保留。
中文任务使用以下结构。英文任务翻译其中标签,但保留相同字段和顺序。
提交结果
- 动作:已创建提交
- Commit:`<full-hash>`
- 分支:`<branch>`
- 提交后校验:`<validation-status>`
- 工作树:`干净` or `保留未提交变更`
- Push:未执行
变动统计
| 类别 | 文件数 | 新增行 | 删除行 | 净变动 |
| --- | ---: | ---: | ---: | ---: |
| 总计 | <files> | <insertions> | <deletions> | <signed-net> |
| 代码 | <files> | <insertions> | <deletions> | <signed-net> |
| 文档 | <files> | <insertions> | <deletions> | <signed-net> |
实际提交信息
```text
<exact output of git show -s --format=%B HEAD>
```
正净变动使用 +N,负值使用 -N,零值使用 0(无变化)。英文任务翻译表头和零值
说明,但保留相同字段、行顺序和数字。代码块中的提交信息必须与 Git 中保存的信息完全一致。
本次创建提交且提交后校验实际通过时使用 通过;复用已有提交而本次未运行提交后校验时使用
未执行(本次复用已有提交)。不得把只读 message 检查写成提交后一致性校验。
调用方工作流复用已有提交时,可以修改动作行和提交后校验状态以如实说明本次没有创建或
校验提交;仍须保留完整哈希、统计、实际提交信息、最终状态和 push 状态。在收集命令中
使用被复用的哈希而不是 HEAD。
git push。git-commit 请求视为提交授权。commit_message.txt 或运行 git commit。commit_message.txt 的提交信息必须完全相同,且不包含 Markdown 代码围栏。git commit 与提交信息文件的创建或清理串联起来。git commit、提交后校验或消息文件清理
串联起来;每一步成功后再进入下一步。git add 和 git commit 都视为需要仓库写入权限的步骤;任何暂存或提交失败都保留
当前现场。git commit 在创建 .git/index.lock 时因 Operation not permitted 等
sandbox 权限错误失败,立即使用所需提权重新运行
git commit -F commit_message.txt。.git 时,在提交步骤直接为 git commit 请求所需提权。commit_message.txt,除非清理
操作明确安全且有意执行。选择与暂存 diff 匹配且范围最窄的提交类型:
feat:引入面向用户的行为或新能力。fix:修复缺陷、回归或损坏的行为。docs:只更新文档。style:应用格式或不改变功能的代码风格修改。refactor:在不改变行为的情况下改进内部结构。perf:提升性能或减少资源使用。test:添加或调整测试,不改变生产行为。build:修改依赖、打包或构建配置。ci:更新 CI 工作流或自动化流水线。chore:进行不属于其他类型的日常维护。revert:回滚此前变更。尽量根据涉及的模块、功能、服务或组件选择 scope。优先使用 parser、api 或
settings 等具体 scope,而不是 app 或 misc 等宽泛标签。
仅当其他工作流需要在提交产生前获得任务分支名时,才使用本指南:
type,再用简洁英文概括主要意图。<type>/<kebab-case-summary>。分支名中省略
Angular scope 标点。本指南只推导名称,不授权暂存、提交或创建分支。调用方工作流负责这些 Git 操作、名称 冲突处理和状态验证。
需要了解最终用户可见的完整交付格式时,读取 完整提交回执示例。回执字段、统计格式和提交 信息一致性要求以 Post-Commit Report 为准。