원클릭으로
refactor-scan
similarity-py を使った重複コード検出とリファクタリング分析レポート生成。PR・Issue 単位のスコープ指定にも対応。ソースコードは変更せず分析レポートのみ生成する。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
similarity-py を使った重複コード検出とリファクタリング分析レポート生成。PR・Issue 単位のスコープ指定にも対応。ソースコードは変更せず分析レポートのみ生成する。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
ccusage スナップショット差分と JSONL セッションログ解析による hachimoku レビューのトークン消費・コスト分析レポート生成。
Validates planning artifacts (spec.md, plan.md, data-model.md, contracts/) for quality, completeness, and consistency. Checks for mandatory sections, cross-artifact consistency, and constitution compliance. Always run after /speckit.plan completes.
| name | refactor-scan |
| description | similarity-py を使った重複コード検出とリファクタリング分析レポート生成。PR・Issue 単位のスコープ指定にも対応。ソースコードは変更せず分析レポートのみ生成する。 |
similarity-py を使用してコードベースの重複を検出し、優先度付けリファクタリング提案を含む Markdown レポートを生成する。DRY 原則に基づき分析し、チーム共有可能な形式で保存する。
# デフォルト: src/hachimoku 全体 + tests をスキャン
/refactor-scan
# PR の変更ファイルのみスキャン
/refactor-scan --pr 149
# Issue 関連ファイルのみスキャン
/refactor-scan --issue 150
# 指定パスのスキャン
/refactor-scan --path src/hachimoku/engine
# 出力パスとオプション指定
/refactor-scan custom-report.md --pr 149 --threshold 0.90 --min-lines 20
READ-ONLY SCAN + REPORT WRITE: similarity-py でスキャンしてレポートを生成するが、ソースコード自体は変更しない。
CLAUDE.md 準拠: DRY 原則、TDD 必須、品質チェックのルールを厳守する。
Prerequisites: similarity-py がインストール済みであること(cargo install similarity-py)。
環境変数: PROJECT_ROOT が設定済みであること。すべてのパス解決は $PROJECT_ROOT を基準とする。
$ARGUMENTS から以下を抽出する。
スキャンモード(排他的 — 複数指定時はエラー):
| フラグ | 値 | 説明 |
|---|---|---|
--pr | <number> | PR の変更ファイルのみスキャン |
--issue | <number> | Issue 関連ファイルのみスキャン |
--path | <path> | 指定パスをスキャン |
| なし | — | デフォルト: $PROJECT_ROOT/src/hachimoku + $PROJECT_ROOT/tests |
共通オプション:
| フラグ | デフォルト | 説明 |
|---|---|---|
--threshold | 0.85 | 類似度閾値(0.0-1.0) |
--min-lines | 15 | 最小重複行数 |
出力パス: .md で終わる引数があれば出力パスとして使用。未指定時は $PROJECT_ROOT/ai_working/duplication-analysis-YYYY-MM-DD.md(現在日付)。
which similarity-py
未インストールの場合、以下を提示して終了:
similarity-py がインストールされていません。
インストール: cargo install similarity-py
--pr <number>)# 変更ファイル一覧を取得
gh pr diff <number> --name-only
.py ファイルのみをフィルタ--issue <number>)# Step 1: 関連 PR を検索
gh pr list --search "closes #<number>" --json number --jq '.[].number'
# Step 2: PR が見つからない場合、ブランチを検索
git branch -r --list "*/<number>-*"
# Step 3: ブランチが見つかった場合、差分ファイルを取得
git diff main...<branch> --name-only
.py ファイルをフィルタIssue #<number> に関連する PR またはブランチが見つかりません。
--path でスキャン対象を直接指定してください。
--path <path>)指定パスが存在することを確認。存在しない場合はエラー表示して終了。
スキャン対象: $PROJECT_ROOT/src/hachimoku と $PROJECT_ROOT/tests(テストは閾値 0.80、最小行数 10 で別途スキャン)。
特定されたスキャン対象に対して実行:
# ソースコードスキャン
similarity-py <対象パス> --threshold <閾値> --min-lines <最小行数> --cross-file --print
# デフォルトモード時のテストスキャン(追加)
similarity-py $PROJECT_ROOT/tests --threshold 0.80 --min-lines 10 --cross-file --print
検出された重複に以下の基準で優先度を判定:
| 優先度 | 類似度 | 重複行数 | 影響範囲 |
|---|---|---|---|
| P0 | >90% | >100行 | クロスモジュール |
| P1 | >85% | >50行 | 同一モジュール内 |
| P2 | >80% | >30行 | 同一ファイル内 |
| P3 | >75% | >15行 | 局所的 |
以下の構造で Markdown レポートを生成する。
# Code Duplication Analysis Report
**Generated**: [ISO 8601 形式]
**Scan Mode**: [Default / PR #NNN / Issue #NNN / Path: xxx]
**Scanned Paths**: [スキャンしたパス一覧]
**Scanned Files**: [PR/Issue モード時: 対象ファイル一覧]
**Threshold**: [閾値]
**Min Lines**: [最小行数]
**Tool**: similarity-py
---
## Executive Summary
- **Total Duplications Found**: [件数]
- **Total Duplicate Lines**: [行数]
- **Estimated Code Reduction Potential**: [削減可能行数]
- **Priority Distribution**: P0: [件数], P1: [件数], P2: [件数], P3: [件数]
---
## Priority Findings
### P0: Critical Duplications
#### P0-[番号]: [タイトル]
**Metrics**: Similarity [XX]%, [行数] lines, [ファイル数] files
**Location**:
- `[ファイルパス1]:[開始行]-[終了行]`
- `[ファイルパス2]:[開始行]-[終了行]`
**Common Pattern**: [共通ロジックの箇条書き]
**Differences**: [差異の箇条書き]
**Suggested Pattern**: [Template Method / Strategy / Factory / 共通関数抽出 / 基底クラス拡張]
**Refactoring Proposal**:
(型注釈付きのコード例)
**Estimated Impact**: ~[削減行数] lines reduced, [HIGH/MEDIUM/LOW] maintainability improvement
---
### P1-P3
(P0 と同じ構造で、優先度が下がるにつれ詳細度を低くする。P3 は件数と概要のみ。)
---
## Refactoring Roadmap
### Immediate Actions
[P0 項目: 実装方針と検証方法]
### Short-term Actions
[P1 項目]
### Backlog
[P2-P3 概要]
---
## Metrics
- **Total Files Scanned**: [ファイル数]
- **Duplication Percentage**: [重複率]%
- **Potential Code Reduction**: ~[行数] lines
---
## Appendix: Raw Output
(similarity-py の生出力を details タグで添付)
CLAUDE.md のルール違反(DRY 原則、マジックナンバー等)を検出した場合は、該当する Priority Finding 内で明記すること。
Write ツールで出力パスに保存。保存後、ユーザーに以下を報告:
レポート: [保存先パス]
検出件数: [件数](P0: [件数], P1: [件数], P2: [件数], P3: [件数])
削減可能行数: ~[行数] lines
次のアクション:
1. レポートをレビュー
2. GitHub Issue 作成: gh issue create --body-file [保存先パス]
3. P0 リファクタリング実行
gh コマンドのエラーを表示して終了--pr, --issue, --path の複数指定: エラーメッセージを表示して終了