ワンクリックで
git-commit-select
筛选未提交改动,仅提交有效代码修复,保留调试/临时改动在工作区不提交也不删除。触发词:筛选提交、选择性提交、只提交有效改动、commit real changes、跳过调试提交、debug changes。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
筛选未提交改动,仅提交有效代码修复,保留调试/临时改动在工作区不提交也不删除。触发词:筛选提交、选择性提交、只提交有效改动、commit real changes、跳过调试提交、debug changes。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
在当前会话里按已写好的实现计划顺序执行任务时使用
在已有规格或多步骤任务需求、且在动代码之前使用。若上游 ddev-pc-test 已产出测试用例,自动走 TDD 流程:先实现测试 demo 代码(红灯),再实现被测代码(绿灯),测试覆盖不到的部分直接开发。
文档审查技能。将文档审查任务派发给独立子代理,重点审查文档基于代码改动的合理性、说明正确性、前后一致性、错漏和逻辑谬误,以及 AI 实现过程中产生的决策记录(implementation-notes.md)。当用户需要审查技术文档、spec文档、设计文档、计划文档、API文档、README 或任何与代码改动相关的文档时使用。
代码修改场景下,spec 文档确认后,需要继续以图优先方式梳理结构体定义、数据流和流程时使用
在代码修改前需要编写 spec 文档且应优先用图表达边界、入口、流程和改动关系时使用(仅限代码改动场景,非项目级架构文档初始化)
在代码实现完成后、准备结束任务或进入发布前使用,用来核对代码实现是否与 spec 文档以及 detail 文档一致,并通过代码质量审查、清理、编码规范和注释审查后给出最终验收结论
| name | git-commit-select |
| description | 筛选未提交改动,仅提交有效代码修复,保留调试/临时改动在工作区不提交也不删除。触发词:筛选提交、选择性提交、只提交有效改动、commit real changes、跳过调试提交、debug changes。 |
从当前未提交改动中自动筛选"有效代码修复",仅提交这些改动;调试/临时代码保留在工作区,既不提交也不删除。
仅限手动调用,不自动匹配。触发词示例:
以下改动视为调试/临时改动,不提交:
| 类别 | 识别特征 |
|---|---|
| 调试日志 | 新增调试打印语句(printf、fprintf(stderr,、console.log、NSLog、log::、print(、LOG_DEBUG、pr_dbg 等),或明显仅用于开发期观察的输出 |
| 临时注释标记 | 含 TODO、DEBUG、test、temp、FIXME、HACK 标记的新增代码 |
| 注释掉的旧实现 | 被 // 或 /* */ 或 #if 0 注释掉的原有代码行 |
| 临时变量 | 仅为调试新增的计数器、状态 dump 变量 |
| 调试配置值 | 为调试临时改小的超时、延迟、重试次数等魔数 |
| 个人 gitignore | .gitignore 中新增的个人工具/IDE/脚本路径 |
| 日志宏开关 | 临时开启的 debug 宏(#define DEBUG 1、调试级别调高) |
| 死代码 | 被注释掉但未删除的函数/逻辑块 |
以下改动视为有效修复,应提交:
| 类别 | 识别特征 |
|---|---|
| 逻辑修正 | 条件判断、边界处理、状态机转换、循环逻辑的修正 |
| 功能代码 | 新特性、新接口、新函数、新配置项 |
| 错误处理 | 新增 return 值检查、null 判断、资源释放、cleanup 路径 |
| 协议/结构体 | 通信协议字段、数据结构、接口定义的增删改 |
| 配置项 | 产品功能配置、硬件参数、版本号(非临调目的) |
| 文档 | docs/ 下架构文档、接口说明、README、CHANGELOG |
| 代码清理 | 删除死代码、修复 warning、字段重命名、重构 |
CLAUDE.md、CONTRIBUTING.md 或 .github/ 下的提交规范说明git-commit-<repo>),优先使用其格式生成 commit messagegit status --porcelain # 所有未提交文件列表
git diff --cached # 已暂存区改动
git diff # 工作区未暂存改动
对每个有改动的文件:
git diff <file> 查看完整改动以表格展示:
| 文件 | 有效修复 | 调试改动 | 操作 |
|------|---------|----------|------|
| src/main.c | 错误处理 2 处、逻辑修正 1 处 | debug printf 3 处 | 部分提交 |
| config.h | 新增配置项 1 处 | — | 全部提交 |
| .gitignore | — | 个人工具路径 | 跳过 |
必须等待用户确认后才执行暂存操作。
git add <file>git add -p <file> 交互式选择 hunk,或手动编辑 patch:# 方案 A:交互式(推荐,hunk 少时)
git add -p <file>
# 按 y/n/s 逐 hunk 选择
# 方案 B:手动编辑 patch(hunk 多、需要细粒度控制时)
git diff <file> > /tmp/selective_<file>.patch
# 编辑 /tmp/selective_<file>.patch,删除调试改动的 hunk
# patch 文件中每个 hunk 以 @@ ... @@ 开头,删除整个调试 hunk 块
git apply --cached /tmp/selective_<file>.patch
编辑 patch 文件注意事项:
@@ -old_start,old_count +new_start,new_count @@ 开头@@ 行到下一个 @@ 行之前,或到文件末尾)git apply 会自动调整根据第一步确认的仓库规范生成 commit message。如有仓库专属 commit skill 则调用它;否则按通用 Conventional Commits 格式。
git commit -m "<生成的 commit message>"
正文(可选)仅描述有效修复内容,不提及跳过的调试改动。
git diff # 确认调试改动仍在工作区,未被提交
git diff --cached # 确认暂存区已清空(提交后)
git log -1 --stat # 确认提交内容正确
git checkout -- <file> / git restoregit reset --hardgit reset HEAD~1 即可撤销 // 调试改动(不提交):
+ printf("[DEBUG] state=%d, ret=%d\n", state, ret);
// 有效修复(提交):
- if (ret < 0) return;
+ if (ret < 0) { cleanup(); return -1; }
// 调试改动(不提交):
- #define TIMEOUT_MS 5000
+ #define TIMEOUT_MS 100
// 有效修复(提交):
+ #define RETRY_MAX 3
// 调试改动(不提交):
+ // old_handler(); // TODO: remove after verify
// 有效修复(提交):
+ new_handler_v2();
如果某个文件的所有改动都是调试目的(如只在文件头加了 #define DEBUG 1),整文件跳过不提交。