preflightlisted
Install: claude install-skill snowzhaozhj/claude-devtools-rs
# preflight
> 触发:`/preflight`;或用户开工信号("开始做 X / 帮我实现 Y / 先做 A 再做 B / 修这个 bug")
> 输出:4 个检查结果 + 给用户的简短确认问题
> 不修改任何文件——只读 + 决策 + 可能跑一次 `git fetch`。
## 为什么有这个 skill
CLAUDE.md "What to do first in a fresh session" 把 4 件事列成开工硬约束。但 Claude 在"看上去很急"的请求下会跳:
- 在 main 上编辑(已配 hook 拦截,但仍有路径白名单空隙)
- 行为契约改动事后补 spec(OpenSpec 流程)
- 主动 grep / Read 污染主上下文(应该用 Explore subagent)
- **本地 origin/main SHA 过期就直接起 worktree**——EnterWorktree 默认 `worktree.baseRef=fresh` 用本地 origin/main 指针,不 fetch → 从过期 SHA 起 → PR 一上来 conflict(PR #122 案例:本地落后 24h+ 错过多个 PR)
这个 skill 强制把"跳"成本提前——开工先回答 4 个问题,再触工具。
## 工作步骤
### Step 1:跑诊断命令(并行)
```bash
git fetch origin main --quiet
git branch --show-current
git rev-list --left-right --count HEAD...origin/main
git status --short
ls openspec/changes/ 2>/dev/null | grep -v "^archive$"
```
输出四块:
- 当前分支
- 本地与 origin/main 的偏离(`A B` = 本地多 A 个 commit / 远端多 B 个)
- 未跟踪 / 未提交文件
- 进行中(未 archive)的 openspec change 列表
`git fetch` 是硬约束——CLAUDE.md L 列入"What to do first" 第 1 条。如果 fetch 失败(无网络 / 鉴权),照样继续,但在 Q1 报告里告知"未 fetch,origin/main 指针可能过期"。
### Step 2:回答 4 个问题(自检后给用户看)
**Q1. origin/main 是否已 fetch + 本地是否落后?**
- fetch 成功 + 本地 = origin/main 或仅领先 → ✅ 进入 Q2
- 本地落后(右数 > 0)→ ⚠️ 报告"本地比 origin/main 落后 N 个 commit",建议在切分支前 `git checkout main && git pull` 同步——尤其是要起 worktree 时(EnterWorktree 用本地 origin/main 指针,落后会从过期 SHA 起)
- fetch 失败 → ⚠️ 报告"未能 fetch,可能离线;如有网络请先 fetch 再开工"
**Q2. 当前在 feature 分支吗?**
- 当前分支非 `main` / `master` → ✅ 进入 Q3
- 当前分支 = `main` 或 `master` → ❌ 报告"开工前需要 `git checkout -b fea