Researches existing libraries before implementation. Required before writing any new functionality. Prevents reinventing the wheel by finding and evaluating existing packages.
Before implementing any new functionality, this skill requires researching existing libraries to prevent reinventing the wheel. It triggers when you attempt to write utility functions, complex logic, or external service integrations, ensuring you find and evaluate existing packages first.
/plugin marketplace add sumik5/sumik-claude-plugin/plugin install sumik@sumikThis skill inherits all available tools. When active, it can use any tool Claude has access to.
EVALUATION-CRITERIA.mdSEARCH-METHODS.md❌ 調査せずに実装を始める → 禁止
✅ 必ず既存ライブラリを調査してから実装
自作が許可されるケース:
各言語のパッケージ検索コマンドとMCP活用法:
ライブラリ採用の判断基準:
「〇〇を実装したい」
↓
キーワードを抽出
↓
検索クエリを作成
MCP優先(推奨):
# Context7でライブラリドキュメント取得
context7: resolve-library-id("zod")
context7: get-library-docs("/colinhacks/zod")
# DeepWikiでGitHubリポジトリ調査
deepwiki: ask_question("vercel/next.js", "認証ライブラリの推奨は?")
コマンド実行(補助):
# npm
npm search <keyword> --long
# Go
go list -m all | grep <keyword>
| 基準 | 最低ライン |
|---|---|
| ⭐ GitHub Stars | 500+ |
| 📅 最終更新 | 6ヶ月以内 |
| 📦 週間DL数 | 10,000+ |
| 🔒 脆弱性 | 0件 |
## ライブラリ選定理由
### 採用: `zod`
- 目的: スキーマバリデーション
- Stars: 30k+
- 理由: TypeScript-first、軽量、活発なメンテナンス
### 見送り: `yup`
- 理由: TypeScriptサポートが限定的
| やりたいこと | 使うべきライブラリ |
|---|---|
| バリデーション | zod, valibot, yup |
| 日付操作 | date-fns, dayjs |
| HTTP通信 | ky, axios, got |
| 状態管理 | zustand, jotai |
| フォーム | react-hook-form |
| テーブル | @tanstack/table |
| アニメーション | framer-motion |
| ユーティリティ | lodash-es, radash |
| やりたいこと | 使うべきライブラリ |
|---|---|
| バリデーション | pydantic |
| HTTP通信 | httpx, aiohttp |
| CLI作成 | typer, click |
| 設定管理 | python-dotenv, dynaconf |
| 日付操作 | pendulum, arrow |
| データ処理 | polars, pandas |
| やりたいこと | 使うべきライブラリ |
|---|---|
| HTTP Router | chi, echo, gin |
| バリデーション | go-playground/validator |
| 設定読込 | viper, envconfig |
| ログ | slog (標準), zerolog |
| テスト | testify, ginkgo |
// ❌ Bad: 自作のdebounce関数
function debounce(fn, ms) {
let timeout;
return (...args) => {
clearTimeout(timeout);
timeout = setTimeout(() => fn(...args), ms);
};
}
// ✅ Good: lodash-esを使用
import { debounce } from 'lodash-es';
# ❌ Bad: 自作の日付パース
def parse_date(date_str):
# 複雑なパース処理...
# ✅ Good: pendulumを使用
import pendulum
dt = pendulum.parse(date_str)
// ❌ Bad: 1関数のためにlodash全体をインポート
import _ from 'lodash';
_.isEmpty(obj);
// ✅ Good: 必要な関数のみインポート
import isEmpty from 'lodash-es/isEmpty';
// ✅ Better: 標準機能で十分な場合
Object.keys(obj).length === 0;
This skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.