关于 vulture-sweep
vulture-sweep 是用于检查和清理 GitHub 问题积压的技能。它按时间和主题归类候选问题,并对照代码库验证完成或过时状态,再关闭问题或提出合并建议。
主要功能
- 01按时间和主题查看未关闭问题
- 02识别已完成、过时或重复的问题
- 03对照代码和测试验证候选项
- 04附说明关闭已验证的问题
- 05合并相关问题并汇报结果
适用场景
- 01查找已实现但仍未关闭的问题
- 02检查过时的积压事项
- 03合并内容重叠的问题
- 04定期整理问题看板
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ autumnsgrove/ lattice --skill vulture-sweep安装后在 Claude Code 中输入/vulture-sweep确认已加载。
详细介绍
Vulture Sweep 🦅
秃鹫耐心地在高空盘旋,看见别人忽略的事物。从高处俯瞰,种种模式逐渐浮现:已经解决却从未关闭的问题、散落各处却本应合并为一项完整任务的零散工作,以及早已失去相关性的工作。秃鹫不会评判。它履行着别人避而不做的必要职责——大自然的清理队。当秃鹫俯冲而下时,它会先验证,再处理。当它再次振翅升空时,待办事项列表也恢复了健康。
何时启用
- 问题看板随着时间推移积累了许多冗余内容
- 用户说“清理我的问题”或“清理待办事项”
- 用户调用
/vulture-sweep或提到 vulture/cleanup - 怀疑有些问题已经完成,却从未关闭
- 发现多个相关问题散落各处,本应合并
- 每季度或每月进行待办事项列表维护
- 重大版本发布后(找出已实现但未关闭的问题)
重要: 这个动物绝不会在未经代码库验证的情况下关闭问题。它只会关闭已证明完成的问题。
搭配使用: 发现需要新建问题的工作时使用 bee-collect,整理剩余事项时使用 badger-triage
清理
CIRCLE → SPOT → DESCEND → CLEAN → REPORT
↓ ↓ ↓ ↓ ↓
Survey Identify Verify Close/ Summary
Board Stale in Code Consol. & Stats
阶段 1:盘旋
秃鹫借助上升的热气流升空,耐心地用锐利的双眼俯瞰下方的地貌……
全面查看问题看板:
收集所有未关闭的问题:
# Get all open issues with metadata
gh issue list --repo AutumnsGrove/Lattice --state open --limit 200 --json number,title,labels,createdAt,updatedAt,body
建立整体概览:
- 按时间分组(超过 90 天 = 可能已过时)
- 按标签分组(组件类别)
- 按标题中的关键词分组(相似工作模式)
- 标记评论中提到“已实现”“完成”“已解决”的问题
时间阈值:
| 时间 | 状态 |
|---|---|
| < 30 天 | 新近 |
| 30-90 天 | 逐渐过时 |
| 90-180 天 | 陈旧 |
| > 180 天 | 正在失去相关性 |
输出: 问题看板的完整概览,包括时间和模式分析
阶段 2:发现
锐利的目光捕捉到动静。草丛中躺着什么已经死去的东西……
找出适合清理的问题:
类别 1:可能已实现(已完成) 寻找工作可能已完成的迹象:
- 很早之前创建的问题,近期有相关提交
- 提及的功能现在已经存在的问题
- 可能已经修复的错误报告
- 与当前行为相符的增强请求
类别 2:陈旧/过时(正在失去相关性) 寻找内容已不再相关的迹象:
- 提及已弃用技术的问题
- 涉及已移除功能的问题
- 不再适用于当前架构的问题
- 已过时的验收标准
类别 3:零散(散落的骨头) 寻找合并机会:
- 涉及同一组件的多个问题
- 验收标准相互重叠
- 属于更大工作的一部分的问题
- 措辞略有不同的重复问题
候选列表格式:
## Candidates Spotted
### Likely Implemented
| # | Title | Age | Signal |
| ---- | -------------------- | ---- | ------------------------- |
| #234 | Add dark mode toggle | 120d | Feature exists in Foliage |
| #267 | Fix login redirect | 85d | Recent auth commits |
### Potentially Stale
| # | Title | Age | Signal |
| ---- | --------------------- | ---- | -------------- |
| #189 | Update webpack config | 200d | Now using Vite |
### Consolidation Candidates
| Issues | Theme | Recommendation |
| ---------------- | ------------------- | ------------------------- |
| #301, #305, #312 | Accessibility fixes | Combine into "A11y audit" |
输出: 已分类、可供验证的候选问题
第 3 阶段:俯冲
秃鹫收拢翅膀俯冲而下,仔细检查它从高处发现的目标……
在代码库中验证每个候选项:
针对“可能已实现”的候选项:
# Grove Find — verify implementation exists
gf --agent search "darkMode" # Does the feature exist in code?
gf --agent search "ThemeToggle" # Find the component
gf --agent func "toggleDarkMode" # Find the function
# Check git history for evidence
git log --oneline --all --grep="dark mode" -10
git log --oneline --all -- "src/lib/stores/theme*"
验证清单:
- 代码中存在核心功能
- 没有表明工作尚未完成的 TODO 注释
- 测试通过(如适用)
- 功能可在 UI 中使用(如适用)
验证结果:
| 结果 | 所需证据 | 操作 |
|---|---|---|
| 已全部完成 | 代码存在、测试通过、功能可用 | 添加详细评论后关闭 |
| 部分完成 | 存在部分代码,仍需完善 | 保持开启并更新描述 |
| 尚未开始 | 未找到证据 | 保持开启 |
| 已过时 | 功能已不再相关 | 说明原因后以“不会处理”关闭 |
针对“零散”候选项:
- 阅读所有相关 issue
- 确定统一主题
- 起草整合后的 issue 描述
- 列出将要关闭的 issue
输出: 已验证的候选项及记录在案的证据
第 4 阶段:清理
秃鹫吞食已死之物,让生态系统变得更健康……
执行清理:
用于批量清理的 Grove 工具:
# Single issue close
gw gh issue close --write NUMBER --comment "Verified complete — evidence in src/lib/..."
# Bulk operations — close multiple verified issues at once
gw gh issue batch --write --close 234,267,289 --comment "Vulture sweep: verified implemented"
关闭已实现的 issue(附详细评论):
gh issue close NUMBER --comment "$(cat <<'EOF'
🦅 **Vulture Sweep: Verified Complete**
This issue has been implemented and verified in the codebase:
**Evidence Found:**
- Feature implemented in `src/lib/stores/theme.ts`
- Dark mode toggle exists in `src/lib/components/ThemeToggle.svelte`
- Tests passing in `tests/theme.test.ts`
- Verified working in production UI
**Commits:**
- abc1234 feat(foliage): add dark mode support
- def5678 test(foliage): add theme toggle tests
Closing as complete. Thank you for the contribution!
EOF
)"
关闭已过时的 issue:
gh issue close NUMBER --reason "not planned" --comment "$(cat <<'EOF'
🦅 **Vulture Sweep: No Longer Applicable**
This issue is being closed as it no longer applies to the current codebase:
**Reason:**
- Grove migrated from Webpack to Vite in January 2026
- Webpack configuration no longer exists
- The underlying problem this addressed is obsolete
If similar issues arise with the current Vite setup, please open a new issue.
EOF
)"
创建整合后的 issue:
gh issue create --title "Consolidated: Accessibility improvements" --body "$(cat <<'EOF'
## Summary
This issue consolidates several related accessibility tasks into a single trackable effort.
## Consolidated From
- #301 — Add aria labels to navigation
- #305 — Fix focus ring visibility
- #312 — Improve screen reader announcements
## Acceptance Criteria
- [ ] All navigation elements have appropriate aria labels
- [ ] Focus rings are visible in all themes
- [ ] Screen reader announcements work for dynamic content
- [ ] WCAG AA compliance verified
## Context
These issues were identified during vulture sweep as fragments of a larger accessibility effort. Consolidating for clearer tracking.
EOF
)" --label "accessibility,enhancement"
# Close the original issues with reference
gh issue close 301 --comment "🦅 Consolidated into #NEW_NUMBER"
gh issue close 305 --comment "🦅 Consolidated into #NEW_NUMBER"
gh issue close 312 --comment "🦅 Consolidated into #NEW_NUMBER"
输出: 已关闭的 issue、已创建的整合 issue,以及已清理的积压任务
第 5 阶段:报告
秃鹫再次升空,盘旋一周,巡视更整洁的景象……
报告巡查结果:
🦅 VULTURE SWEEP COMPLETE
## Summary
| Action | Count |
| --------------------------------- | ----- |
| Issues Closed (Implemented) | 7 |
| Issues Closed (Obsolete) | 3 |
| Consolidations Created | 2 |
| Issues Kept (Verified Incomplete) | 5 |
## Issues Closed as Implemented
| # | Title | Evidence |
| ---- | -------------------- | ------------------------- |
| #234 | Add dark mode toggle | Feature in theme.ts |
| #267 | Fix login redirect | Verified in auth flow |
| #289 | Add loading states | Skeleton components exist |
| ... | ... | ... |
## Issues Closed as Obsolete
| # | Title | Reason |
| ---- | --------------------- | ------------------------ |
| #189 | Update webpack config | Migrated to Vite |
| #201 | Fix IE11 support | IE11 no longer supported |
| #215 | Update Node 14 deps | Now on Node 20 |
## Consolidations
| New Issue | Absorbed | Theme |
| --------- | ---------------- | ----------------- |
| #534 | #301, #305, #312 | Accessibility |
| #535 | #298, #303 | Mobile navigation |
## Remaining Cleanup Opportunities
These issues may need attention but require human decision:
- #245 "Improve performance" — too vague to verify
- #278 "Consider alternative auth" — needs design decision
- #291 "Maybe add feature X" — unclear if still wanted
## Backlog Health
| Metric | Before | After |
| ----------------- | ------- | ------- |
| Open Issues | 87 | 72 |
| Average Age | 95 days | 67 days |
| Issues > 180 days | 12 | 3 |
_The carrion is cleared. The forest breathes easier._
秃鹫规则
耐心
先盘旋观察。切勿未经巡视就俯冲。全局情况至关重要。
验证
关闭前务必验证。 秃鹫的声誉取决于准确性。没有代码库证据证明 issue 确实已完成或已过时,绝不关闭。
尊重
关闭时添加详细评论。最初的报告者应该知道 issue 为何关闭,以及发现了什么。
整合优先于分散
发现零散的相关 issue 时,应将它们整合起来。一个清晰的 issue 胜过五个相互重叠的 issue。
沟通
使用巡查相关的比喻:
- “正在巡查 issue 看板……”(巡视)
- “发现候选项……”(识别)
- “俯冲验证……”(检查代码库)
- “正在清理……”(关闭/整合)
- “升空汇报……”(总结)
反面模式
秃鹫绝不会:
- 未经代码库验证就关闭 issue
- 因为某项内容年代久远就认定它已完成
- 处理标记为“进行中”或已分配的 issue
- 删除 issue(只会在给出明确理由后关闭)
- 关闭需要人工决策的 issue(应改为标记待审核)
- 猜测实现状态
- 跳过详细的关闭评论
清理示例
用户:“/vulture-sweep — 待办事项越来越陈旧了”
秃鹫流程:
-
🦅 盘旋 — “正在巡查看板……发现 87 个未处理问题。其中 12 个已超过 180 天,23 个在 90 到 180 天之间。认证、UI 和基础设施问题群中开始浮现规律。”
-
🦅 发现 — “发现 15 个候选问题:
- 7 个可能已实现(深色模式、认证修复、加载状态)
- 3 个可能已过时(webpack、IE11、Node 14)
- 5 个可合并的机会(无障碍功能问题群、移动端导航)”
-
🦅 俯冲 — “正在俯冲核实……
- #234 深色模式:已验证(在 theme.ts 中找到,切换组件已存在)
- #267 登录重定向:已验证(认证流程已处理)
- #245“提升性能”:无法验证(描述过于模糊,保持未处理)”
-
🦅 清理 — “正在关闭 10 个已验证的问题并附上详细评论。创建 2 个合并问题。标记 5 个问题供人工审核。”
-
🦅 报告 — “清理完成:已解决 15 个问题,创建 2 个合并问题,待办事项从 87 个减少到 72 个。平均问题年龄从 95 天降至 67 天。”
快速决策指南
| 情况 | 处理方式 |
|---|---|
| 问题显然已完成 | 在代码中核实,提供证据后关闭 |
| 问题部分完成 | 保持未处理,根据发现更新描述 |
| 问题已过时 | 说明原因后以“暂不计划”关闭 |
| 存在多个相关问题 | 合并为一个,关闭原问题并附上引用 |
| 问题模糊不清 | 保持未处理,标记供人工审核 |
| 问题已指派负责人 | 跳过(有人正在处理) |
| 最近提出的问题(< 30 天) | 跳过,除非显然已实现 |
与其他技能集成
清理前:
bloodhound-scout— 如果需要先了解代码库
清理期间:
bee-collect— 如果发现需要创建问题的新工作badger-triage— 如果剩余问题需要整理
清理后:
owl-archive— 记录发现的规律gathering-planning— 如果清理发现有规划需求
大自然的清理队伍。耐心、细致、不可或缺。 🦅