mcpField
S
search-first

search-first

github.com/xu-xiangエージェントワークフロー2.0k38 回インストール34 週間前に更新
リポジトリ

search-first について

search-firstは、実装や依存関係の追加、抽象化の作成前に既存の解決策を調べるコーディングエージェント向けスキルです。リポジトリ、パッケージ、MCP、GitHubを検索し、採用・拡張・組み合わせ・自作を判断する手順を示します。

主な機能

  1. 01実装前に要件と制約を整理
  2. 02パッケージ・MCP・GitHubを並行検索
  3. 03リポジトリ内の既存実装を確認
  4. 04適合度に応じて採用か自作を選択
  5. 05調査エージェントと計画ワークフローの連携

活用シーン

  1. 01機能追加前に既存の解決策を探す
  2. 02依存関係や連携の追加前に候補を比較
  3. 03ヘルパーや抽象化の作成前に既存実装を確認
  4. 04調査結果をアーキテクチャや実装計画に反映

インストール

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

$npx skills add https://github.com/xu-xiang/everything-claude-code-zh --skill search-first

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

詳細

/search-first — コーディング前に調査する(Research Before You Code)

「実装前に既存の解決策を検索する」ワークフローを体系化します。

トリガー(Trigger)

以下の場面でこのスキル(Skill)を使用します:

  • 既存の解決策がすでにありそうな新機能の開発を始めるとき
  • 依存関係や連携を追加するとき
  • ユーザーから「X 機能を追加して」と依頼され、コードを書こうとしているとき
  • 新しいユーティリティ(Utility)、ヘルパー関数(Helper)、または抽象化レイヤーを作成する前

ワークフロー(Workflow)

┌─────────────────────────────────────────────┐
│  1. 需求分析 (NEED ANALYSIS)                 │
│     定义所需功能                             │
│     识别语言/框架约束                        │
├─────────────────────────────────────────────┤
│  2. 并行搜索 (调研智能体 researcher agent)    │
│     ┌──────────┐ ┌──────────┐ ┌──────────┐  │
│     │  npm /   │ │  MCP /   │ │  GitHub / │  │
│     │  PyPI    │ │  技能    │ │  Web      │  │
│     └──────────┘ └──────────┘ └──────────┘  │
├─────────────────────────────────────────────┤
│  3. 评估 (EVALUATE)                         │
│     为候选方案打分(功能、维护、             │
│     社区、文档、许可证、依赖)               │
├─────────────────────────────────────────────┤
│  4. 决策 (DECIDE)                           │
│     ┌─────────┐  ┌──────────┐  ┌─────────┐  │
│     │  采用   │  │   扩展   │  │   自研  │  │
│     │ (Adopt) │  │  (Extend)│  │ (Build) │  │
│     └─────────┘  └──────────┘  └─────────┘  │
├─────────────────────────────────────────────┤
│  5. 实施 (IMPLEMENT)                        │
│     安装包 / 配置 MCP /                     │
│     编写最少量的自定义代码                   │
└─────────────────────────────────────────────┘

判断マトリックス(Decision Matrix)

シグナルアクション
完全に一致し、適切に保守されており、MIT/Apache ライセンス採用 (Adopt) — そのままインストールして使用します
部分的に一致し、基盤がしっかりしている拡張 (Extend) — インストールし、軽量なラッパーレイヤーを作成します
一致度の低い候補が複数ある組み合わせ (Compose) — 2~3 個の小規模なパッケージを組み合わせます
適切な解決策が見つからない自作 (Build) — 調査結果に基づいてカスタムコードを作成します

使用方法

クイックモード(インラインで使用)

ユーティリティの作成や機能の追加を始める前に、次の点を頭の中で確認します:

  1. リポジトリにすでに存在しますか?→ まず rg で関連するモジュールやテストを検索します
  2. よくある問題ですか?→ npm/PyPI を検索します
  3. 関連する MCP はありますか?→ ~/.claude/settings.json を確認して検索します
  4. 関連するスキル(Skill)はありますか?→ ~/.claude/skills/ を確認します
  5. GitHub に実装やテンプレートがありますか?→ まったく新しいコードを書く前に、保守状況の良いオープンソースソフトウェア(OSS)を対象に GitHub コード検索を実行します
完全モード(エージェントに委任)

複雑な機能については、調査エージェント(Researcher Agent)を起動します:

Task(subagent_type="general-purpose", prompt="
  调研现有的工具,针对:[功能描述]
  语言/框架:[LANG]
  约束条件:[ANY]

  搜索范围:npm/PyPI, MCP 服务器, Claude Code 技能, GitHub
  返回结果:带建议的结构化对比报告
")

カテゴリー別の検索ショートカット

開発ツール(Development Tooling)
  • リンティング(Linting)→ eslint, ruff, textlint, markdownlint
  • フォーマット(Formatting)→ prettier, black, gofmt
  • テスト(Testing)→ jest, pytest, go test
  • Pre-commit → husky, lint-staged, pre-commit
AI/LLM 連携
  • Claude SDK → 最新のドキュメントは Context7 を参照します
  • プロンプト管理(Prompt management)→ MCP サーバーを確認します
  • ドキュメント処理 → unstructured, pdfplumber, mammoth
データと API
  • HTTP クライアント → httpx (Python), ky/got (Node)
  • バリデーション(Validation)→ zod (TS), pydantic (Python)
  • データベース → まず MCP サーバーを確認します
コンテンツと公開
  • Markdown の処理 → remark, unified, markdown-it
  • 画像の最適化 → sharp, imagemin

連携ポイント(Integration Points)

プランナーエージェント(Planner Agent)との連携

プランナーは、第 1 段階(アーキテクチャレビュー Architecture Review)の前に調査担当者を呼び出す必要があります:

  • 調査担当者が利用可能なツールを特定します
  • プランナーがそれらを実装計画に組み込みます
  • 計画での「車輪の再発明」を避けます
アーキテクトエージェント(Architect Agent)との連携

アーキテクトは、以下について調査担当者に相談する必要があります:

  • 技術スタックの選択
  • 連携パターンの発見
  • 既存のリファレンスアーキテクチャ
反復検索スキル(Iterative-retrieval Skill)との連携

段階的な発見のため、次のように組み合わせて使用します:

  • 第 1 ラウンド:幅広く検索します (npm, PyPI, MCP)
  • 第 2 ラウンド:優先候補を詳しく評価します
  • 第 3 ラウンド:プロジェクトの制約との互換性をテストします

例

例 1:「デッドリンクチェックを追加する」
需求:检查 markdown 文件中的损坏链接
搜索:npm "markdown dead link checker"
发现:textlint-rule-no-dead-link (得分: 9/10)
行动:采用 (ADOPT) — npm install textlint-rule-no-dead-link
结果:零自定义代码,经受过实战检验的解决方案
例 2:「HTTP クライアントのラッパーレイヤーを追加する」
需求:具备重试和超时处理能力的弹性 HTTP 客户端
搜索:npm "http client retry", PyPI "httpx retry"
发现:带重试插件的 got (Node), 内置重试的 httpx (Python)
行动:采用 (ADOPT) — 直接使用带重试配置的 got/httpx
结果:零自定义代码,生产环境验证过的库
例 3:「設定ファイルのリンターを追加する」
需求:根据 Schema 验证项目配置文件
搜索:npm "config linter schema", "json schema validator cli"
发现:ajv-cli (得分: 8/10)
行动:采用 + 扩展 (ADOPT + EXTEND) — 安装 ajv-cli,编写项目特定的 schema
结果:1 个包 + 1 个 schema 文件,无需自定义验证逻辑

アンチパターン(Anti-Patterns)

  • すぐにコーディングする:既存のツールがあるか確認せずにユーティリティを作成する
  • MCP を無視する:MCP サーバーがすでにその機能を提供しているか確認しない
  • 過度なカスタマイズ:ライブラリを過剰にラップし、本来の利点を失わせる
  • 依存関係の肥大化:小さな機能のために巨大なパッケージをインストールする

コメント