mcpField
C
compat-review

compat-review

github.com/tossテスト・品質11.4k218 回インストール2 日前に更新
リポジトリ

compat-review について

es-toolkit の compat 層の変更が Lodash との差異を解消するか確認するレビュー用スキルです。PR の主張または関数名から比較テストを作り、変更前後で実行して結果を報告します。

主な機能

  1. 01PR の主張と対象関数の抽出
  2. 02Lodash との比較テスト作成
  3. 03主張されたケースと境界ケースの確認
  4. 04修正前後の動作確認
  5. 05検証レポートの作成

活用シーン

  1. 01compat 修正 PR の検証
  2. 02指定された compat 関数と Lodash の比較
  3. 03境界ケースでの回帰の検出

インストール

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

$npx skills add https://github.com/toss/es-toolkit --skill compat-review

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

詳細

互換レイヤーのレビュー

互換性に関する PR が、lodash の実際の不整合を修正しているか検証します。

入力

$ARGUMENTS — PR 番号(例:1234)または関数名(例:chunk)

ワークフロー

1. 対象の関数と PR の主張を特定する

PR 番号:

gh pr view {number} --repo toss/es-toolkit --json title,body,files

PR の説明と差分から、次の内容を抽出します。

  • 修正対象の互換関数
  • コントリビューターが主張する不整合(期待される動作と実際の動作)
  • コントリビューターが提示しているテスト例

関数名:関数のソースと仕様を読み、現在の動作を把握します。

2. 比較テストを作成する

src/compat/{category}/_compat-review-{fn}.spec.ts に一時的な vitest 仕様ファイルを作成します。

import { describe, expect, it } from 'vitest';
import { fn as compatFn } from 'es-toolkit/compat';
import { fn as lodashFn } from 'lodash';

テストケースを次の 2 つのグループに分けます。

A. コントリビューターが主張する例 — PR の説明またはテスト差分から直接抽出します。これらは、PR で修正すると主張されているケースです。

B. 追加で生成する約 10 個のエッジケース — 関数のシグネチャと lodash の既知の動作パターンに基づきます。

  • 空の入力:[]、{}、''、0
  • nullish 値:null、undefined
  • 負数/ゼロ/浮動小数点数:-1、0、1.5、NaN、Infinity
  • 型強制:数値文字列('3')、ブール値、異なる型の混在
  • 境界値:要素が 1 つの配列、非常に長い文字列、深くネストされたオブジェクト
  • 対象の関数に関連するケースを選びます

各テスト:

it('description', () => {
  let lodashResult, compatResult;
  let lodashErr: any, compatErr: any;
  try {
    lodashResult = lodashFn(args);
  } catch (e) {
    lodashErr = e;
  }
  try {
    compatResult = compatFn(args);
  } catch (e) {
    compatErr = e;
  }

  if (lodashErr && compatErr) return; // both throw = consistent
  if (lodashErr || compatErr) {
    throw new Error(`Behavior mismatch: ${lodashErr ? 'lodash throws' : 'compat throws'}`);
  }
  expect(compatResult).toEqual(lodashResult);
});
3. PR の変更を適用する前に比較を実行する
yarn vitest run src/compat/{category}/_compat-review-{fn}.spec.ts

失敗したテストを記録します。これらは、main に実在する不整合です。

4. PR の変更を適用して再実行する
gh pr diff {number} --repo toss/es-toolkit | git apply

同じテストを再実行し、次の点を確認します。

  • コントリビューターが主張する例が通る
  • 追加のエッジケースも引き続き通る(リグレッションがない)

テスト後に元に戻します。

git checkout -- .
5. クリーンアップ

_compat-review-*.spec.ts を削除します。

6. 報告する
## {fn} — Compat Review

### PR Claim
{What the contributor says they're fixing}

### Verification (BEFORE fix)
| # | Input | lodash | compat | Match? | Source |
|---|-------|--------|--------|--------|--------|
| 1 | ...   | ...    | ...    | MISMATCH | PR example |
| 2 | ...   | ...    | ...    | MATCH    | Edge case |

### Verification (AFTER fix)
| # | Input | lodash | compat | Match? | Source |
|---|-------|--------|--------|--------|--------|

### Verdict
- [ ] PR claim is valid (inconsistency confirmed on main)
- [ ] Fix resolves the claimed inconsistency
- [ ] No regressions in edge cases
- [ ] Existing tests still pass

コメント