contextual-commit 是一个用于撰写“上下文提交”的 AI 技能,目标是让提交信息不只有 WHAT(改了什么),还保存 WHY(为什么改):用户诉求、取舍决策、约束和经验。
用途:在提交代码、完成任务或用户要求提交时使用。标准提交与 diff 只能体现改动本身,而意图、被否决方案、硬性限制等推理会随会话结束而消失,此技能用于保留这些上下文。
主要能力:主题行沿用标准 Conventional Commit,如 feat(auth): implement Google OAuth provider,不改变既有规范与工具链。正文使用 action 行,格式为 action-type(scope): description,scope 是可读的概念标签(如 auth、payment-flow),同一概念在项目内保持一致。
action 类型包括:intent(用户想达成什么及原因,用用户的话表达)、decision(存在备选时选择的做法及简要理由)、rejected(考虑后明确放弃的方案及原因,价值最高,可避免后续会话重复提议)、constraint(实现中发现的硬限制、依赖或边界)、learned(实现中的发现,如 API 怪癖、未文档化行为、性能特征)。只写有信号的行,通常 1-3 条,不为填充而写。
使用方式:先运行 git diff --cached --stat 检查已暂存改动。有暂存改动时,以此为提交范围,不考虑未暂存与未跟踪文件;没有暂存时,把未暂存修改和未跟踪文件作为候选,依据会话上下文和 diff 决定暂存与提交内容。提交信息需覆盖范围内的全部改动,不能只写自己参与的。对本次会话有上下文的改动写完整 action 行;对来自先前会话、其他代理或手工编辑、缺乏推理链的改动,只写 diff 能证实的内容,例如可见的技术选择可写 decision,不得编造 intent、rejected、constraint、learned,干净的 Conventional Commit 主题行优于虚构上下文。
限制与注意:主题行必须是 Conventional Commit,action 行只放正文;diff 已说明的内容不重复;rejected 必须写原因;琐碎提交(改错别字、升级依赖、格式化)不写 action 行。与常规 merge、squash、rebase、cherry-pick 等 git 工作流兼容。资料未提供更多安装方式、支持平台或收费信息。