名称: ctx-commit 描述: “带有上下文持久化的提交。替代原始git commit使用,在代码变更的同时捕获决策和学习内容。”
提交代码变更,然后提示记录值得保存的决策和学习内容。 弥合提交代码与记录背后上下文之间的差距。
何时使用
- 完成有意义的工作(功能、bug修复、重构)后提交时
- 提交涉及设计选择或权衡,未来会话应了解时
- 用户说"提交"或"提交这个"时——优先使用此功能而非原始git commit以捕获上下文
何时不使用
- 对于琐碎提交(拼写错误、格式化)——正常提交即可
- 用户明确说"只提交,不要上下文"时
- 没有变更时(没有暂存或未暂存的修改)
使用示例
/ctx-commit
/ctx-commit "实现会话丰富功能"
/ctx-commit --skip-qa
流程
1. 提交前检查
除非用户说--skip-qa或"跳过检查":
- 运行
git diff --name-only查看变更内容 - 如果Go文件变更,运行
CGO_ENABLED=0 go build -o /dev/null ./cmd/ctx验证构建 - 如果构建失败,停止并报告——不提交损坏的代码
2. 暂存和提交
- 使用
git status查看未暂存的变更 - 暂存相关文件(优先使用特定文件而非
git add -A) - 创建简洁的提交信息:
- 如果用户提供了信息,使用它
- 如果没有,基于变更草拟一个(1-2句话, 说明"为什么"而非"是什么")
- 使用标准的Co-Authored-By尾部提交
3. 上下文提示
成功提交后,询问用户:
需要捕获什么上下文吗?
- 决策:您是否做出了设计选择或权衡? (我将使用
ctx add decision记录)- 学习:您是否遇到了陷阱或发现了什么? (我将使用
ctx add learning记录)- 都不需要:没有需要捕获的上下文——完成。
等待用户响应。如果他们提供了决策或学习内容, 使用适当的命令记录:
ctx add decision "..."
ctx add learning --context "..." --lesson "..." --application "..."
4. 文档漂移检查(条件性)
如果提交的文件包括可能影响文档的源代码
(internal/cli/、internal/config/、
internal/assets/、cmd/中的Go文件),提醒用户:
源代码文件已变更——需要我运行
/update-docs检查 文档漂移吗?
在以下情况下跳过此提示:
- 仅非代码文件变更(markdown、配置、脚本)
- 仅测试文件变更
- 用户已在本会话中运行过
/update-docs
5. 反思(可选)
如果提交代表重要里程碑(完成一个功能、 结束多会话工作、解决复杂bug),建议反思:
这看起来是一个很好的检查点。需要我运行快速
/ctx-reflect来捕获更大的图景吗?
仅对重要提交建议——不是每个提交都需要反思。 需要反思的迹象:
- 跨不同包的多个文件变更
- 提交关闭了TASKS.md中的任务
- 工作涉及权衡或替代方案的讨论
提交信息风格
遵循仓库现有的提交风格。草拟的信息应:
- 关注为什么,而非是什么(差异显示是什么)
- 简洁(1-2句话)
- 使用小写,结尾不加句号
- 以Co-Authored-By尾部结束
示例:
向智能体剧本和技能添加推理提示
思维链提示显著提高准确性。
向7个技能和剧本模板添加了逐步推理指令。
Co-Authored-By: Claude <noreply@anthropic.com>
不应做什么
- 不要未经询问就提交——始终向用户确认提交信息 (或使用他们提供的信息)
- 不要跳过上下文提示——这是此技能的全部意义; 没有它,使用原始git commit
- 不要强制反思——仅在适当时建议,并优雅接受"不"
- 不要提交机密——检查差异中的
.env、凭据、令牌
质量检查清单
提交前验证:
- [ ] 构建通过(如果Go文件变更)
- [ ] 提交信息简洁并解释原因
- [ ] 暂存变更中没有机密或敏感文件
- [ ] 暂存了特定文件(非盲目
git add -A)
提交后验证:
- [ ] 向用户呈现了上下文提示
- [ ] 记录提供的任何决策/学习内容
- [ ] 提供了文档漂移检查(如果源代码变更)
- [ ] 如果提交重要,建议了反思