jscodeshift について
jscodeshift の codemod を開発する AI エージェントと LLM 向けのベストプラクティス集です。優先度付きルールで、パーサー設定、AST の走査と変換、コード生成、テスト、ランナーの調整を扱います。
主な機能
- 018 カテゴリー、計 40 のルール
- 02パーサー設定と AST 走査
- 03ノードの絞り込みと変換パターン
- 04コード生成とスタイルの保持
- 05テストとランナーの最適化
活用シーン
- 01コード移行用 codemod の作成
- 02変換失敗のデバッグ
- 03変換のエッジケースのテスト
- 04codemod の正確性レビュー
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill jscodeshiftインストール後、Claude Code で/jscodeshiftを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdadvanced-compose-transforms.mdadvanced-custom-collections.mdadvanced-multi-file-state.mdadvanced-scope-analysis.mdcodegen-preserve-style.mdcodegen-print-width.mdcodegen-template-literals.mdcodegen-tosource-options.mdfilter-computed-properties.mdfilter-import-binding.mdfilter-jsx-context.mdfilter-nullish-checks.mdfilter-path-parent-check.mdparser-astexplorer-match.mdparser-babel5-compat.mdparser-export-declaration.mdparser-flow-annotation.mdparser-typescript-config.mdrunner-batch-processing.mdrunner-extensions-filter.mdrunner-ignore-patterns.mdrunner-parallel-workers.mdrunner-verbose-output.mdtest-dry-run-exploration.mdtest-fixture-files.md詳細
Facebook/Meta jscodeshift のベストプラクティス
AI エージェントと LLM 向けに設計された、jscodeshift による codemod 開発の包括的なベストプラクティスガイドです。影響度に基づいて、重要度の高いもの(パーサー設定、AST のトラバース)から段階的に取り組むもの(高度なパターン)まで、8 つのカテゴリにわたる 40 のルールを掲載しています。各ルールには、詳しい説明、実例、具体的な影響指標が含まれています。
適用するタイミング
次の場合に、これらのガイドラインを参照してください。
- コード移行用の新しい jscodeshift codemod を作成するとき
- 変換の失敗や予期しない動作をデバッグするとき
- 大規模なコードベースでの codemod のパフォーマンスを最適化するとき
- codemod のコードが正しいかレビューするとき
- エッジケースやリグレッションに対して codemod をテストするとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | 接頭辞 |
|---|---|---|---|
| 1 | パーサー設定 | CRITICAL | parser- |
| 2 | AST トラバースパターン | CRITICAL | traverse- |
| 3 | ノードのフィルタリング | HIGH | filter- |
| 4 | AST 変換 | HIGH | transform- |
| 5 | コード生成 | MEDIUM | codegen- |
| 6 | テスト戦略 | MEDIUM | test- |
| 7 | ランナーの最適化 | LOW-MEDIUM | runner- |
| 8 | 高度なパターン | LOW | advanced- |
クイックリファレンス
1. パーサー設定(CRITICAL)
parser-typescript-config- TypeScript ファイルには適切なパーサーを使用するparser-flow-annotation- Flow 型付きコードには Flow パーサーを使用するparser-babel5-compat- 最新の構文ではデフォルトの babel5compat を避けるparser-export-declaration- 変換モジュールからパーサーをエクスポートするparser-astexplorer-match- AST Explorer のパーサーを jscodeshift のパーサーに合わせる
2. AST トラバースパターン(CRITICAL)
traverse-find-specific-type- find() 呼び出しでは特定のノード型を指定するtraverse-two-pass-pattern- 複雑な変換には 2 パスパターンを使用するtraverse-early-return- 変換が不要な場合は早期に return するtraverse-find-filter-pattern- filter() の連結ではなく、フィルターオブジェクトを使った find() を使用するtraverse-closest-scope- スコープを考慮した変換には closestScope() を使用するtraverse-avoid-repeated-find- 同じノード型に対する find() 呼び出しの繰り返しを避ける
3. ノードのフィルタリング(HIGH)
filter-path-parent-check- 変換前に親パスを確認するfilter-import-binding- 正確に使用状況を検出するため、インポートのバインディングを追跡するfilter-nullish-checks- プロパティにアクセスする前に nullish チェックを追加するfilter-jsx-context- JSX コンテキストと通常の JavaScript を区別するfilter-computed-properties- フィルターで計算されたプロパティキーを処理する
4. AST 変換(HIGH)
transform-builder-api- AST ノードの作成にはビルダー API を使用するtransform-replacewith-callback- コンテキストを考慮した変換には replaceWith コールバックを使用するtransform-insert-import- 正しい位置にインポートを挿入するtransform-preserve-comments- ノードを置き換える際にコメントを保持するtransform-renameto- 変数名の変更には renameTo を使用するtransform-remove-unused-imports- 変換後に未使用のインポートを削除する
5. コード生成(MEDIUM)
codegen-tosource-options- 一貫したフォーマットになるように toSource() を設定しますcodegen-preserve-style- recast で元のコードスタイルを保持しますcodegen-template-literals- 複雑なノードの作成にはテンプレートリテラルを使用しますcodegen-print-width- 長い行に適切な印刷幅を設定します
6. テスト戦略(MEDIUM)
test-inline-snapshots- 入出力の検証に defineInlineTest を使用しますtest-negative-cases- まず否定的なテストケースを作成しますtest-dry-run-exploration- コードベースの調査にはドライランモードを使用しますtest-fixture-files- 複雑なテストケースにはフィクスチャファイルを使用しますtest-parse-errors- 解析エラーの処理をテストします
7. ランナーの最適化(LOW-MEDIUM)
runner-parallel-workers- 最適な並列化のためにワーカー数を設定しますrunner-ignore-patterns- ソース以外のファイルをスキップするには無視パターンを使用しますrunner-extensions-filter- 拡張子でファイルをフィルタリングしますrunner-batch-processing- 大規模なコードベースをバッチ処理しますrunner-verbose-output- 変換のデバッグには詳細出力を使用します
8. 高度なパターン(LOW)
advanced-compose-transforms- 複数の変換をパイプラインに組み合わせますadvanced-scope-analysis- 安全な変数変換にはスコープ解析を使用しますadvanced-multi-file-state- オプションを使ってファイル間で状態を共有しますadvanced-custom-collections- カスタムコレクションメソッドを作成します
使用方法
詳しい説明とコード例については、各リファレンスファイルをお読みください。
コンパイル済みの全文書
すべてのルールを含む包括的な単一のドキュメントについては、AGENTS.md をご覧ください。
リファレンスファイル
| ファイル | 説明 |
|---|---|
| AGENTS.md | すべてのルールを含む、コンパイル済みの完全なガイド |
| references/_sections.md | カテゴリーの定義と並び順 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
| metadata.json | バージョンとリファレンス情報 |
コメント
Markdown 対応