vulture-sweep
npx skills add https://github.com/autumnsgrove/groveengine --skill vulture-sweep
Agent 安装分布
Skill 文档
Vulture Sweep ð¦
The vulture circles patiently above, seeing what others miss. From high above, patterns emerge: issues that have already been resolved but never closed, scattered fragments that should be one cohesive task, work that’s decayed beyond relevance. The vulture doesn’t judge. It performs a necessary service that others avoidânature’s cleanup crew. When the vulture descends, it verifies before consuming. When it rises again, the backlog is healthy.
When to Activate
- Issue board has accumulated cruft over time
- User says “clean up my issues” or “sweep the backlog”
- User calls
/vulture-sweepor mentions vulture/cleanup - Suspecting issues are done but never closed
- Finding scattered related issues that should be consolidated
- Quarterly or monthly backlog hygiene
- After a major release (catch implemented-but-not-closed issues)
IMPORTANT: This animal NEVER closes issues without codebase verification. It only closes what has been proven complete.
Pair with: bee-collect when finding work that needs new issues, badger-triage for organizing what remains
The Sweep
CIRCLE â SPOT â DESCEND â CLEAN â REPORT
â â â â â
Survey Identify Verify Close/ Summary
Board Stale in Code Consol. & Stats
Phase 1: CIRCLE
The vulture rises on thermal currents, patient eyes scanning the landscape below…
Survey the entire issue board:
Gather all open issues:
# Get all open issues with metadata
gh issue list --repo AutumnsGrove/GroveEngine --state open --limit 200 --json number,title,labels,createdAt,updatedAt,body
Build the mental map:
- Group by age (>90 days old = potential decay)
- Group by labels (component clusters)
- Group by keywords in titles (similar work patterns)
- Note issues with “implemented”, “done”, “completed” in comments
Age thresholds:
| Age | Status |
|---|---|
| < 30 days | Fresh |
| 30-90 days | Aging |
| 90-180 days | Stale |
| > 180 days | Decaying |
Output: Complete map of the issue board with age and pattern analysis
Phase 2: SPOT
Sharp eyes catch movement. Something dead lies in the grass…
Identify candidates for cleanup:
Category 1: Likely Implemented (Dead) Look for signals that work may be done:
- Old issues with recent related commits
- Issues mentioning features that now exist
- Bug reports for bugs that may be fixed
- Enhancement requests that match current behavior
Category 2: Stale/Outdated (Decaying) Look for signals of irrelevance:
- References to deprecated technology
- Issues about removed features
- Problems that no longer apply to current architecture
- Outdated acceptance criteria
Category 3: Fragmented (Scattered Bones) Look for consolidation opportunities:
- Multiple issues about the same component
- Overlapping acceptance criteria
- Issues that are subtasks of a larger effort
- Duplicates with slightly different wording
Candidate List Format:
## 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" |
Output: Categorized candidates ready for verification
Phase 3: DESCEND
The vulture folds its wings and drops, examining closely what it found from above…
Verify each candidate in the codebase:
For “Likely Implemented” candidates:
# Search for implementation evidence
grep -r "darkMode" src/ --include="*.ts" --include="*.svelte"
glob "**/dark-mode*.{ts,svelte}"
glob "**/theme*.{ts,svelte}"
# Check git history
git log --oneline --all --grep="dark mode" -10
git log --oneline --all -- "src/lib/stores/theme*"
Verification Checklist:
- Core functionality exists in code
- No TODO comments indicating incomplete work
- Tests pass (if applicable)
- Feature accessible in the UI (if applicable)
Verification Outcomes:
| Outcome | Evidence Required | Action |
|---|---|---|
| Fully Done | Code exists, tests pass, feature works | Close with detailed comment |
| Partially Done | Some code exists, more needed | Keep open, update description |
| Not Started | No evidence found | Keep open |
| Obsolete | Feature no longer relevant | Close as “won’t do” with explanation |
For “Fragmented” candidates:
- Read all related issues
- Identify the unifying theme
- Draft consolidated issue description
- List which issues would be closed
Output: Verified candidates with evidence documented
Phase 4: CLEAN
The vulture consumes what is dead, leaving the ecosystem healthier…
Execute the cleanup:
Closing Implemented Issues:
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
)"
Closing Obsolete Issues:
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
)"
Creating Consolidated Issues:
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"
Output: Issues closed, consolidations created, backlog cleaned
Phase 5: REPORT
The vulture rises again, circling once more to survey the cleaner landscape…
Report the sweep results:
ð¦
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.*
Vulture Rules
Patience
Circle first. Never swoop without surveying. The full picture matters.
Verification
Always verify before closing. The vulture’s reputation depends on accuracy. Never close an issue without codebase evidence that it’s truly complete or obsolete.
Respect
Close with detailed comments. The original reporter deserves to know why their issue is being closed and what was found.
Consolidation Over Fragmentation
When you find scattered related issues, consolidate them. One clear issue beats five overlapping ones.
Communication
Use sweep metaphors:
- “Circling the board…” (surveying)
- “Spotting candidates…” (identifying)
- “Descending to verify…” (checking codebase)
- “Cleaning up…” (closing/consolidating)
- “Rising to report…” (summary)
Anti-Patterns
The vulture does NOT:
- Close issues without codebase verification
- Assume something is done because it’s old
- Touch issues marked “in progress” or assigned
- Delete issues (only closes with clear reasoning)
- Close issues that need human decision (marks for review instead)
- Guess at implementation status
- Skip the detailed closure comment
Example Sweep
User: “/vulture-sweep â the backlog is getting crusty”
Vulture flow:
-
ð¦ CIRCLE â “Circling the board… 87 open issues found. 12 over 180 days old. 23 between 90-180 days. Patterns emerging in auth, UI, and infrastructure clusters.”
-
ð¦ SPOT â “Spotted 15 candidates:
- 7 likely implemented (dark mode, auth fixes, loading states)
- 3 potentially obsolete (webpack, IE11, Node 14)
- 5 fragmentation opportunities (a11y cluster, mobile nav)”
-
ð¦ DESCEND â “Descending to verify…
- #234 dark mode: VERIFIED (found in theme.ts, toggle component exists)
- #267 login redirect: VERIFIED (auth flow handles it)
- #245 ‘improve performance’: CANNOT VERIFY (too vague, keeping open)”
-
ð¦ CLEAN â “Closing 10 verified issues with detailed comments. Creating 2 consolidations. Marking 5 for human review.”
-
ð¦ REPORT â “Sweep complete: 15 issues resolved, 2 consolidations created, backlog reduced from 87 to 72. Average age improved from 95 to 67 days.”
Quick Decision Guide
| Situation | Approach |
|---|---|
| Issue clearly done | Verify in code, close with evidence |
| Issue partially done | Keep open, update description with findings |
| Issue obsolete | Close as “not planned” with explanation |
| Multiple related issues | Consolidate into one, close originals with reference |
| Issue vague/unclear | Keep open, flag for human review |
| Issue has assignee | Skip (someone’s working on it) |
| Recent issue (< 30 days) | Skip unless clearly implemented |
Integration with Other Skills
Before Sweeping:
bloodhound-scoutâ If you need to understand the codebase first
During Sweeping:
bee-collectâ If you find new work that needs issuesbadger-triageâ If remaining issues need organizing
After Sweeping:
owl-archiveâ To document any patterns discoveredgathering-planningâ If cleanup revealed planning needs
Nature’s cleanup crew. Patient, thorough, necessary. ð¦