Communityコーディング&開発github.com

ComposioHQ/codebase-migrate

大規模コードベースの移行とマルチファイルリファクタリングを実行します。エージェントがローカルで数百のファイルに変換を適用する間、Composio CLI が課題管理、バッチ処理されたPR、CI検証を調整します。

codebase-migrate とは?

このスキルは、大規模コードベースの移行やマルチファイルリファクタリングを安全かつ効率的に行うためのフレームワークです。フレームワークのアップグレード、APIのリネーム、設定ファイルの移行など、数百ファイルにわたる同一パターンの変更を、レビュー可能な小さなバッチに分割してPR単位で出荷します。Composio CLI を活用して課題管理(Linear/Jira)、GitHub PR作成、CIステータス確認を自動化し、エージェントはローカルでcodemodツール(jscodeshift, ast-grep等)を実行します。計画フェーズで変換ルールと影響範囲を明確に定義し、バッチごとに「変換→テスト→PR→CI通過→マージ」のループを回すことで、段階的な移行を実現します。また、`done.list` による重複回避、codemod優先の原則、バッチごとのロールバックなど、安全策も充実しています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ComposioHQ/awesome-codex-skills/tree/main/codebase-migrate

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

コードベース移行ガイド

フレームワークのアップグレード、APIリネーム、設定ファイルの書き換え、構造的なリファクタリングを、数百ファイルにわたって調整します。ローカルの編集はエージェントが実行し、Composio CLI が周辺処理(課題管理、バッチごとのPR、CI検証)を担当します。

いつ使うか

  • フレームワークアップグレード(React 17 → 19、Node 18 → 22、Django 4 → 5)。
  • モノレポ内のAPIリネーム(例: getUserById → users.byId)。
  • 設定/フォーマットの移行(webpack → vite、eslint → biome、jest → vitest)。
  • 「200ファイルを同じ方法で変更する」タスクで、レビュー可能なスライスに分割して出荷したい場合。

前提条件

curl -fsSL https://composio.dev/install | bash
composio login
composio link github        # PR + CIステータス用
composio link linear        # または jira — 移行管理用

エージェントが直接使用するローカルツール: git, rg, jscodeshift/ts-morph/comby/ast-grep(言語に応じて)、およびテストランナー。

計画フェーズ

  1. 変換内容を正確に定義する。 悪い例: 「vitestに移行」。良い例: 「jest.mock を vi.mock に置き換え、jest.fn() を vi.fn() に置き換え、jest.config.js をテンプレートXを使って vitest.config.ts にリネーム」。
  2. 影響範囲を評価する:
    rg -l 'jest\.(mock|fn|spyOn)' | wc -l
    rg -l 'from "jest"' | sort
    
  3. 追跡用の課題を作成する:
    composio execute LINEAR_CREATE_ISSUE -d '{
      "teamId":"TEAM_ID",
      "title":"テストランナー移行: jest → vitest",
      "description":"各バッチ約25ファイル。各PRがグリーンになったらチェックポイント。"
    }'
    

レビュー可能なバッチで実行する

ループ: Nファイル選択 → 変換 → テスト → PR → グリーンを待つ → マージ → 次のバッチ。

# バッチヘルパー: パターンに一致する最初の25ファイル(未処理のものから)
BATCH=$(rg -l 'jest\.mock' | grep -v done.list | head -25)
echo "$BATCH" > batch.list

エージェントが batch.list に対してcodemodを実行し、その後:

git checkout -b migrate/vitest-batch-03
xargs < batch.list codemod-runner   # 例: jscodeshift / ts-morph / comby
npm test -- --changed
git add -A && git commit -m "migrate(test): jest → vitest (batch 3)"
git push -u origin migrate/vitest-batch-03

composio execute GITHUB_CREATE_A_PULL_REQUEST -d '{
  "owner":"acme","repo":"app",
  "head":"migrate/vitest-batch-03","base":"main",
  "title":"migrate(test): jest → vitest (batch 3)",
  "body":"LIN-482 の一部。25ファイル。Codemod: `transforms/jest-to-vitest.ts`。"
}'

次にCIをポーリングし、グリーンになったらマージ:

composio execute GITHUB_LIST_WORKFLOW_RUNS_FOR_A_REPOSITORY \
  -d '{"owner":"acme","repo":"app","branch":"migrate/vitest-batch-03"}'

ワークフロースクリプト

scripts/migrate-batch.ts、バッチごとに composio run --file scripts/migrate-batch.ts -- --batch 3 で実行:

const batch = process.argv[process.argv.indexOf("--batch") + 1];

const pr = await execute("GITHUB_CREATE_A_PULL_REQUEST", {
  owner: "acme", repo: "app",
  head: `migrate/vitest-batch-${batch}`, base: "main",
  title: `migrate(test): jest → vitest (batch ${batch})`,
  body: `LIN-482 の一部。transforms/jest-to-vitest.ts を参照。`
});

await execute("LINEAR_CREATE_COMMENT", {
  issueId: "LIN-482",
  body: `PR #${pr.number} をオープン: ${pr.html_url}`
});

安全策

  • 1 PRにつき1つの変換のみ。 リネームとフォーマット変更を混在させない。
  • done.list を維持する 移行済みファイルを記録し、次のバッチでスキップする。
  • 最終バッチではテストスイート全体を実行する、たとえバッチごとのPRが --changed で実行されても。
  • Codemodを優先、手動編集は後。 codemodで3ファイル見逃したら手動で修正し、PR本文に記録する。
  • バッチごとにロールバックする、全体ではなく。各PRはクリーンにリバートできること。

検証ループ

各マージ後:

rg 'jest\.(mock|fn|spyOn)' | wc -l     # 0に近づくはず
npm test                                # 全テストスイート
composio execute GITHUB_LIST_WORKFLOW_RUNS_FOR_A_REPOSITORY \
  -d '{"owner":"acme","repo":"app","branch":"main","event":"push"}' \
  | jq '.workflow_runs[0].conclusion'

トラブルシューティング

  • codemodの正規表現が拾いすぎる → ASTベースのツール(ast-grep、ts-morph)に切り替えて構造マッチングを行う。
  • ローカルでテストが通るがCIで失敗する → Node/Pythonのバージョンを同じに固定する; .nvmrc/pyproject.tomlを確認。
  • PRが大きすぎてレビューできない → バッチサイズを半分にする; メンテナーは800行の差分をレビューしない。
  • バッチ間でコンフリクトが発生する → 現在のバッチをマージする前にオープンバッチをリベースする; マージ済みバッチにはforce pushしない。

CLI完全リファレンス: docs.composio.dev/docs/cli

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

ComposioHQ/-21risk-automation

Automate 21risk tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/-2chat-automation

Automate 2chat tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/ably-automation

Automate Ably tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abstract-automation

Automate Abstract tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abuselpdb-automation

Automate Abuselpdb tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abyssale-automation

Automate Abyssale tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/accelo-automation

Automate Accelo tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/accredible-certificates-automation

Automate Accredible Certificates tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/acculynx-automation

Automate Acculynx tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/active-campaign-automation

Automate ActiveCampaign tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/addresszen-automation

Automate Addresszen tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adobe-automation

Automate Adobe tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adrapid-automation

Automate Adrapid tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adyntel-automation

Automate Adyntel tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/aeroleads-automation

Automate Aeroleads tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/aero-workflow-automation

Automate Aero Workflow tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/affinda-automation

Automate Affinda tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/affinity-automation

Automate Affinity tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/agencyzoom-automation

Automate Agencyzoom tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/agent-deep-links

Build, validate, and troubleshoot deep links for Codex, Cursor, VS Code, Visual Studio, and similar tools. Use when users ask for clickable links (especially in Slack) that open threads, files, folders, or app settings.

関連スキル