关于 git
面向 Claude Code、OpenCode 和 Codex 的通用 Git 工作流技能,指导编码 Agent 处理原子提交、拉取请求和评审意见,并避免添加 AI 署名页脚。
主要功能
- 01规划原子提交
- 02使用约定式提交信息
- 03创建草稿拉取请求
- 04更新拉取请求说明
- 05处理评审意见
适用场景
- 01将无关改动拆分为多个提交
- 02为当前分支创建草稿拉取请求
- 03更新现有拉取请求说明
- 04处理拉取请求评审反馈
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ agoodway/ goodskills --skill git安装后在 Claude Code 中输入/git确认已加载。
附带文件README.md
详细介绍
Git 工作流技能
此技能与运行时无关,可在 Claude Code、OpenCode 和 Codex 中使用。使用当前运行时的 shell、读取、编辑/写入、搜索和提问工具。任何运行时都不要添加 AI 署名页脚。
运行时说明
- Claude Code:如果可用,使用
AskUserQuestion让用户选择。 - OpenCode:如果可用,使用提问工具让用户选择。
- Codex:需要交互式输入时,直接询问用户。
- 如果需要运行交互式 git 命令,请避免使用,并改用非交互式替代方案。除非运行时能够安全地处理交互,否则不要使用
git add -p;应改为暂存明确指定的文件,或询问用户要包含哪些文件。
原子化提交
提交前,检查所有更改并按逻辑单元整理:
- 将相关更改分组——同一功能、错误修复或重构应放在一起
- 分离无关更改——不同的修复或功能应分别提交
- 单一职责——每次提交都应能独立还原
- 不要混合不同关注点——将格式更改与逻辑更改分开
如果更改涉及多个关注点,请暂存特定文件以创建单独的提交。只有在运行时能够安全支持时才使用部分暂存;否则询问用户如何拆分更改。
命令
/git(无子命令)
不带子命令调用时,默认执行以下提交工作流。
/git help
显示所有可用子命令的列表。按以下内容原样输出:
/git subcommands:
commit [message] — Commit staged/unstaged changes with conventional format
commit-all — Commit all changes as logical atomic commits, skipping junk files
pr [context] — Create a draft pull request for the current branch
pr-update — Push and update an existing PR description
pr-pull-review — Fetch PR review comments and address them
help — Show this help message
/git commit [message]
提交更改,不添加 AI 署名。
- 运行
git status,查看需要提交的内容(包括未跟踪文件) - 运行
git diff,检查更改 - 分析更改的逻辑分组——如果更改彼此无关,则创建多个提交
- 将相关更改一起暂存:
- 对于指定文件:
git add <file1> <file2> - 对于部分暂存:使用运行时支持的非交互式补丁工作流,或询问用户如何拆分更改
- 包含
git status中显示的所有新文件/未跟踪文件
- 对于指定文件:
- 使用约定格式创建提交:
type: description - 不要添加 AI 署名页脚
- 如果用户在 $ARGUMENTS 中提供了消息,将其用作提交的上下文
- 提交后,使用运行时的提问机制询问用户是否要推送
- 如果用户选择推送,且当前不在 main 分支上,则询问他们是否要创建 PR
- 如果选择创建 PR,使用
gh pr create --draft,并提供恰当的标题和描述
/git commit-all
将所有工作区更改作为逻辑清晰、原子性的提交提交,但跳过看起来不需要的文件。
- 运行
git status,查看所有已暂存、未暂存和未跟踪的更改 - 过滤掉无用文件 — 不要暂存或提交以下任何文件:
- 操作系统生成的文件:
.DS_Store、Thumbs.db、Desktop.ini、._* - 编辑器/IDE 文件:
.idea/、.vscode/settings.json、*.swp、*.swo、*~ - 构建产物:
_build/、deps/、node_modules/、dist/、*.beam - 临时/调试文件:
*.log、*.tmp、*.bak、*.orig、dump.rdb - 密钥:
.env、.env.*(.env.sample、.env.example除外)、credentials.* - 任何已被
.gitignore规则涵盖的文件 - 如果不确定某个文件是否需要,请使用运行时的问题机制询问用户
- 操作系统生成的文件:
- 运行
git diff和git diff --cached,检查所有更改 - 将更改分组成逻辑清晰的提交,遵循原子提交规则:
- 分析每个更改过的文件,确定其所属事项
- 按功能、修复、重构或领域分组 — 每组对应一个提交
- 将格式/样式更改与逻辑更改分开
- 迁移、架构更改及其对应代码应放在一起
- 测试文件应与其测试的代码放在一起
- 按依赖顺序处理每个逻辑分组(例如,先提交迁移,再提交使用迁移的代码):
- 仅暂存该组的文件:
git add <file1> <file2> ... - 使用约定格式提交:
type: description - 不要添加 AI 署名页脚
- 仅暂存该组的文件:
- 所有提交完成后,展示提交摘要(提交数量、文件、简短日志)
- 使用运行时的问题机制询问用户是否要推送
- 如果用户要推送且当前分支不是 main,请询问他们是否要创建 PR
/git pr [context]
为当前分支创建拉取请求。
- 检查
git status,查看是否有未提交的更改 - 如果存在未提交的更改:
- 运行
git diff进行检查 - 遵循原子提交规则 — 如有需要,创建多个提交
- 按约定格式暂存并提交
- 不要添加 AI 署名
- 运行
- 使用
git log确认当前分支和最近的提交 - 将所有尚未推送的提交推送到远程仓库
- 确定基础分支(检查
git remote show origin获取默认分支;若失败则使用 'main') - 使用
gh pr create --draft创建 PR,并包含:- 符合约定式提交格式的清晰标题
- 详细正文,包含:
- 带项目符号的摘要部分
- 按领域组织的详细更改
- 带检查项的测试计划
- 适用时的破坏性更改或迁移说明
- 不要添加 AI 署名或生成来源页脚
- 如果用户在 $ARGUMENTS 中提供了上下文,请将其用于 PR 标题/说明
- 向用户返回 PR URL
/git pr-update
推送当前分支并更新 PR 说明。
- 确认当前位于 git 仓库中,并获取当前分支名称
- 检查是否有未提交的更改 — 如果有,提醒用户
- 将当前分支推送到 origin(如果远程不存在该分支,则使用
-u标志) - 使用
gh pr view检查 PR 是否存在 - 如果 PR 存在:
- 获取当前 PR 编号和详情
- 使用
git log分析自创建 PR 以来的提交 - 生成更新后的说明,包含:
- 所有更改的摘要
- 所含提交列表
- 相关的测试计划更新
- 使用
gh pr edit更新 PR
- 如果不存在 PR:
- 询问用户是否要创建一个
- 如果是,分析自与 main/master 分叉以来的所有提交
- 使用
gh pr create --draft创建内容完整的 PR
- 显示 PR URL 和更新内容摘要
/git pr-pull-review
拉取 PR 审查评论并处理。
- 获取当前分支名称并查找关联的 PR:
- 运行
gh pr view --json number,url,title获取 PR 详情 - 如果不存在 PR,告知用户并停止
- 运行
- 获取所有审查评论:
- 运行
gh pr view --json reviews,comments获取 PR 顶层评论 - 运行
gh api repos/{owner}/{repo}/pulls/{number}/comments获取行内审查评论(这些评论针对特定文件) - 仅筛选未解决且可执行的评论 — 跳过:
- 已解决的评论串
- 纯批准或「LGTM」评论
- 机器人评论(CI、代码检查工具等)
- 运行
- 向用户列出每条审查评论的编号摘要:
- 对于行内评论:显示文件、行号和评论正文
- 对于普通评论:显示评论正文
- 使用运行时的提问机制,询问用户要处理哪些评论(全部、指定编号或跳过)
- 对于用户希望处理的每条评论:
- 阅读相关文件以了解上下文
- 实施所要求的更改
- 如果评论含糊不清,或你不同意该建议,在更改前使用运行时的提问机制询问用户
- 完成所有更改后:
- 遵循原子提交规则 — 将相关的审查修复归为一组
- 按以下格式提交:
fix: address PR review — <brief summary> - 不要包含 AI 署名页脚
- 在 PR 上回复每条已处理的评论:
- 运行
gh api repos/{owner}/{repo}/pulls/{number}/comments/{comment_id}/replies -f body="Addressed in <commit-sha>" - 对于顶层评论,使用
gh pr comment --body "Addressed: <summary of what was fixed>"
- 运行
- 推送更改并展示已处理内容的摘要
提交消息格式
type: concise description
Optional body for context
类型: feat、fix、chore、docs、refactor、test、style
错误处理
如果发生任何错误:
- 清楚说明出了什么问题
- 提出修复方案或替代方案
- 询问用户是否希望重试或手动处理
$ARGUMENTS
评论
支持 Markdown