
关于
优化 Git 工作流,涵盖约定式提交、分支策略、交互式变基和 PR 自动化。
name: git-ops description: "完整的 git + worktree 编排器。丰富的状态概览、按 worktree 分类(可清理/进行中/幽灵/孤立)、提交、PR、分支、发布、变基 — 只读操作内联执行,写操作分派给后台 Sonnet 代理。触发词:status、state、当前状态、git status、有什么要提交的、有什么要推送的、commit、push、pull request、create PR、git diff、rebase、stash、branch、merge、release、tag、changelog、semver、cherry-pick、bisect、worktree、worktree survey、可清理的 worktree、land worktree。" license: MIT allowed-tools: "Read Bash Glob Grep Agent TaskCreate TaskUpdate" metadata: author: claude-mods related-skills: review, ci-cd-ops, push-gate
Git 操作编排器
智能 git 操作编排器。将只读查询内联路由以提高速度,将写操作分派给后台 Sonnet 代理(git-agent)以释放主会话。
架构
User intent (commit, PR, rebase, status, etc.)
|
+---> Tier 1: Read-only (status, log, diff, blame)
| |
| +---> Execute INLINE via Bash (fast, no subagent)
|
+---> Tier 2: Safe writes (commit, push, tag, PR, stash)
| |
| +---> Gather context from conversation
| +---> Dispatch to git-agent (background, Sonnet)
| | +---> Fallback: general-purpose with inlined protocol
| +---> Agent executes and reports back
|
+---> Tier 3: Destructive (rebase, reset, force-push, branch -D)
|
+---> Dispatch to git-agent (background, Sonnet)
| +---> Fallback: general-purpose with inlined protocol
+---> Agent produces PREFLIGHT REPORT (does NOT execute)
+---> Orchestrator relays preflight to user
+---> On confirmation: re-dispatch with execute authority
安全层级
第一层:只读 - 内联执行
无需子代理。通过 Bash 直接执行以获得即时结果。
| 操作 | 命令 |
|------|------|
| 状态(详细) | bash $HOME/.claude/skills/git-ops/scripts/status.sh — 一次性获取 HEAD + 同步 + 工作树 + worktrees + 分支 + PR |
| Worktree 巡检 | bash $HOME/.claude/skills/git-ops/scripts/worktree-survey.sh — 按 worktree 状态、漂移检测、可清理/进行中/幽灵/孤立分类 |
| 状态(简略) | git status --short |
| 日志 | git log --oneline -20 |
| 差异(未暂存) | git diff --stat |
| 差异(已暂存) | git diff --cached --stat |
| 差异(完整) | git diff [file] 或 git diff --cached [file] |
| 分支列表 | git branch -v |
| 远程分支 | git branch -rv |
| 暂存列表 | git stash list |
| 追溯 | git blame [file] |
| 显示提交 | git show [hash] --stat |
| 引用日志 | git reflog --oneline -20 |
| 标签 | git tag --list --sort=-v:refname |
| Worktree 列表 | git worktree list |
| PR 列表 | gh pr list |
| PR 状态 | gh pr view [N] |
| Issue 列表 | gh issue list |
| CI 检查 | gh pr checks [N] |
| 运行状态 | gh run list --limit 5 |
对于第一层操作,格式化结果并直接展示。可用时使用 delta 显示差异。
何时使用内置脚本:
- 用户询问status、当前状态、有什么要提交的、有什么要推送的 →
status.sh - 用户询问 worktrees、可清理分支、漂移、可以清理什么 →
worktree-survey.sh - 两个脚本退出码:0 表示干净,1 表示需要关注,2 表示非仓库 — 可组合使用。
卫生检查(主动 — 每次第一层状态检查时运行)
运行任何状态检查时,扫描以下反模式并在状态输出之前显示。不要等用户自己发现。status.sh 脚本自动处理检查 1 和 2;检查 3 和 4 由 Claude 负责。
反模式 1:主检出在功能分支上 🔴
信号: 在主检出(非 worktree)中且 git branch --show-current ≠ 仓库默认分支(main/master/trunk)。
为什么有问题: 主检出是后备工作空间。功能分支停留在那里会阻碍干净的状态读取,混淆 worktree 操作,并使当前状态不明确。功能开发应在专用 worktree 中进行。
标记: 在状态输出前发出醒目警告。
修复:
git checkout main # return main to trunk
git worktree add .claude/worktrees/<name> <feature-branch> # move work to worktree
检测主检出 vs worktree:
GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)
# .git → main checkout → check applies
# contains worktrees → inside a worktree → skip this check
反模式 2:过期的已合并分支 🟡
信号: git branch --merged <default> 返回除主干以外的分支。
为什么有问题: 已合并但未删除的分支是噪音,会遮蔽真正进行中的工作。
标记: 报告数量。建议使用 git branch cleanup 来审查和删除。
反模式 3:已推送分支上的 WIP 提交 🟡
信号: 最近的提交消息包含wip、WIP、fixup、squash等标记,且分支已推送到远程。
为什么有问题: WIP 提交推送到远程会污染协作历史,应在推送前整理。
标记: 提醒用户在推送前进行交互式变基整理提交。

