Migration Sweep
移行コード(TODO(migration) )の寿命チェックを機械化するスキル。 期限切れ・情報不足の移行コードを検出し、レポート形式で出力する。
トリガー
-
ユーザーが /migration-sweep を実行
-
"移行コード", "migration TODO", "期限切れTODO" に言及
実行手順
- TODO(migration) の収集
repo全体から TODO(migration) を検索
grep -rn "TODO(migration)" --include=".ts" --include=".tsx" --include="*.py" src/ tests/ e2e/ python_backend/ 2>/dev/null || echo "該当なし"
- メタデータの解析
各 TODO(migration) について以下を抽出:
フィールド パターン 必須
Issue ID [ISSUE-XXX] or [#XXX]
YES
期限 [expires=YYYY-MM-DD]
YES
削除条件 自由記述(TODOコメントの次行以降) YES
- 判定ルール
状態 条件 重要度
EXPIRED expires が今日以前 P0 (即対応)
MISSING_META Issue ID / expires / 削除条件のいずれかが欠落 P0 (情報補完)
WARNING expires まで30日以内 P1 (計画)
OK expires まで30日超 情報のみ
- レポート出力
Migration Sweep Report (YYYY-MM-DD)
P0: 即対応 (X件)
| ファイル:行 | 状態 | 期限 | Issue | 内容 |
|---|---|---|---|---|
src/foo.ts:42 | EXPIRED | 2026-01-15 | #123 | Remove old admin check |
src/bar.ts:88 | MISSING_META | - | - | TODO(migration) but no metadata |
P1: 計画 (X件)
| ファイル:行 | 期限 | 残日数 | Issue | 内容 |
|---|---|---|---|---|
src/baz.ts:15 | 2026-03-15 | 21日 | #456 | Deprecate legacy API |
OK (X件)
(省略可能)
サマリー
- 総数: X件
- P0 (即対応): X件
- P1 (計画): X件
- OK: X件
- 追加アクション提案
-
EXPIRED: 「このコードを削除してよいか?」と確認し、削除を提案
-
MISSING_META: テンプレート形式でメタデータ補完を提案 // TODO(migration)[ISSUE-XXX][expires=YYYY-MM-DD]: // <削除条件を記述>
-
WARNING: Issue のステータス確認を促す
テンプレート(新規移行コード用)
// TODO(migration)[ISSUE-1234][expires=2026-05-31]: // Remove after role-based admin check is fully deployed // and logs show 0 hits for 14 days.
AI Assistant Instructions
このスキルが有効化された時:
-
grep で TODO(migration) を全件収集: src/ , tests/ , e2e/ , python_backend/ を対象
-
メタデータ解析: Issue ID, expires, 削除条件を抽出
-
判定ルールに従い分類: EXPIRED / MISSING_META / WARNING / OK
-
レポート出力: 上記フォーマットに厳密に従う
-
追加アクション提案: EXPIRED には削除提案、MISSING_META にはテンプレート提供
Always:
-
全件レポートする(フィルタしない)
-
P0 は件数ゼロでも「P0: 0件」と明記する
-
EXPIRED の削除提案は「コードを読んで安全性を確認してから」の条件付き
Never:
-
自動削除しない(レポートのみ、修正はユーザー確認後)
-
TODO(migration) 以外のTODO(TODO(fix), TODO(refactor) 等)をスコープに含めない
関連ルール
-
.claude/rules/dead-code-cleanup.md — 移行コード管理セクション
-
CLAUDE.md — push前Done条件(type-checkが最終防衛線)