mcpField
B
branch-cleanup

branch-cleanup

github.com/paulnsorensen开发093 次安装3 周前更新
代码仓库

关于 branch-cleanup

branch-cleanup 是用于报告过期远程分支并提出安全清理建议的技能。它检查分支时效、合并状态、拉取请求和保护规则;删除前必须获得明确授权,也可选择配置仅生成报告的工作流。

主要功能

  1. 01报告过期远程分支
  2. 02检查时效及领先/落后状态
  3. 03纳入未关闭 PR 和保护规则
  4. 04删除前要求明确授权
  5. 05提供定期生成报告的工作流

适用场景

  1. 01审计仓库中的远程分支
  2. 02识别应保留、归档或删除的分支
  3. 03查看已合并的本地分支但不删除
  4. 04配置定期过期分支报告

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/paulnsorensen/git-gouda --skill branch-cleanup

安装后在 Claude Code 中输入/branch-cleanup确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
stale-branch-report.yml
evals/
evals.json
references/
policy.md
scripts/
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 — 更全面的仓库健康检查,包括社区标准文件。

评论

支持 Markdown