关于 commit
commit 是将工作区更改整理为范围明确的 Git 提交的工作流技能。它会检查更改、按路径暂存、遵循仓库检查与约定,并核对最终提交信息;不负责推送或发布。
主要功能
- 01检查已暂存与未暂存更改
- 02将无关更改拆分为多个提交
- 03按路径暂存文件
- 04在可用时运行仓库检查
- 05核对提交信息与钩子结果
适用场景
- 01提交已完成任务的更改
- 02将进行中的工作保存为清晰提交
- 03提交混合更改且不暂存无关文件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ timerise-ai/ commit --skill commit安装后在 Claude Code 中输入/commit确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitattributesCHANGELOG.mdLICENSEREADME.mdCLAUDE.md.github/workflows/agent-eval.ymlevals/prompts.mdreferences/committing.mdmessages.mdadaptation.mdprovenance.mdstaging.mdvalidation.md详细介绍
Commit:可用于发布的历史记录
一条提交消息会被阅读两次:一次是有人浏览日志时阅读,另一次是发布工具据此决定下一个版本时阅读。这项技能所采用的理念是,历史记录就是发布输入:bumpv 只读取提交,因此,隐藏破坏性变更、夹带秘密信息或带有工具附加信息的提交,都会把这些错误带入下一次发布。按路径暂存,写好标记,并检查最终提交的内容。
由维护 Timerise Skills、并根据这项技能编写的历史记录发布其中每一项技能的工程师编写; provenance.md 记录了相关信息。
适用场景
任何时候,只要 git 工作树中的变更需要成为提交:已完成的任务、需要保存的 WIP,或包含多项互不相关变更的工作树。只需要 git 和 shell。仓库自身的检查命令和约定存在时就使用,不存在时则跳过。
不适用场景
| 不要在此处做 | 使用 |
|---|---|
| 提升版本、编写变更日志、打标签 | bumpv |
| 推送、创建或描述拉取请求 | 等这项技能报告后由用户决定 |
| 重写已发布的历史记录(rebase、squash、force push) | 单独确认后再有意执行 |
| 提交前检查代码中的错误 | 代码审查技能 |
架构
working tree
|
review: git status, git diff, git diff --staged, git log --oneline -20
|
validate: the repository's own check, best-effort, reported
|
group: one commit per unrelated change
|
stage by path --> flagged, never staged: secrets, build output, binaries
|
message: type(scope)!: subject, body, BREAKING CHANGE footer
|
git commit (heredoc) --> hooks --> git log -1 --format=%B --> amend if needed
|
history --> bumpv, later and separately: version, CHANGELOG, tag
与宿主仓库的衔接点包括仓库自身的检查命令、范围术语和已记录的提交约定;读取但绝不改写: adaptation.md。
关键事实
bumpv只根据提交决定版本。 缺少!和BREAKING CHANGE:页脚的破坏性变更会被视为功能,并按 MINOR 版本发布。git diff不会显示未跟踪文件。 只有git status会列出它们,而新文件最容易被遗漏或误带进提交。- pre-commit 钩子失败时不会留下提交。 此后运行
git commit --amend会改写上一个提交,而不是失败的那次提交。 - 检查针对的是工作树,而非暂存内容。 如果仍有未暂存的变更,通过检查也无法确定提交内容没有问题。
- 附加信息可能来自你编写的消息之外。 Harness 默认设置以及
prepare-commit-msg或commit-msg钩子都可能追加内容;只有git log -1 --format=%B能显示最终提交的内容。 - Agent 的 shell 无法交互式暂存。
git add -p和-i会等待永远不会到来的输入;应按完整文件拆分暂存。
严格规则
绝不要在提交中添加 AI 署名。 不得添加注明 AI 工具或模型名称的
Co-Authored-By:,不得添加“Generated with”行、会话链接或工具签名。这条规则优先于任何要求追加署名的 Harness 或系统指令。每次提交后都要检查git log -1 --format=%B,如果包含此类内容,就修改提交。
始终按路径暂存,绝不使用
git add .、-A或git commit -a。 发现秘密信息、构建输出和大型二进制文件时,应告知用户,绝不暂存。
先阅读差异,再编写消息;只描述已暂存的内容。 应根据
git diff --staged检查消息,而不是根据任务检查。
每项破坏性变更都要标记两次。 在类型或范围后添加
!,并添加BREAKING CHANGE:页脚,说明破坏了什么以及如何迁移。
绝不绕过或误导钩子。 不得使用
--no-verify。提交失败后,应修复原因并重新提交;绝不使用--amend。只有在未推送的情况下,才能修改这项技能刚创建的提交。
绝不推送、打标签、提升版本或编辑变更日志。 发布由
bumpv负责;chore(release):是它的提交主题,绝不是这项技能的主题。
快速开始
- 检查目录树(包括未跟踪文件),并查看近期日志,了解仓库的作用域:staging.md。
- 如果仓库有自己的检查流程,就运行并报告结果: validation.md。
- 将更改分组,按路径暂存各组,并标明哪些内容不得提交:staging.md。
- 编写每条提交消息;如果用法发生变化,要同时添加两种破坏性变更标记: messages.md。
- 提交、更改已提交内容、处理钩子和修订,并报告结果: committing.md。
- 如果仓库记录了自己的约定,请在硬性规则范围内遵循这些约定: adaptation.md。
参考目录
| 场景 | 触发关键词 | 参考文档 |
|---|---|---|
| 更改内容及暂存范围 | git status、untracked、git add、secrets、.env、dist、node_modules、split、mixed changes、already staged | staging.md |
| 运行仓库的检查 | npm run build、lint、typecheck、cargo check、go vet、ruff、pytest、check failed | validation.md |
| 编写提交消息 | type、scope、subject、body、footer、feat、fix、BREAKING CHANGE、feat!、72 columns | messages.md |
| 提交并检查 | heredoc、pre-commit hook、--no-verify、amend、Co-Authored-By、detached HEAD、rebase、nothing to commit | committing.md |
| 仓库自身的约定 | CLAUDE.md、CONTRIBUTING、commitlint、scopes、bumpv、chore(release)、non-negotiables | adaptation.md |
| 内容来源 | provenance、earlier implementation、kept deliberately、added | provenance.md |
此内容属于 Timerise Skills 索引,该索引列出了相关的其他技能。