Search First

affaan-m/ECC/skills/search-first

作者 affaan-mef648e01899ba3e8dc6371642deaaf64b4477775無授權條款275K 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫4 天前更新

Research-before-coding workflow: search npm/PyPI, MCP servers, skills, and GitHub for existing tools before writing custom code, then adopt, extend, or build. Launches the researcher agent for non-trivial needs. Use when starting a feature, adding a dependency or integration, or about to write a utility that may already exist.

AI 產生的概覽

引導代理在撰寫自訂程式碼前,先調查既有的套件、MCP 伺服器、技能與 GitHub 程式碼。

功能
此技能定義了一套「先調查再寫程式」的流程:分析需求,平行檢索 npm/PyPI、MCP 伺服器、技能目錄與 GitHub,再依功能、維護狀況、社群、文件、授權與相依性評估候選方案,最後決定直接採用、擴充、組合或自行開發。它提供決策矩陣、檢索管道預檢、依類別劃分的檢索捷徑,以及與規劃、架構和檢索流程的整合說明。產出是結構化的比較與建議,而非程式碼。
適用情境
適用於開始很可能已有現成解法的新功能、新增相依套件或整合,或即將撰寫可能已存在的工具、輔助函式或抽象層時。也適用於非簡單功能,需要先由研究代理盤點生態現況的情境。
執行需求
此技能不含指令碼,僅為說明性指示。它提及可選的檢索管道工具,例如 ripgrep、npm 或 pip、GitHub CLI、MCP 設定以及本機技能目錄,並說明無法使用的管道應誠實回報為已略過。

/search-first — Research Before You Code

Systematizes the "search for existing solutions before implementing" workflow.

Trigger

Use this skill when:

  • Starting a new feature that likely has existing solutions
  • Adding a dependency or integration
  • The user asks "add X functionality" and you're about to write code
  • Before creating a new utility, helper, or abstraction

Workflow

┌─────────────────────────────────────────────┐│  0. TOOL AVAILABILITY PREFLIGHT             ││     Check search channels before relying on ││     them; report skipped channels honestly   │├─────────────────────────────────────────────┤│  1. NEED ANALYSIS                           ││     Define what functionality is needed      ││     Identify language/framework constraints  │├─────────────────────────────────────────────┤│  2. PARALLEL SEARCH (researcher agent)      ││     ┌──────────┐ ┌──────────┐ ┌──────────┐  ││     │  npm /   │ │  MCP /   │ │  GitHub / │  ││     │  PyPI    │ │  Skills  │ │  Web      │  ││     └──────────┘ └──────────┘ └──────────┘  │├─────────────────────────────────────────────┤│  3. EVALUATE                                ││     Score candidates (functionality, maint, ││     community, docs, license, deps)         │├─────────────────────────────────────────────┤│  4. DECIDE                                  ││     ┌─────────┐  ┌──────────┐  ┌─────────┐  ││     │  Adopt  │  │  Extend  │  │  Build   │  ││     │ as-is   │  │  /Wrap   │  │  Custom  │  ││     └─────────┘  └──────────┘  └─────────┘  │├─────────────────────────────────────────────┤│  5. IMPLEMENT                               ││     Install package / Configure MCP /       ││     Write minimal custom code               │└─────────────────────────────────────────────┘

Decision Matrix

SignalAction
Exact match, well-maintained, MIT/ApacheAdopt — install and use directly
Partial match, good foundationExtend — install + write thin wrapper
Multiple weak matchesCompose — combine 2-3 small packages
Nothing suitable foundBuild — write custom, but informed by research

How to Use

Step 0: Tool Availability Preflight

This is agent guidance, not an executable setup script. Check only the channels that are relevant to the task and project in front of you.

ChannelCheckIf missing
Repository searchrg --files and targeted rg queriesState that only visible files were inspected
Package registrynpm --version, python -m pip --version, or project package managerUse web/docs search and avoid claiming registry coverage
GitHub CLIgh auth statusUse public web or local git history only
MCP/docs toolsAvailable tool list or local MCP configFall back to official docs/web search
Skills directoryls ~/.claude/skills ~/.codex/skills where applicableSay no local skill catalog was available

Quick Mode (inline)

Before writing a utility or adding functionality, mentally run through:

  1. Does this already exist in the repo? → rg through relevant modules/tests first
  2. Is this a common problem? → Search npm/PyPI
  3. Is there an MCP for this? → Check ~/.claude/settings.json and search
  4. Is there a skill for this? → Check ~/.claude/skills/
  5. Is there a GitHub implementation/template? → Run GitHub code search for maintained OSS before writing net-new code

Full Mode (agent)

For non-trivial functionality, launch the researcher agent:

Agent(subagent_type="general-purpose", prompt="  Research existing tools for: [DESCRIPTION]  Language/framework: [LANG]  Constraints: [ANY]
  Search: npm/PyPI, MCP servers, Claude Code skills, GitHub  Return: Structured comparison with recommendation")

Older Claude Code docs may call this Task(...); use the current agent/subagent tool name exposed by the active harness.

Search Shortcuts by Category

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 Integration

  • Claude SDK → Context7 for latest docs
  • Prompt management → Check MCP servers
  • Document processing → unstructured, pdfplumber, mammoth

Data & APIs

  • HTTP clients → httpx (Python), ky/undici (Node)
  • Validation → zod (TS), pydantic (Python)
  • Database → Check for MCP servers first

Content & Publishing

  • Markdown processing → remark, unified, markdown-it
  • Image optimization → sharp, imagemin

Integration Points

With planner agent

The planner should invoke researcher before Phase 1 (Architecture Review):

  • Researcher identifies available tools
  • Planner incorporates them into the implementation plan
  • Avoids "reinventing the wheel" in the plan

With architect agent

The architect should consult researcher for:

  • Technology stack decisions
  • Integration pattern discovery
  • Existing reference architectures

With iterative-retrieval skill

Combine for progressive discovery:

  • Cycle 1: Broad search (npm, PyPI, MCP)
  • Cycle 2: Evaluate top candidates in detail
  • Cycle 3: Test compatibility with project constraints

Examples

Example 1: "Add dead link checking"

Need: Check markdown files for broken linksSearch: npm "markdown dead link checker"Found: textlint-rule-no-dead-link (score: 9/10)Action: ADOPT — npm install textlint-rule-no-dead-linkResult: Zero custom code, battle-tested solution

Example 2: "Add HTTP client wrapper"

Need: Resilient HTTP client with retries and timeout handlingSearch: npm "http client retry", PyPI "httpx retry"Found: got (Node) with retry plugin, httpx (Python) with built-in retryAction: ADOPT — use got/httpx directly with retry configResult: Zero custom code, production-proven libraries

Example 3: "Add config file linter"

Need: Validate project config files against a schemaSearch: npm "config linter schema", "json schema validator cli"Found: ajv-cli (score: 8/10)Action: ADOPT + EXTEND — install ajv-cli, write project-specific schemaResult: 1 package + 1 schema file, no custom validation logic

Anti-Patterns

  • Jumping to code: Writing a utility without checking if one exists
  • Ignoring MCP: Not checking if an MCP server already provides the capability
  • Silent skipping: Reporting "nothing found" when a search channel was unavailable
  • Over-customizing: Wrapping a library so heavily it loses its benefits
  • Dependency bloat: Installing a massive package for one small feature

來源與署名

來源:affaan-m/ECC位於skills/search-first提交ef648e0

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架