| name | repo-audit |
| description | AI に色々作業させていると溜まりがちな「残骸」をリポジトリ全体から検出するスキル。
過剰な防御・半端な実装、ドキュメントの陳腐化、スキル記述と実装の乖離、意味のない後方互換維持 —
この 4 カテゴリを `git ls-files` 基点で走査し、検出結果をユーザーに確認させた上で
1 件ずつ `issue` スキルに委譲して GitHub issue を起票する。
「AI の残骸チェック」「リポジトリの健康診断」「ドキュメントと実装ずれてへん?」
「棚卸しして」「お掃除したい」「AI くさい書き方残ってない?」
「deprecated の掃除」「後方互換残ってない?」「/repo-audit」で発動。
自然文でも積極的に発動すること。特に「このリポジトリ全体を見て」「定期点検」
「リポジトリに溜まってるゴミ」のような広い言い回しでもこのスキルを使う。
注意: 自動修正はしない。検出と issue 起票のみ。差分ベースのレビューは built-in の `/review`、
脆弱性の深掘りは built-in の `/security-review`(手動実行)の責務。
|
repo-audit — リポジトリ全体の AI 残骸スキャン
Overview
AI にタスクを継続的に任せていると、個別の PR レビューでは見落としがちな「残骸」がリポジトリに溜まる。repo-audit はリポジトリ全体を走査して 4 カテゴリの残骸を検出し、ユーザーに選別させた上で issue スキル経由で 1 件ずつ GitHub issue として記録する。
修正は行わない。検出と起票のみ。
When to Use
- AI が書いたコードや設定が積み重なったタイミングでの定期点検
- 「AI の残骸チェックして」「ドキュメントと実装ずれてへん?」「お掃除したい」など自然文での依頼
/repo-audit コマンドを実行したとき
- built-in の
/review が差分ベースで扱えない、リポジトリ全体に散らばった問題を洗い出したいとき
deprecated コメントや旧名エイリアスが溜まっていないかを確認したいとき
検出カテゴリ(概要)
| # | カテゴリ | 主な検出対象 |
|---|
| 1 | 過剰な防御 / 抽象化 / 半端な実装 | 意図不明なデバッグ出力、到達しないコメント、空の防御、未完成実装、1 箇所しか呼ばれないラッパー |
| 2 | ドキュメントの陳腐化 | README / CLAUDE.md / 各 SKILL.md が参照する実態(コマンド・パス・スキル名)とズレ |
| 3 | 実装とスキルの乖離 | SKILL.md で使う外部コマンド / ファイルパス / 他スキル参照が実在しない |
| 4 | 意味のない後方互換維持 | 削除済み機能への移行告知、未使用エイリアス、到達不能な互換分岐、廃止フラグ |
具体的な検出キーワード・前後確認ポイント・誤検出除外ルールは references/detection-patterns.md を参照(走査を始める前に必ず Read する)。
重大度の共通目安
- high: 参照先が完全に存在しない / 分岐が到達不能
- medium: 存在はするが実質呼び出し 0 / 引数が旧式
- low: コメントやドキュメント記述だけ残っている
実行フロー
Phase 1: 対象の列挙
git ls-files
gh repo view --json nameWithOwner
gh label list --json name
Phase 2: カテゴリごとに走査
⚠ 自スキル (config/.claude/skills/repo-audit/) および references/detection-patterns.md は全カテゴリで検出対象から除外する(詳細は Rules 参照)。
references/detection-patterns.md を Read でロードし、カテゴリごとに:
- Grep で検出の目印をヒットさせる
- Read で前後文脈を確認(Grep ヒットだけで断定しない)
- 必要に応じて
command -v / ls / git grep -n / git log -S で実体・呼び出し・履歴を確認
- 判定(残骸 / 意図的 / 判断保留)
Phase 3: 検出結果の一覧提示
## 検出結果 (合計 N 件)
| # | カテゴリ | 場所 | 問題 | 根拠 |
|---|---------|------|------|------|
| 1 | 過剰防御 | src/foo.ts:42 | 空の catch | 例外を握りつぶしている |
| 2 | ドキュ陳腐化 | README.md | `scripts/build.sh` が存在しない | 参照先ファイルが無い |
| 3 | スキル乖離 | config/.claude/skills/some-skill/SKILL.md | 参照する CLI が PATH に存在しない | command -v で確認 |
| 4 | 後方互換残骸 | config/.zshrc:120 | 旧 alias `old-cmd` が誰からも呼ばれていない | git grep で参照ゼロ・履歴上も未使用 |
件数が多い場合はカテゴリと重大度でソートする。
Phase 4: 起票対象の選別
AskUserQuestion を multiSelect で使い、ユーザーに起票したい項目を選ばせる。件数が 10 件以内なら個別選択、それ以上ならカテゴリ単位の選択を提示する。
Phase 5: 1 件ずつ起票
選ばれた各項目について、Skill ツールで issue スキルを呼び出し、以下の情報を渡す:
- カテゴリ名(タイトル冒頭の prefix に使う想定: 例
[repo-audit] 空の catch が残っている)
- 場所(ファイルパス:行番号)
- 問題の概要と根拠
- 関連するコード抜粋(数行)
issue 本文の最終的な組み立てと gh issue create の実行は issue スキルが担当する。repo-audit は種となる情報を渡すだけに留める。
全起票完了後、作成された issue の URL 一覧をまとめて表示する。
非対象
- コードの自動修正: 本スキルは検出と起票のみ。修正は別セッションで人間または別スキルが担当
- 差分ベースのレビュー: built-in の
/review の責務
- セキュリティ脆弱性の深掘り: built-in の
/security-review(手動実行)の責務
- PR 作成 / マージ / ブランチ操作
Rules
- 自スキル除外: 自スキル(
config/.claude/skills/repo-audit/SKILL.md と references/detection-patterns.md)自身のルール表記や例示(カテゴリ 1 のパターン文字列 console.log TODO catch {} や、カテゴリ 4 の「明示マーカー」行に列挙された互換キーワード等)は、全カテゴリの検出対象から除外する
- 実装修正は行わない: 検出報告のみ
- 無差別起票の禁止: ヒットした全件を無差別に issue 化してはならない。必ず Phase 4 で選別を挟む
- issue 組み立ての委譲: issue 本文の組み立ては自前で行わず、
issue スキルに委譲する
- Grep 単独判定の禁止: Grep ヒットを前後確認せず断定しない(誤検出は信頼を損なう)
- カテゴリ 4 の厳格確認: Grep ヒットだけで判断しない。
git grep -n / git log -S で呼び出しと履歴を確認してから issue 化する
- 現行互換の除外: 現在も意図的に維持している互換(移行期間中のエイリアス、他リポジトリ向けマイグレーションガイド等)は除外する
- 意図的マーカーの除外:
TODO(human) など意図的なマーカーはカテゴリ 1 の検出対象から除外する
- 起票抑止への対応: 「起票はせず一覧だけ出して」と指示された場合は Phase 3 で停止する