用途
该技能用于指导智能体在多人或多会话并行操作同一 Git 仓库时,安全地提交本次会话中自己完成的工作。它的核心原则是:只提交你本次会话创建、编辑或删除的文件,其他并行会话的改动不属于你,不应被提交。
主要能力
- 识别本次会话涉及的文件,包括创建、编辑、删除的文件。
- 将
.claude/agent-memory/下的改动视为本次会话的一部分,无论实际由谁写入,因为这是具有记忆的智能体的笔记,而非并行会话的进行中工作。 - 通过
git status --porcelain检查工作区,排除不属于本次会话的改动。 - 对混合了他人改动的文件,支持只暂存自己的部分:在无交互终端时,可将自己的改动写入补丁文件,删除他人改动后使用
git apply --cached暂存。 - 使用
git commit --only按路径提交,避免他人已暂存的改动被一并提交。 - 对新建文件,先
git add -- <new-path>再纳入--only列表,因为--only会静默跳过未跟踪路径。 - 提交信息遵循 Conventional Commits 规范,支持 feat、fix、refactor、docs、test、chore、perf、build、ci 等类型。
- 提交后报告提交主题、短 SHA 以及有意跳过的文件及原因。
使用方式
- 列出本次会话涉及的所有文件。若没有改动,说明并停止。
- 运行
git status --porcelain检查工作区,忽略不在列表中的文件。 - 对每个文件运行
git diff -- <path>(如已暂存也运行git diff --cached),若包含非本次会话的改动,则排除该文件;若文件混合了双方改动,只暂存自己的部分。 - 使用
git commit --only -m "<subject>" -- <path> <path> …提交,选项放在--之前。新建文件需先git add -- <new-path>。 - 提交信息格式:
type(scope): summary,祈使语气、小写、无句号、72 字符以内。仅在原因不明显时添加简短正文。不添加署名或共同作者尾注。 - 报告一行:提交主题、短 SHA、有意跳过的文件及原因。除非被要求,否则不推送。
适用场景
- 多个智能体会话同时在同一仓库中工作。
- 需要确保每个会话只提交自己的改动,避免污染他人工作。
- 需要遵循 Conventional Commits 规范的提交信息。
限制与保护规则
- 始终提交到当前分支,不切换、创建或建议分支,即使当前分支是 main/master。禁止
git checkout、git switch、git branch。 - 一个会话的工作对应一个提交。不修改、变基或触碰已有历史。
- 若改动确实是两个不相关的事情,可做两个提交,但仍只包含自己的文件。
- 禁止
git stash、git checkout --、git reset,因为并行会话未提交的工作一旦丢弃将无法恢复。 - 若需要文件的修改前基线,可复制文件并用
git show HEAD:<path> > <path>恢复,运行所需操作后再还原副本。 - 不主动推送。