mcpField
C
code-transfer

code-transfer

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

code-transfer について

code-transferは、ファイル間でコードを移動、抽出、挿入するエージェントスキルです。少数ファイルでは標準ツールを使い、大量処理では実行モードを用いて、依存関係の維持と変更の検証も案内します。

主な機能

  1. 01ファイル間のコード移動
  2. 02指定行へのコード挿入
  3. 03関数やクラスの抽出
  4. 04基本モードと一括実行モード
  5. 05インポート更新と検証の案内

活用シーン

  1. 01関数を別ファイルへ移動
  2. 02クラスを新しいモジュールに抽出
  3. 03複数ファイルにまたがるコードの再編成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mhattingpete/claude-skills-marketplace --skill code-transfer

インストール後、Claude Code で/code-transferを入力して読み込まれたか確認します。

同梱ファイルscripts/line_insert.py

詳細

コード転送

行単位で正確に制御しながら、ファイル間でコードを転送します。デュアルモードで動作:ネイティブツール(1~10ファイル)または実行モード(10ファイル以上、トークンを90%節約)。

操作モード

基本モード(デフォルト)

1~10ファイルの操作には Read、Edit、Bash スクリプトを使用します。すぐに利用でき、セットアップは不要です。

実行モード(10ファイル以上)
from api.filesystem import batch_copy
from api.code_analysis import find_functions

functions = find_functions('app.py', pattern='handle_.*')
operations = [{
    'source_file': 'app.py',
    'start_line': f['start_line'],
    'end_line': f['end_line'],
    'target_file': 'handlers.py',
    'target_line': -1
} for f in functions]
batch_copy(operations)

使用する場面

  • 「このコードを[ファイル]にコピーして」
  • 「[関数/クラス]を[ファイル]に移動して」
  • 「これを新しいファイルに切り出して」
  • 「[行番号]に挿入して」
  • 「別々のファイルに再編成して」

主な操作

1. ソースコードの抽出
Read(file_path="src/auth.py")                              # Full file
Read(file_path="src/auth.py", offset=10, limit=20)         # Line range
Grep(pattern="def authenticate", -n=true, -A=10)           # Find function
2. 特定の行への挿入

行単位の挿入には line_insert.py スクリプトを使用します。

python3 skills/code-transfer/scripts/line_insert.py <file> <line_number> <code> [--backup]

例:

# Insert function at line 50
python3 skills/code-transfer/scripts/line_insert.py src/utils.py 50 "def helper():\n    pass"

# Insert with backup
python3 skills/code-transfer/scripts/line_insert.py src/utils.py 50 "code" --backup

# Insert at beginning
python3 skills/code-transfer/scripts/line_insert.py src/new.py 1 "import os"

使用する場面:

  • ユーザーが正確な行番号を指定している場合
  • 新規または空のファイルに挿入する場合
  • コンテキストなしで先頭/末尾に挿入する場合
3. コンテンツを基準にした挿入

挿入位置を既存のコードに対する相対位置で指定する場合は、Edit を使用します。

Edit(
  file_path="src/utils.py",
  old_string="def existing():\n    pass",
  new_string="def existing():\n    pass\n\ndef new():\n    return True"
)

ワークフローの例

ファイル間で関数をコピーする
  1. 検索:Grep(pattern="def validate_user", -n=true, -A=20)
  2. 抽出:Read(file_path="auth.py", offset=45, limit=15)
  3. 挿入先を確認:Read(file_path="validators.py")
  4. 挿入:コンテキストに応じて line_insert.py または Edit を使用
クラスを新しいファイルに切り出す
  1. 場所を特定:Grep(pattern="class DatabaseConnection", -n=true, -A=50)
  2. 抽出:Read(file_path="original.py", offset=100, limit=50)
  3. 作成:Write(file_path="database.py", content="<extracted>")
  4. インポートを更新:元のファイルで Edit を使用
  5. 古いクラスを削除:置き換えを指定して Edit を使用
特定の行に挿入する
  1. 確認:Read(file_path="main.py", offset=20, limit=10)
  2. 挿入:python3 skills/code-transfer/scripts/line_insert.py main.py 25 "logger.info('...')" --backup
  3. 検証:Read(file_path="main.py", offset=23, limit=5)
モジュールに再編成する
  1. 分析:Read(file_path="utils.py")
  2. グループを特定:Grep(pattern="^def |^class ", -n=true)
  3. 各カテゴリを抽出:新しいファイルに Write
  4. 元のファイルを更新:再エクスポートするか、転送する

ベストプラクティス

計画:

  • 依存関係(インポート、参照)を把握する
  • コードブロックの正確な開始位置と終了位置を特定する
  • 挿入先のファイル構造を確認する
  • 必要なインポートが含まれていることを確認する

保持:

  • docstring とコメントを含める
  • 関連する関数はまとめて転送する
  • 両方のファイルでインポートを更新する
  • フォーマットとインデントを維持する

検証:

  • 挿入位置を確認する
  • 構文を確認する
  • インポートをテストする
  • テストの実行を提案する

バックアップ:

  • 重要な変更には --backup を使用する
  • 重要なファイル操作
  • 大規模な削除

連携

  • code-refactor:転送後にリファクタリングする
  • test-fixing:再編成後にテストを実行する
  • feature-planning:大規模な再編成を計画する

コメント