recommend について
要件やコード片をもとに es-toolkit の関数を推薦するスキルです。導入済みパッケージのエクスポート、宣言、実装、公式ドキュメントを根拠として確認します。
主な機能
- 01操作要件とデータ型の分析
- 02導入済みバージョンとエクスポートの確認
- 03宣言と実装の調査
- 04公式関数ドキュメントへのリンク
- 05複数候補を推薦する際の比較
活用シーン
- 01タスクに合う es-toolkit 関数の検索
- 02プロジェクトの導入版で関数を確認
- 03関数の挙動とシグネチャの確認
- 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 スキルを案内してください。