AgentSkillsCN

vulture-sweep

高悬于问题看板之上,环顾四周,一眼便能识破哪些任务已“完成却未关闭”、“正在衰败”(陈旧过时),又有哪些亟需整合与优化。秃鹫缓缓俯冲而下,清理残骸,让待办事项列表重归健康有序。当你的问题看板亟需“大扫除”——清理已完成的工作,整合零散的碎片,去除那些日渐腐朽的“垃圾”时,这一方法将为你带来显著成效。

SKILL.md
--- frontmatter
name: vulture-sweep
description: Circle high above the issue board, spotting what's dead (implemented but not closed), what's decaying (stale/outdated), and what needs consolidation. The vulture descends, cleans up the carcass, and leaves the backlog healthy. Use when your issue board needs hygiene—closing completed work, consolidating fragments, and removing decay.

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-sweep or 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

code
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:

bash
# 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:

AgeStatus
< 30 daysFresh
30-90 daysAging
90-180 daysStale
> 180 daysDecaying

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:

markdown
## 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:

bash
# 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:

OutcomeEvidence RequiredAction
Fully DoneCode exists, tests pass, feature worksClose with detailed comment
Partially DoneSome code exists, more neededKeep open, update description
Not StartedNo evidence foundKeep open
ObsoleteFeature no longer relevantClose 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:

bash
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:

bash
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:

bash
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:

markdown
🦅 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:

  1. 🦅 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."

  2. 🦅 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)"
  3. 🦅 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)"
  4. 🦅 CLEAN — "Closing 10 verified issues with detailed comments. Creating 2 consolidations. Marking 5 for human review."

  5. 🦅 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

SituationApproach
Issue clearly doneVerify in code, close with evidence
Issue partially doneKeep open, update description with findings
Issue obsoleteClose as "not planned" with explanation
Multiple related issuesConsolidate into one, close originals with reference
Issue vague/unclearKeep open, flag for human review
Issue has assigneeSkip (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 issues
  • badger-triage — If remaining issues need organizing

After Sweeping:

  • owl-archive — To document any patterns discovered
  • gathering-planning — If cleanup revealed planning needs

Nature's cleanup crew. Patient, thorough, necessary. 🦅