关于 workflow-preflight
workflow-preflight 是一项编码技能,可在开始或恢复工作前检查仓库与分支状态。它结合 Git 检查和 GitHub 工单、拉取请求搜索,提示已有工作、分支差异及冲突。
主要功能
- 01获取远程状态并清理过期引用
- 02检查相关工单、拉取请求和分支
- 03报告分支差异与未提交更改
- 04检测潜在合并冲突
- 05汇总仓库就绪状态
适用场景
- 01开始功能或工单前
- 02中断后恢复工作时
- 03创建拉取请求分支前
- 04启动并行 Agent 前
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill workflow-preflight安装后在 Claude Code 中输入/workflow-preflight确认已加载。
详细介绍
/workflow:preflight
工作前验证,避免因状态过期、重复工作或分支冲突而浪费精力。
何时使用此技能
| 在以下情况下使用此技能…… | 在以下情况下跳过…… |
|---|---|
| 开始处理新问题或新功能 | 快速修改单个文件 |
| 中断后恢复工作 | 本次会话中已验证状态 |
| 启动并行 Agent 前 | 在隔离的工作树中工作 |
| 为 PR 创建分支前 | 分支已创建并验证 |
上下文
- 仓库:!
git remote get-url origin - 当前分支:!
git branch --show-current - 远程跟踪:!
git branch -vv --format='%(refname:short) %(upstream:short) %(upstream:track)' - 未提交的更改:!
git status --porcelain - 暂存数量:!
git stash list
执行
步骤 1:获取最新远程状态
git fetch origin --prune 2>/dev/null
步骤 2:检查是否已有相关工作
如果提供了问题编号,请检查该问题是否已解决:
# Check if issue exists and its state
gh issue view $ISSUE --json number,title,state,labels 2>/dev/null
# Check for PRs that reference this issue
gh pr list --search "fixes #$ISSUE OR closes #$ISSUE OR resolves #$ISSUE" --json number,title,state,headRefName 2>/dev/null
# Check for branches that reference this issue
git branch -a --list "*issue-$ISSUE*" --list "*fix/$ISSUE*" --list "*feat/$ISSUE*" 2>/dev/null
如果存在已合并的 PR:报告该问题已解决。停止。 如果存在未关闭的 PR:报告该 PR,并询问用户是要继续在该分支上工作,还是重新开始。
步骤 3:验证分支状态
# Check divergence from main/master
git log --oneline origin/main..HEAD 2>/dev/null || git log --oneline origin/master..HEAD 2>/dev/null
# Check if main has moved ahead
git log --oneline HEAD..origin/main -5 2>/dev/null || git log --oneline HEAD..origin/master -5 2>/dev/null
# Check for uncommitted changes
git status --porcelain=v2 --branch 2>/dev/null
报告:
- 领先于/落后于远程的提交数
- 可能造成干扰的未提交更改
- 是否需要变基
步骤 4:检查冲突
# Dry-run merge to detect conflicts (without actually merging)
git merge-tree $(git merge-base HEAD origin/main) HEAD origin/main 2>/dev/null | head -20
步骤 5:总结报告
输出结构化摘要:
| 检查项 | 状态 | 详情 |
|---|---|---|
| 远程状态 | 最新/过期 | 最近获取时间 |
| 已有 PR | 无/未关闭/已合并 | 如有,列出 PR 编号 |
| 分支状态 | 干净/有更改/分叉 | 领先/落后数量 |
| 冲突 | 无/已检测到 | 冲突文件 |
| 暂存 | 空/N 项 | 暂存内容 |
建议:
- 如果落后于远程:"开始工作前建议先变基"
- 如果发现已有 PR:"PR #N 已处理此问题——请先检查,再决定是否重复处理"
- 如果状态不干净:"创建分支前请提交或暂存更改"
- 如果检测到冲突:"继续前请先解决与 main 的冲突"
- 如果状态干净:"可以继续"
Agentic 优化
| 上下文 | 命令 |
|---|---|
| 快速同步远程 | git fetch origin --prune 2>/dev/null |
| 检查已有 PR | gh pr list --search "fixes #N" --json number,state,headRefName |
| 分支分歧 | git log --oneline origin/main..HEAD |
| 冲突检测 | git merge-tree $(git merge-base HEAD origin/main) HEAD origin/main |
| 精简状态 | git status --porcelain=v2 --branch |
| 远程跟踪 | git branch -vv --format='%(refname:short) %(upstream:track)' |
快速参考
| 标记 | 说明 |
|---|---|
git fetch --prune | 获取远程更新并移除过期的远程引用 |
git status --porcelain=v2 | 可供机器解析的状态 |
gh pr list --search | 按内容搜索 PR |
gh issue view --json | 结构化问题数据 |
git merge-tree | 试运行合并冲突检测 |
git log A..B | B 中有而 A 中没有的提交 |
评论
支持 Markdown