mcpField
V
vulture-sweep

vulture-sweep

github.com/autumnsgrove開発661 回インストール1 週間前に更新
リポジトリ

vulture-sweep について

vulture-sweepは、GitHubの未解決イシューを確認し、整理するスキルです。期間や内容ごとに候補を分類し、コードベースで完了・陳腐化を検証してから、クローズや統合を行います。

主な機能

  1. 01未解決イシューを期間や話題で調査
  2. 02完了・陳腐化・重複したイシューを特定
  3. 03コードとテストで候補を検証
  4. 04根拠を添えて検証済みイシューをクローズ
  5. 05関連イシューを統合して結果を報告

活用シーン

  1. 01実装済みで未クローズのイシューを発見
  2. 02古くなったバックログ項目を確認
  3. 03内容が重複するイシューを統合
  4. 04定期的なイシューボードの整理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/autumnsgrove/lattice --skill vulture-sweep

インストール後、Claude Code で/vulture-sweepを入力して読み込まれたか確認します。

詳細

ハゲワシの一掃 🦅

ハゲワシは、ほかの者が見落とすものを見つめながら、辛抱強く上空を旋回します。はるか上空から眺めると、パターンが浮かび上がります。すでに解決済みなのに閉じられていないイシュー、まとまりのあるタスクにまとめるべき断片、関連性が失われるほど古くなった作業です。ハゲワシは判断を下しません。ほかの者が避ける必要な役割を果たす、自然界の清掃係です。ハゲワシは舞い降りるとき、食べる前に確かめます。そして再び舞い上がるとき、バックログは健全になっています。

起動するタイミング

  • イシューボードに、時間とともに不要なものが溜まってきた
  • ユーザーが「自分のイシューを整理して」や「バックログを一掃して」と言う
  • ユーザーが /vulture-sweep を呼び出す、またはハゲワシ/整理に言及する
  • 完了しているのに閉じられていないイシューがあると思われる
  • まとめるべき、散在する関連イシューが見つかった
  • 四半期または月次のバックログ整理
  • 大規模リリース後(実装済みなのに閉じられていないイシューを見つける)

重要: この動物は、コードベースの検証なしにイシューを閉じることは決してありません。完了が証明されたものだけを閉じます。

併用対象: 新しいイシューが必要な作業を見つけた場合は 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" |

出力: 検証できる状態に分類された候補


Phase 3: DESCEND

ハゲワシは翼をたたんで急降下し、上空から見つけたものを詳しく調べます……

コードベースで各候補を検証します:

「実装済みの可能性が高い」候補の場合:

# 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 から機能にアクセスできる

検証結果:

結果必要な根拠対応
完了コードが存在し、テストが成功し、機能が動作する詳細なコメントを添えてクローズする
一部完了コードの一部が存在し、さらに対応が必要オープンのままにし、説明を更新する
未着手根拠が見つからないオープンのままにする
不要になった機能がもはや関連性を持たない説明を添えて「対応しない」としてクローズする

「断片化」した候補の場合:

  • 関連するイシューをすべて読む
  • 共通するテーマを特定する
  • 統合したイシューの説明を作成する
  • クローズするイシューを列挙する

出力: 根拠を記録した検証済みの候補


Phase 4: CLEAN

ハゲワシは死んだものを食べ、エコシステムをより健全な状態にします……

クリーンアップを実行します:

一括クリーンアップ用の Grove Tools:

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

実装済みイシューをクローズする(詳細なコメントを添える):

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

不要になったイシューをクローズする:

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

統合したイシューを作成する:

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"

出力: イシューをクローズし、統合したイシューを作成し、バックログを整理する


Phase 5: REPORT

ハゲワシは再び舞い上がり、きれいになった景色を見渡すためにもう一度旋回します……

一掃の結果を報告します:

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

ハゲワシのルール

忍耐

まずは旋回して状況を見渡します。調査せずに急降下してはいけません。全体像が重要です。

検証

クローズする前に必ず検証してください。 ハゲワシの評判は正確さにかかっています。イシューが本当に完了している、または不要になっていることを示すコードベース上の根拠なしに、イシューをクローズしてはいけません。

敬意

詳細なコメントを添えてクローズします。元の報告者には、_なぜ_イシューをクローズするのか、_何が_見つかったのかを知る権利があります。

断片化より統合

関連するイシューが散在している場合は、統合します。重複する5つのイシューより、明確な1つのイシューが優れています。

コミュニケーション

一掃を表す比喩を使います:

  • 「ボードを旋回中……」(状況を調査)
  • 「候補を発見……」(特定)
  • 「急降下して検証……」(コードベースを確認)
  • 「クリーンアップ中……」(クローズ/統合)
  • 「舞い上がって報告……」(要約)

アンチパターン

ハゲワシは次のことをしません:

  • コードベースで検証せずにイシューをクローズする
  • 古いという理由だけで対応済みだと判断する
  • 「対応中」とマークされたイシューや、担当者が割り当てられたイシューに手を出す
  • イシューを削除する(明確な理由を添えてクローズするのみ)
  • 人間の判断が必要なイシューをクローズする(代わりにレビュー対象としてマークする)
  • 実装状況を推測する
  • 詳細なクローズコメントを省略する

スイープの例

ユーザー:「/vulture-sweep — バックログが古びてきました」

Vulture の流れ:

  1. 🦅 CIRCLE — 「ボードを見回しています……オープンな issue が 87 件見つかりました。180 日以上経過したものが 12 件、90〜180 日経過したものが 23 件あります。認証、UI、インフラのクラスターにパターンが見えてきました。」

  2. 🦅 SPOT — 「候補を 15 件見つけました:

    • おそらく実装済みが 7 件(ダークモード、認証の修正、読み込み状態)
    • 古くなっている可能性があるものが 3 件(webpack、IE11、Node 14)
    • 分割・統合の候補が 5 件(a11y クラスター、モバイルナビゲーション)」
  3. 🦅 DESCEND — 「検証のために詳しく調べています……

    • #234 ダークモード:検証済み(theme.ts にあり、切り替えコンポーネントも存在)
    • #267 ログイン後のリダイレクト:検証済み(認証フローで処理されています)
    • #245「パフォーマンスの改善」:検証できません(曖昧すぎるため、オープンのままにします)」
  4. 🦅 CLEAN — 「検証済みの issue 10 件を、詳細なコメントを添えてクローズします。統合 issue を 2 件作成します。人によるレビューが必要な 5 件に印を付けます。」

  5. 🦅 REPORT — 「スイープ完了:issue 15 件を解決し、統合 issue を 2 件作成しました。バックログは 87 件から 72 件に減りました。平均経過日数は 95 日から 67 日に改善しました。」


判断の早見表

状況対応
issue が明らかに完了しているコードで検証し、根拠を添えてクローズする
issue が一部完了しているオープンのままにし、調査結果で説明を更新する
issue が古くなっている説明を添えて「対応予定なし」としてクローズする
関連する issue が複数ある1 件に統合し、元の issue は参照先を記載してクローズする
issue が曖昧/不明確オープンのままにし、人によるレビューが必要であることを示す
issue に担当者がいるスキップする(誰かが対応中です)
最近の issue(30 日未満)明らかに実装済みでない限りスキップする

他のスキルとの連携

スイープの前:

  • bloodhound-scout — 先にコードベースを理解する必要がある場合

スイープ中:

  • bee-collect — 新たに issue 化すべき作業が見つかった場合
  • badger-triage — 残った issue の整理が必要な場合

スイープの後:

  • owl-archive — 発見したパターンを記録する場合
  • gathering-planning — クリーンアップによって計画が必要だと分かった場合

自然界のクリーンアップ隊。忍耐強く、徹底的で、必要不可欠です。 🦅

コメント