mcpField
R
recommend

recommend

github.com/toss開発11.4k708 回インストール2 日前に更新
リポジトリ

recommend について

要件やコード片をもとに es-toolkit の関数を推薦するスキルです。導入済みパッケージのエクスポート、宣言、実装、公式ドキュメントを根拠として確認します。

主な機能

  1. 01操作要件とデータ型の分析
  2. 02導入済みバージョンとエクスポートの確認
  3. 03宣言と実装の調査
  4. 04公式関数ドキュメントへのリンク
  5. 05複数候補を推薦する際の比較

活用シーン

  1. 01タスクに合う es-toolkit 関数の検索
  2. 02プロジェクトの導入版で関数を確認
  3. 03関数の挙動とシグネチャの確認
  4. 04複数の関数候補からの選択

インストール

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

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

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

詳細

関数の推奨

ユーザーのニーズに最も適した es-toolkit の関数を、ソースコードと公式ドキュメントに基づいて推奨します。

入力

$ARGUMENTS — ユーザーのニーズの説明、または分析対象のコードスニペットです。

根拠に基づくことが重要な理由

es-toolkit は、トレーニングデータでは追いきれないほどの速さで進化しています。ユーザーのプロジェクトにインストールされているバージョンから、関数の有無、エントリーポイント、動作を必ず確認してください。このスキルは単独のディレクトリとしてインストールされている場合があるため、es-toolkit のリポジトリや隣接する docs ディレクトリが利用できるとは決して想定しないでください。

ワークフロー

1. 要件を理解する

$ARGUMENTS を解析して、以下を特定します。

  • ユーザーが実行したい操作
  • 関連するデータ型(配列、オブジェクト、文字列など)
  • lodash からの移行支援が必要かどうか(必要な場合は /es-toolkit:migrate を提案してください)
2. インストール済みパッケージから候補を探す

es-toolkit に依存するパッケージから実行します。モノレポの場合、通常はリポジトリのルートではなくワークスペースパッケージから実行します。プロジェクトが Yarn Plug'n'Play を使用している場合は、node の代わりに yarn node を使用してください。

このコマンドでランタイムのエントリーポイントを検索します。検索内容に応じて merge|assign を関連する用語に置き換えてください。

node --input-type=module -e "
import { createRequire } from 'node:module';

const require = createRequire(import.meta.url);
const pattern = /merge|assign/i;
const pkg = require('es-toolkit/package.json');
const entries = Object.keys(pkg.exports)
  .filter(subpath => subpath !== './package.json' && !subpath.includes('*'))
  .map(subpath => subpath === '.' ? 'es-toolkit' : 'es-toolkit/' + subpath.slice(2));
const modules = await Promise.all(entries.map(entry => import(entry).catch(() => null)));
if (modules.every(module => module == null)) {
  console.error('es-toolkit is not resolvable from ' + process.cwd());
  process.exit(1);
}
const matches = new Map();
for (let index = 0; index < modules.length; index++) {
  const module = modules[index];
  if (module == null) continue;
  for (const name of Object.keys(module)) {
    if (!pattern.test(name)) continue;
    matches.set(name, [...(matches.get(name) ?? []), entries[index]]);
  }
}
for (const [name, entryPoints] of [...matches].sort()) {
  console.log(name.padEnd(24), entryPoints.join(', '));
}
"

出力は、インストール済みバージョンに関する正式な情報です。関数は複数のエントリーポイントに存在する場合があるため、一致する項目をすべて確認してください。es-toolkit/types は型専用で、ランタイムではインポートできません。代わりに宣言ファイルを調べてください。

es-toolkit を解決できない場合は、インストール済みバージョンを確認できないと伝えてください。関数名を作り上げてはいけません。

現在のプロジェクトが es-toolkit のソースリポジトリ自体である場合は、ビルド済みパッケージを必要とせずに src/ とその仕様ファイルを直接検索してください。

3. 実際の宣言を読む

インストール済みパッケージのメタデータを解決します。

node -e "console.log(require.resolve('es-toolkit/package.json'))"

パッケージの dist/ ディレクトリにある対応する宣言を読み、正確なシグネチャ、JSDoc、使用例を確認します。一般的な node_modules のパスを想定せず、解決されたパスを使用してください。特に変更動作やエラーの動作については、利用可能な場合は実装も確認します。

4. 公式ドキュメントの URL を組み立てる

es-toolkit のドキュメント URL には予測可能なパターンがあります。取得せずに、次のパターンから直接組み立ててください。

  • strict:https://es-toolkit.dev/reference/{category}/{functionName}.html
  • compat:https://es-toolkit.dev/compat/reference/{category}/{functionName}.html
  • fp:https://es-toolkit.dev/fp/reference/{functionName}.html

ページが存在するか確信が持てない場合は、推測せずにリンクを省略してください。

5. 次の構成で回答する

推奨する関数ごとに、以下を含めます。

  • 関数名とカテゴリー
  • インポートパス:import { fn } from 'es-toolkit';
  • ドキュメントへのリンク:https://es-toolkit.dev/reference/{category}/{fn}
  • 関数の動作(ソース内の JSDoc に基づく説明)
  • コード例(仕様ファイルまたは公式ドキュメントから)
  • ユーザーのニーズに合う理由

複数の関数を推奨する場合は、必ず比較表を含めてください。

関数入力型動作パフォーマンス戻り値の型
(候補ごと)............

明確な判断基準を示す 「どれを選ぶか」 セクションを追加します。例:「分類には groupBy、集計には countBy、検索用マップには keyBy を使います。」

該当する関数がない場合は、その旨を明確に伝え、最新の JavaScript の代替手段を提案してください。lodash 互換の代替手段を求めているユーザーには、/es-toolkit:migrate スキルを案内してください。

コメント