关于 branch-cleanup
branch-cleanup 是用于报告过期远程分支并提出安全清理建议的技能。它检查分支时效、合并状态、拉取请求和保护规则;删除前必须获得明确授权,也可选择配置仅生成报告的工作流。
主要功能
- 01报告过期远程分支
- 02检查时效及领先/落后状态
- 03纳入未关闭 PR 和保护规则
- 04删除前要求明确授权
- 05提供定期生成报告的工作流
适用场景
- 01审计仓库中的远程分支
- 02识别应保留、归档或删除的分支
- 03查看已合并的本地分支但不删除
- 04配置定期过期分支报告
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ paulnsorensen/ git-gouda --skill branch-cleanup安装后在 Claude Code 中输入/branch-cleanup确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/stale-branch-report.ymlevals/evals.jsonreferences/policy.mdscripts/stale_branches.py详细介绍
branch-cleanup
报告过时的远程分支,并提出安全删除建议。未经明确授权,绝不删除任何分支。
本技能不适用于
- 本地 Git 工作树管理(
git worktree add、list、prune)——不在范围内。 - 一次性仓库合并默认设置和分支保护设置——请使用
/gh-bootstrap。 本技能只读取delete_branch_on_merge和现有规则集;它会建议启用该设置,但实际写入通过gh api -X PATCH完成,与/gh-bootstrap在第 2 步使用的端点相同。
协议
1. 检查合并后删除分支设置
REPO="$(gh repo view --json nameWithOwner --jq '.nameWithOwner')"
gh api "repos/$REPO" --jq '.delete_branch_on_merge'
如果为 false,建议启用该设置,并说明其效果:拉取请求合并后,GitHub 会自动删除对应分支的远程引用。在运行 gh api -X PATCH repos/{owner}/{repo} -F delete_branch_on_merge=true 写入操作前,先征求明确授权——完整的合并默认设置 PATCH 请参阅 /gh-bootstrap 第 2 步;本技能不重复该操作。
2. 报告过时分支
从仓库根目录运行随附脚本:
python3 "$BRANCH_CLEANUP_HELPER" --days 90 --github "$REPO"
从已加载的 SKILL.md 所在目录解析 BRANCH_CLEANUP_HELPER(scripts/stale_branches.py),并先解析符号链接。对于脚本报告的每个远程分支:
- 最后一次提交的日期和作者(
git log -1)。 - 相对于默认分支的领先/落后提交数(
git rev-list --left-right --count)。 - 合并状态(
git branch -r --merged <default>)。 - 是否有开放的拉取请求以该分支为目标(
gh pr list --head <branch> --state open --json number),仅在传入--github时检查。 - 是否有规则集保护该分支(
gh api repos/{owner}/{repo}/rules/branches/ {branch}),仅在传入--github时检查。
输出为按分支存续时间排序(最久的在前)的表格,其中包含值为 keep、archive 或 delete 的 recommendation 列。确切的分类规则请参阅 references/policy.md。
3. 本地清理
仅报告,不删除:
git fetch --prune
git branch --merged <default>
列出已在本地合并的分支。未经与第 4 步相同的逐批授权,不得删除本地分支。
4. 绝不自动删除
对于每个分类为 delete 的分支,打印确切命令:
git push origin --delete <branch>
始终排除默认分支、任何受保护的分支,以及任何具有开放拉取请求的分支,不得删除——脚本会将这些分支一律分类为 keep,无论其存续时间长短。运行任何打印出的命令前,必须获得用户的明确授权,并确认获授权的批次与打印出的列表完全一致。
5. 可选的定期报告工作流
如果用户需要定期报告,请将 assets/stale-branch-report.yml 复制到 .github/workflows/stale-branch-report.yml。它只会写入作业摘要,绝不会删除分支。actions/checkout 已固定到 SHA。
6. 验证
重新运行脚本,并确认打印出的表格与远程实际存在的分支(git branch -r)一致。确认任何 delete 建议都不包含默认分支、受保护的分支或具有开放拉取请求的分支。
交叉引用
/gh-bootstrap— 一次性仓库合并默认设置和分支保护规则集。/prek— 本地提交前钩子检查,与分支生命周期无关。/oss-hygiene— 更全面的仓库健康检查,包括社区标准文件。