关于 git-workflow
git-workflow 是面向开发者的 Git 工作流技能,提供分支、提交、钩子和 PR 流程,其中合并检查针对 GitHub。它强调明确的安全规则、验证证据,以及高级操作的参考流程。
主要功能
- 01分支与提交规则
- 02Conventional commits 指引
- 03Git 钩子检测及配置参考
- 04GitHub PR 状态与合并脚本
- 05检查评审、CI 和讨论串的合并门槛
适用场景
- 01规范准备分支与提交
- 02合并前检查 PR 是否就绪
- 03处理钩子或高级 Git 流程
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ netresearch/ git-workflow-skill --skill git-workflow安装后在 Claude Code 中输入/git-workflow确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
checkpoints.yamlevals/evals.jsonreferences/advanced-git.mdci-cd-integration.mdclaude-code-hooks.mdcode-quality-tools.mdcommit-conventions.mdgit-hooks-setup.mdgithub-releases.mdmerge-gate-watcher.mdno-editorializing.mdpull-request-workflow.mdspec-cleanup.mdscripts/conflict-marker-gate.pymerge-gate.shpr-merge.shpr-status-evaluate.jqpr-status-investigate.jqpr-status.shpr-sweep.shrepo-contribution-preflight.shsigning-preflight.shspec-cleanup-guard.shverify-git-workflow.sh详细介绍
Git 工作流技能
不适用于此处
发布:github-release。BLOCKED-PR 诊断:github-project。
仅限 GitHub。 以下分支和提交部分之后的所有内容——pr-status.sh、pr-merge.sh、合并门禁、审查讨论串——都使用 GitHub GraphQL。对于 GitLab 合并请求,对应的 glab 调用见 references/pull-request-workflow.md § GitLab:使用 glab 实现相同门禁。
关键规则(不可协商)
- 不得直接推送到 main——始终创建 PR。
- 所有讨论串解决前不得合并(
references/pull-request-workflow.md)。 - 未经要求不得 squash——保留原子提交、签名和二分查找能力。
- 没有粘贴命令输出,不得声称“已测试/已验证/可正常工作”——否则如实说明。
- 不得编辑已安装的技能/插件缓存路径(
~/.claude/skills/、~/.claude/plugins/cache/、**/.bare/**)——始终在仓库工作树中操作,并通过pwd验证。 - 仅使用
--force-with-lease强制推送——绝不使用普通的--force。 - 先提交,再变基——
add → commit → fetch → rebase → push(工作树有未提交更改时会中止)。 - 不作评判——陈述更改内容,不评价其好坏(
references/no-editorializing.md)。
参考文件
| 参考文件 | 内容触发条件 |
|---|---|
references/commit-conventions.md | Conventional Commits、DCO 签署 |
references/pull-request-workflow.md | PR 合并门禁、签名变基、发布带行内建议的审查 |
references/ci-cd-integration.md | CI 监控、Git 镜像 |
references/advanced-git.md | 变基(包括非交互式 rebase -i)、cherry-pick、bisect、stash、工作树、reflog、推送/抓取卡住(SSH 多路复用)、在脚本中解析 Git 输出(用于锁定 diff/log/status 输出、不受用户配置影响的标志)、在单分支克隆中抓取单个分支(refspec) |
references/github-releases.md | → github-release 技能 |
references/git-hooks-setup.md | Hook 框架、各阶段的 hook |
references/claude-code-hooks.md | settings.json 合并门禁、拒绝缓存路径、自动 lint |
references/code-quality-tools.md | shellcheck、shfmt、git-absorb、difftastic |
references/merge-gate-watcher.md | 等待门禁、被运行环境终止的监控器、合并驱动循环、检查分类、过期 SHA 重跑 |
references/spec-cleanup.md | 清理基分支之外的规划产物 |
references/no-editorializing.md | 不自我表扬,不叙述预期结果 |
Conventional Commits
<type>[scope]: <description>
feat 对应 MINOR,fix 对应 PATCH;完整类型列表和 DCO 签署见 references/commit-conventions.md。
破坏性变更:在类型后加 !,或在页脚添加 BREAKING CHANGE:。
分支:feature/TICKET-123-description、release/1.2.0
Hook 检测
ls lefthook.yml .lefthook.yml captainhook.json .pre-commit-config.yaml .husky/pre-commit 2>/dev/null || echo "No hooks"
各框架的安装命令见 references/git-hooks-setup.md。
PR 合并要求
合并前:讨论串已解决、CI 通过(包括注释)、已变基、已签名,并且当前头部已经过审查——审查者可以是人工、机器人,或通过 pr-merge.sh --self-reviewed 审查的作者。审查是必需的;机器人审查不是必需的,只有在审查确实正在进行时才等待。仅变基且已签名:git merge --ff-only。
验证
./scripts/verify-git-workflow.sh /path/to/repository
# Gate state, next action:
./scripts/pr-status.sh [-R owner/repo] [PR] [--json] [--watch]
# Merge; refuses when the gate is shut:
./scripts/pr-merge.sh [-R owner/repo] [PR] [--dry-run|--self-reviewed]
# Many PRs (`owner/repo N` per line) to merge; stops on any NEXT it does not handle:
./scripts/pr-sweep.sh [--interval SEC] [--timeout SEC] [--attention FILE] LISTFILE
# What a repository expects, before the first artifact:
./scripts/repo-contribution-preflight.sh [--repo <dir>] [--section docs|templates|packaging|ci|tools]
# Which copy is installed here (every script answers this):
./scripts/pr-status.sh --version