code-refactor について
複数ファイルにまたがるコードリファクタリング用のスキルです。少数のファイルでは標準の検索・編集ツールを使い、10ファイル以上では code-execution に切り替えます。
主な機能
- 01コード内の一致箇所を検索
- 02複数ファイルでパターンを置換
- 03ファイル数に応じた実行方式の選択
- 04編集後の変更確認
- 05識別子と API の更新に対応
活用シーン
- 01プロジェクト全体での識別子名の変更
- 02非推奨コードパターンの置換
- 03複数ファイルの API 呼び出し更新
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mhattingpete/ claude-skills-marketplace --skill code-refactorインストール後、Claude Code で/code-refactorを入力して読み込まれたか確認します。
詳細
コードのリファクタリング
複数のファイルにわたる体系的なコードのリファクタリングです。10 ファイル以上の場合は自動的に実行モードに切り替わります(トークンを 90% 節約)。
モードの選択
- 1〜9 ファイル:ネイティブツール(Grep + replace_all を使った Edit)を使用
- 10 ファイル以上:
code-executionスキルを自動的に使用
実行例(50 ファイル):
from api.code_transform import rename_identifier
result = rename_identifier('.', 'oldName', 'newName', '**/*.py')
# Returns: {'files_modified': 50, 'total_replacements': 247}
# ~500 tokens vs ~25,000 tokens traditional
使用する場面
- 「[identifier] を [new_name] に名前変更」
- 「すべての [pattern] を [replacement] に置換」
- 「[new_pattern] を使うようにリファクタリング」
- 「[function/API] の呼び出しをすべて更新」
- 「[old_pattern] を [new_pattern] に変換」
基本的なワークフロー(ネイティブモード)
1. すべての該当箇所を検索
Grep(pattern="getUserData", output_mode="files_with_matches") # Find files
Grep(pattern="getUserData", output_mode="content", -n=true, -B=2, -A=2) # Verify with context
2. すべての該当箇所を置換
Edit(
file_path="src/api.js",
old_string="getUserData",
new_string="fetchUserData",
replace_all=true
)
3. 変更を確認
Grep(pattern="getUserData", output_mode="files_with_matches") # Should return none
ワークフローの例
関数の名前変更
- 検索:
Grep(pattern="getUserData", output_mode="files_with_matches") - 件数を確認:「5 ファイルで 15 件見つかりました」
- 各ファイルで
replace_all=trueを指定して置換 - 確認:Grep を再実行
- 提案:テストの実行
非推奨パターンの置換
- 検索:
Grep(pattern="\\bvar\\s+\\w+", output_mode="content", -n=true) - 分析:再代入されているか(let)、定数か(const)を確認
- 置換:
Edit(old_string="var count = 0", new_string="let count = 0") - 確認:
npm run lint
API 呼び出しの更新
- 検索:
Grep(pattern="/api/auth/login", output_mode="content", -n=true) - 置換:
Edit(old_string="'/api/auth/login'", new_string="'/api/v2/authentication/login'", replace_all=true) - テスト:統合テストを推奨
ベストプラクティス
計画:
- まず、すべての該当箇所を検索します
- 各一致箇所のコンテキストを確認します
- 対象範囲をユーザーに伝えます
- エッジケース(文字列、コメント)を考慮します
安全な手順:
- 検索 → すべての該当箇所を探します
- 分析 → 適切かどうか確認します
- 通知 → 対象範囲をユーザーに伝えます
- 実行 → 変更を加えます
- 確認 → 変更が適用されたことを確認します
- テスト → テストの実行を提案します
エッジケース:
- 文字列/コメント:更新すべきかを確認します
- エクスポートされた API:互換性を損なう変更について警告します
- 大文字と小文字の区別:明確に指定します
ツールのリファレンス
replace_all を指定した Edit:
replace_all=true:すべての該当箇所を置換しますreplace_all=false:最初の該当箇所のみ置換します(複数ある場合は失敗します)- 完全一致が必要です(空白、引用符を含む)
Grep パターン:
-n=true:行番号を表示します-B=N, -A=N:前後のコンテキスト行数を指定します-i=true:大文字と小文字を区別せずに検索しますtype="py":ファイルタイプで絞り込みます
連携
- test-fixing:リファクタリング後に壊れたテストを修正します
- code-transfer:リファクタリングしたコードを移動します
- feature-planning:大規模なリファクタリングを計画します
コメント
Markdown 対応