vulture-sweep

📁 autumnsgrove/groveengine 📅 8 days ago
1
总安装量
1
周安装量
#44006
全站排名
安装命令
npx skills add https://github.com/autumnsgrove/groveengine --skill vulture-sweep

Agent 安装分布

replit 1
opencode 1
codex 1
claude-code 1
gemini-cli 1

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

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:

  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

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 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. ðŸ¦