From cruft-code-sweep
Detects dead code, fallbacks, deprecated patterns in repos using scanner, git historian, and verifier agents. Verifies safe removal for cleanup, tech debt visualization, pre-release audits.
npx claudepluginhub sean-sunagaku/claude-code-plugin --plugin cruft-code-sweepThis skill uses the workspace's default tool permissions.
3つの専門エージェントが協調して、不要コードの **発見** → **履歴調査** → **安全性検証** を行う。
Diagnoses repo rot prioritizing dead code (HIGH/MEDIUM/LOW confidence), god files, hotspots, hardcoded paths, stale TODOs, lopsided imports. Language-agnostic pure diagnosis.
Detects dead code, unused exports, orphaned files, circular dependencies, unused packages, stale TODOs, and hygiene issues across 11 categories. Use scan, safe, aggressive modes on full codebase or paths.
Safely cleans repositories of dead code, build artifacts, unused dependencies, outdated docs, stale tests, and sprint archives using workflows with validation, backups, and reporting templates.
Share bugs, ideas, or general feedback.
3つの専門エージェントが協調して、不要コードの 発見 → 履歴調査 → 安全性検証 を行う。
| Agent | 役割 | 視点 |
|---|---|---|
| cruft-scanner | コードベースを自律探索し、cruft 候補を発見する | 「これ不要では?」 |
| codebase-historian | git 履歴から各候補の時間軸の文脈を調査する | 「いつ・なぜ書かれた?今も必要?」 |
| safety-verifier | 各候補が本当に削除可能か検証する。デグレ防止 | 「消して本当に大丈夫?」 |
scanner: Phase 1 (プロジェクト理解) → Phase 2 (パターンスキャン) → Phase 3 (自律探索)
↓ 候補リストを historian に送信
historian: 各候補の git blame/log を調査し、時間軸の文脈を付与
↓ 履歴付き候補リストを verifier に送信
verifier: 各候補について依存関係・テスト・副作用を検証(履歴情報も加味)
↓ 検証結果を scanner に返信
scanner: 検証結果を統合してレポート生成 → Phase 4 (レポート出力)
TaskCreate で4つのタスクを作成:
3つのエージェントを並列起動する:
Task(subagent_type="general-purpose", name="cruft-scanner", mode="bypassPermissions", run_in_background=true)
Task(subagent_type="general-purpose", name="codebase-historian", mode="bypassPermissions", run_in_background=true)
Task(subagent_type="general-purpose", name="safety-verifier", mode="bypassPermissions", run_in_background=true)
scanner には以下の内容をプロンプトとして渡す:
あなたは cruft-scanner です。コードベースの不要コードを自律的に探索してください。
まずプロジェクト全体像を掴む:
Glob: **/package.json, **/tsconfig.json, **/app.config.*, **/eas.jsonpackage.json を Read(dependencies, scripts)CLAUDE.md / README.md があれば Readdependencies から自動判定:
react-native / expo → RN パターン有効化firebase → Firebase パターン有効化express, fastify 等 → Node.js パターン有効化{SKILL_DIR}/references/patterns.md の P1〜P13 を Grep で検索。
Phase 1 で判定したフレームワーク固有パターン({SKILL_DIR}/references/framework-patterns.md)も含める。
優先順位:
各ヒットに対して:
定型パターンでは拾えない cruft を自分で探す:
未使用 export: export function|const|class を列挙 → 参照 0 件を特定
設定の重複/矛盾: config/, constants/ を Read → 同じ値の複数ハードコード
到達不能コード: 早期 return 後のコード、常に false の分岐
過剰防御コード: 型で保証済みの null チェック、二重バリデーション
臭い検知: ファイル名/関数名に old, legacy, temp, backup, workaround, compat
全候補を以下の形式で整理し、codebase-historian に SendMessage で送る:
## 候補 N: [タイトル]
- ファイル: path/to/file.ts:行番号
- パターン: P1 / 探索で発見
- severity: HIGH / MEDIUM / LOW
- 内容: [1行説明]
- コードスニペット: [3〜5行]
- 呼び出し元: N 件
- 削除した場合の想定影響: [推測]
historian には以下の内容をプロンプトとして渡す:
あなたは codebase-historian です。cruft-scanner が発見した候補について、git 履歴から時間軸の文脈を調査してください。
scanner から候補リストが SendMessage で届くまで待機してください(TaskList を定期チェック)。
1. git blame で最終更新を特定
git blame -L 行番号,+5 ファイルパス で、該当コードの最終変更者・日時・コミットハッシュを取得2. コミットメッセージの文脈分析
git log --oneline -5 -- ファイルパス で直近の変更履歴を確認workaround, temporary, hack, quick fix, revert → cruft の裏付けfix #123, closes #456 → 関連 issue/PR が close 済みか確認の手がかりmigration, upgrade, compat → 互換性コードの痕跡3. ファイルの変更頻度
git log --oneline -- ファイルパス | wc -l でファイル全体の変更回数を確認4. 周辺コードとの関係
git show --stat コミットハッシュ で確認5. 削除・復活の履歴
git log -S "シンボル名" --oneline で、候補のシンボルが過去に削除→復活していないか確認各候補に時間軸の文脈を付与し、safety-verifier に SendMessage で送る:
## 候補 N: [タイトル](scanner の元情報をそのまま含める)
### git 履歴調査
- 最終更新: YYYY-MM-DD(N ヶ月前)by [author]
- staleness_score: HIGH / MEDIUM / LOW
- コミットメッセージ: "[メッセージ抜粋]"
- 関連キーワード: workaround / temporary / fix #N / なし
- ファイル変更回数: N 回
- 候補行の変更回数: N 回(初回から変更なし / N回変更あり)
- 削除・復活: なし / あり(YYYY-MM-DD に削除 → YYYY-MM-DD に復活)
- 同一コミットの他ファイル: [ファイル一覧(あれば)]
- historian の所見: [1-2文の分析。例: "2年前の workaround コミットで追加され、以降変更なし。一時対応が残存した可能性が高い"]
verifier には以下の内容をプロンプトとして渡す:
あなたは safety-verifier です。cruft-scanner が発見した候補について、codebase-historian の git 履歴調査を加味しつつ「削除してデグレしないか」を検証してください。
historian から履歴付き候補リストが SendMessage で届くまで待機してください(TaskList を定期チェック)。
1. 依存グラフの追跡
2. テストカバレッジの確認
3. ランタイム副作用の分析
4. 型への影響
5. historian の履歴情報を加味した判定
historian から提供された staleness_score やコミットメッセージの文脈を判定に活用する:
workaround / temporary → cruft の裏付け6. 判定
各候補に以下の判定を付ける:
| 判定 | 意味 |
|---|---|
| SAFE | 削除しても問題なし。参照 0 件、副作用なし |
| LIKELY_SAFE | ほぼ安全だが、確認推奨。間接参照の可能性あり |
| RISKY | 削除するとデグレの可能性あり。具体的なリスクを明記 |
| KEEP | 削除不可。正当な理由がある(明記する) |
検証結果を scanner に SendMessage で返す:
## 候補 N: [タイトル]
- 判定: SAFE / LIKELY_SAFE / RISKY / KEEP
- 参照数(実数): N 件(内訳: 直接 N, re-export N, テスト N)
- テストカバレッジ: あり / なし / 間接的
- 副作用: なし / あり(具体的に)
- 型への影響: なし / あり(具体的に)
- デグレリスク: [具体的なシナリオ。なければ「なし」]
- 推奨アクション: [削除する / コメント改善 / リファクタ / 現状維持]
scanner が verifier の検証結果を受け取ったら、統合レポートを生成する。
出力先: ./cruft-code-sweep-report.md
フォーマット: references/report-template.md に従う。
レポートには verifier の判定を含める:
| 項目 | 内容 |
|---|---|
| 候補ごとの severity | scanner の判定 |
| 安全性判定 | verifier の SAFE/LIKELY_SAFE/RISKY/KEEP |
| デグレリスク | verifier が特定した具体的リスク |
| 推奨アクション | 両者の分析を統合した最終推奨 |
レポート生成後: