mcpField
C
code-refactor

code-refactor

github.com/mhattingpete開発689294 回インストール14 週間前に更新
リポジトリ

code-refactor について

複数ファイルにまたがるコードリファクタリング用のスキルです。少数のファイルでは標準の検索・編集ツールを使い、10ファイル以上では code-execution に切り替えます。

主な機能

  1. 01コード内の一致箇所を検索
  2. 02複数ファイルでパターンを置換
  3. 03ファイル数に応じた実行方式の選択
  4. 04編集後の変更確認
  5. 05識別子と API の更新に対応

活用シーン

  1. 01プロジェクト全体での識別子名の変更
  2. 02非推奨コードパターンの置換
  3. 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

ワークフローの例

関数の名前変更
  1. 検索:Grep(pattern="getUserData", output_mode="files_with_matches")
  2. 件数を確認:「5 ファイルで 15 件見つかりました」
  3. 各ファイルで replace_all=true を指定して置換
  4. 確認:Grep を再実行
  5. 提案:テストの実行
非推奨パターンの置換
  1. 検索:Grep(pattern="\\bvar\\s+\\w+", output_mode="content", -n=true)
  2. 分析:再代入されているか(let)、定数か(const)を確認
  3. 置換:Edit(old_string="var count = 0", new_string="let count = 0")
  4. 確認:npm run lint
API 呼び出しの更新
  1. 検索:Grep(pattern="/api/auth/login", output_mode="content", -n=true)
  2. 置換:Edit(old_string="'/api/auth/login'", new_string="'/api/v2/authentication/login'", replace_all=true)
  3. テスト:統合テストを推奨

ベストプラクティス

計画:

  • まず、すべての該当箇所を検索します
  • 各一致箇所のコンテキストを確認します
  • 対象範囲をユーザーに伝えます
  • エッジケース(文字列、コメント)を考慮します

安全な手順:

  1. 検索 → すべての該当箇所を探します
  2. 分析 → 適切かどうか確認します
  3. 通知 → 対象範囲をユーザーに伝えます
  4. 実行 → 変更を加えます
  5. 確認 → 変更が適用されたことを確認します
  6. テスト → テストの実行を提案します

エッジケース:

  • 文字列/コメント:更新すべきかを確認します
  • エクスポートされた 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:大規模なリファクタリングを計画します

コメント