code-transfer について
code-transferは、ファイル間でコードを移動、抽出、挿入するエージェントスキルです。少数ファイルでは標準ツールを使い、大量処理では実行モードを用いて、依存関係の維持と変更の検証も案内します。
主な機能
- 01ファイル間のコード移動
- 02指定行へのコード挿入
- 03関数やクラスの抽出
- 04基本モードと一括実行モード
- 05インポート更新と検証の案内
活用シーン
- 01関数を別ファイルへ移動
- 02クラスを新しいモジュールに抽出
- 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"
)
ワークフローの例
ファイル間で関数をコピーする
- 検索:
Grep(pattern="def validate_user", -n=true, -A=20) - 抽出:
Read(file_path="auth.py", offset=45, limit=15) - 挿入先を確認:
Read(file_path="validators.py") - 挿入:コンテキストに応じて
line_insert.pyまたは Edit を使用
クラスを新しいファイルに切り出す
- 場所を特定:
Grep(pattern="class DatabaseConnection", -n=true, -A=50) - 抽出:
Read(file_path="original.py", offset=100, limit=50) - 作成:
Write(file_path="database.py", content="<extracted>") - インポートを更新:元のファイルで
Editを使用 - 古いクラスを削除:置き換えを指定して
Editを使用
特定の行に挿入する
- 確認:
Read(file_path="main.py", offset=20, limit=10) - 挿入:
python3 skills/code-transfer/scripts/line_insert.py main.py 25 "logger.info('...')" --backup - 検証:
Read(file_path="main.py", offset=23, limit=5)
モジュールに再編成する
- 分析:
Read(file_path="utils.py") - グループを特定:
Grep(pattern="^def |^class ", -n=true) - 各カテゴリを抽出:新しいファイルに
Write - 元のファイルを更新:再エクスポートするか、転送する
ベストプラクティス
計画:
- 依存関係(インポート、参照)を把握する
- コードブロックの正確な開始位置と終了位置を特定する
- 挿入先のファイル構造を確認する
- 必要なインポートが含まれていることを確認する
保持:
- docstring とコメントを含める
- 関連する関数はまとめて転送する
- 両方のファイルでインポートを更新する
- フォーマットとインデントを維持する
検証:
- 挿入位置を確認する
- 構文を確認する
- インポートをテストする
- テストの実行を提案する
バックアップ:
- 重要な変更には
--backupを使用する - 重要なファイル操作
- 大規模な削除
連携
- code-refactor:転送後にリファクタリングする
- test-fixing:再編成後にテストを実行する
- feature-planning:大規模な再編成を計画する
コメント
Markdown 対応